Review: Node Level Blocks Drupal Module

The Node-Level Blocks module for Drupal is a much-needed addition that addresses a requirement I get all the time from clients. Clients want to be able to display specific blocks on specific nodes on their sites. Node-Level Blocks is the simplest system I've seen for allowing them to do this.

Standard Drupal Node Visibility FormWhy do we need this module?

Drupal's block system is very powerful when it comes to displaying content in a programmatic way. It's easy to show a certain block when viewing a section of a website or on pages of certain content types. But, I find that most clients don't think this way. They tend to see everything as "page", and because of this they send requests like, "I want this item on the sidebar on this particular page."  While the Blocks administrative interface does allow you to specify individual pages for the block to be displayed,  most clients find this interface baffling. Even after you teach them how to identify which block they want, then you have to explain that they need to copy the Drupal path for the node into the visibility section. This process is further complicated when you start adding stuff like Pathauto, or when the paths get changed. As a result, I generally tell clients to have me manage their block visibility settings. With Node-Level Blocks, no longer!

What does this module do?

It adds a block management widget to the node edit form that allows content editors to choose individual blocks to be displayed on the page view for this node. This widget is configurable per content type. You can limit the blocks and the regions that the content editor can choose from.

Node Level Blocks Configuration Node Level Blocks Content Editor Interface

Node Level Blocks Finished ProductDoes it work?

Yes, for the most part. I tested it out and was able to display blocks on individual nodes in any regions that I wanted. The editor-assigned blocks were combined with the blocks assigned using the standard administrative interface. So, Node-Level Blocks fulfills its promise.

However, there are a few of issues that I found during my testing. First, block titles for manually created blocks are not displayed. Strangely, this seemed to only be a problem for manually created blocks. The title for a Views block that I added showed up fine. Second, the module does not prevent a block from being displayed twice on a page, even in the same region. (This is only possible if it's already been assigned to that region by the standard interface.) There should probably be an option to prevent this from happening. Lastly, you can only limit the available blocks on module-level basis. You cannot specifically allow individual blocks to be assigned. A module like Views can generate a lot of blocks, so it would be nice if there was an option to specify blocks individually. The current release is marked as a beta, and I've submitted issues on these items (here and here), so hopefully they will be fixed before a stable release.