Can regions be printed within a node template?
You can print regions inside any template, but they aren't available out of the box in the node.tpl.php template. To make them available, you'll create a new variable for use in your node.tpl.php template that'll contain all the region content.

Creating new template variables is done by using a preprocess function. In your theme's template.php file, create a function that looks like this:

function mytheme_preprocess_node(&amp;$variables) {
}


Replacing mytheme with your theme's short name. Now, in order for Drupal to recognize this new preprocess function, you need to rebuild your site's theme registry. This is as straightforward as going to Configuration &rarr; Development &rarr; Performance and pressing the "Clear all caches" button at the top.

Now, the way preprocess functions work is that $variables contains an array that corresponds to your template's available variables. For example, in node.tpl.php, $submitted contains the author byline. In the preprocess function above, it's found in $variables['submitted'].

To mimick what you have in page.tpl.php, where you have an array called $page that contains all the regions, you'd want to populate $variables['page'].

The problem is that $page in node.tpl.php is already populated with a true/false value that lets you know whether you're looking at the node by itself or in a listing.

So to avoid that name collision, populate $region instead:

function mytheme_preprocess_node(&amp;$variables) {

  // Get a list of all the regions for this theme
  foreach (system_region_list($GLOBALS['theme']) as $region_key =&gt; $region_name) {

    // Get the content for each region and add it to the $region variable
    if ($blocks = block_get_blocks_by_region($region_key)) {
      $variables['region'][$region_key] = $blocks;
    }
    else {
      $variables['region'][$region_key] = array();
    }
  }
}


Then, in your theme's node.tpl.php template, you can render any region by doing the following:

&lt;?php print render($region['sidebar_first']); ?&gt;


Where sidebar_first is the name of the region you want to render.