I have text on my site that isn't node content, such as:

  • footer legal text
  • "Subscribe to our newsletter"
  • "Browse our categories"
  • etc.

I need to save my development work as a Feature but I also need content editors to be able to edit the text. But I don't want to give them permission to edit all blocks. In the not too distant future, the site will be extended to another region so this content will also need to be translated.

Is there a technique / solution designed for housing this data?

I could create a new content type and create a new field for each piece of text. I could easily print the field in TPL files but it might be a little harder to print it in blocks. I also don't know if its performance inefficient to do this, does the whole node object get loaded when you print a single field?

I've heard about (but not used) the Nodeblock module. It looks like this would work but I don't know how easy it will be to work with the Features module (I don't think you can feature nodes).

One nice thing about the first method is that the field label could be descriptive eg "Footer legal text" which would make the translation side of things easier.

closed as off-topic by kiamlaluno Jan 23 '16 at 17:44

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking to recommend or find a book, tool, module, theme, distribution, tutorial, or other off-site resource are off-topic for Drupal Answers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – kiamlaluno
If this question can be reworded to fit the rules in the help center, please edit the question.

  • Is there a reason you can't trust your users, or a sub-set of users? Why not create a role, like 'ui admin' with permission to edit blocks, and give that role to a limited number of people? – RoloDMonkey May 8 '15 at 15:59
up vote 6 down vote accepted
+50

Consider using the Bean module for this. Here is a quote about its project page:

Think of a Bean as a method to provide new types (compared to node this would be a content type) which then provides an add content interface to create as many blocks as you require (see screenshot below). The bean content can then be placed around the site just like any other block.

If you'd grant content editors the appropriate Bean permissions, it appears to me that you might be close to a possible solution to what you're looking for.

The video tutorial Drupal Bean module tutorial - using Bean Admin UI provides a great introduction to really understand the power of this module, and the kind of things you can do with it (by only using site building techniques, no custom coding involved). It also shows how the Bean module transforms Drupal blocks into fieldable entities.

PS: This module only started as of D7, and is already integrated in core in D8 ...

  • 2
    Agreed. Bean would certainly be suitable for what you're describing. Plus it has the advantage of being Feature-able with the UUID and UUID Features Integration modules. – welly May 13 '15 at 0:26

You can make custom block (structure > blocks > add block), or you can make a new custom menu (structure > menus > add menu) and keep it in the region your want to by navigating to (structure > blocks).

You can also make new regions if you doesnt want to use exixsting regions and print your content somewhere else and assign their display location by printing in .tpl file. and then allocate menu/block to it

Printing block

To create custom regions, visit: https://www.drupal.org/node/1088718#comment-4194802 How do I create custom regions in a theme?

  • Printing block code: <?php $block = module_invoke('module_name', 'block_view','block_delta'); print render($block['content']); ?> – Chetna Negi May 5 '15 at 9:17
  • I think you've misunderstood my question. This isnt what I was asking about. – Evans May 5 '15 at 9:35
  • @jdln I read your question the same as Chetna, and would have recommended the same - if that is not your question, then you need to reword it – Geoff May 5 '15 at 15:27
  • I'm guessing he's understood it, at least same as me. "Browse" and "Subscribe" sound like "Menu items" to me. And Legal/Footer text can be done with just a simple custom block or even nodeblocks. – Beebee May 5 '15 at 16:38
  • Ive updated my question. Im talking out lots of bits of text that appear all over the site. I need to use Features to save this work (my local database will never be live). – Evans May 6 '15 at 8:23

I am suggesting to create one block.have you tried with the same.? Like, in block's body, just put the html of whatever you want to put throughout the site. and enable this block in footer or header which will be available through your site. I guess this will solve your problem.

  • I cant give content editors the ability to edit this content without editing all blocks. – Evans May 6 '15 at 8:31
  • Then try to put custom links. add it by custom modules in specfic region. This is the way which can fulfilled your conditions. You can also give permission to that particular created link. – Viraj_T May 6 '15 at 8:41

From what I get you need to grant some privileges to a specific block not all of them to some users or rolls.

To do so I recommend you to use block_access module.

This module adds a set of global permissions for creating, viewing, moving, enabling, disabling and configuring blocks as well as permissions at the individual block level. These permissions only affect the admin interface, front-end view access is handled in core.

You also need to check the Patch against block_access-7.x-1.x to allow configuration of access settings per block. more discussion of this module is in How to use Block Access with specific Block?

It sounds like you may have some Views titles you also want to manage. You can open up the Views title as a basic setting that site content managers can edit with this module: https://www.drupal.org/project/views_ui_basic

The NodeBlock module is very easy to use and easy to implement. So, content editor can easily edit the block same way as any other page.

You can apply Nodeblock in you content type which you wanted to make it as a block like showing in a picture.

NodeBlock Setting in Content Type

NodeBlock Setting in COntent Type


NodeBlock in a page

NodeBlock in a page

If you want to give editing access for just one page then you can use "Nodeaccess" module.

Not the answer you're looking for? Browse other questions tagged or ask your own question.