Block is not showing up in a custom taxonomy page template
A page.tpl.php template file doesn't get blocks to render; it gets the theme regions to render, which by default are the following ones:


$page['help']: Dynamic help text, mostly for admin pages
$page['highlighted']: Items for the highlighted content region
$page['content']: The main content of the current page
$page['sidebar_first']: Items for the first sidebar
$page['sidebar_second']: Items for the second sidebar
$page['header']: Items for the header region
$page['footer']: Items for the footer region


Themes can define other regions as well. 

When you want to show a blocks that has been associated to the "highlighted" region, the page template file needs to contain the following code (or similar).

&lt;?php if ($page['highlighted']): ?&gt;&lt;div id="highlighted"&gt;&lt;?php print render($page['highlighted']); ?&gt;&lt;/div&gt;&lt;?php endif; ?&gt;


Without that code, a block that should visible in the "highlighted" region would not be visible.

In a taxonomy term template file, you need to get the block content using code similar to the following one.

  global $theme_key;

  $query = db_select('block', 'b');
  $block = $query
    -&gt;fields('b')
    -&gt;condition('b.theme', $theme_key)
    -&gt;condition('b.status', 1)
    -&gt;condition('b.delta', $delta)
    -&gt;condition('b.module', $module)
    -&gt;orderBy('b.region')
    -&gt;orderBy('b.weight')
    -&gt;orderBy('b.module')
    -&gt;addTag('block_load')
    -&gt;addTag('translatable')
    -&gt;execute()
    -&gt;fetchObject();

  if ($block) {
    $array = module_invoke($block-&gt;module, 'block_view', $block-&gt;delta);
    drupal_alter(array('block_view', "block_view_{$block-&gt;module}_{$block-&gt;delta}"), $array, $block);

    if (isset($array) &amp;&amp; is_array($array)) {
      foreach ($array as $k =&gt; $v) {
        $block-&gt;$k = $v;
      }
    }

    if (isset($block-&gt;content) &amp;&amp; $block-&gt;content) {
      // Normalize to the drupal_render() structure.
      if (is_string($block-&gt;content)) {
        $block-&gt;content = array('#markup' =&gt; $block-&gt;content);
      }

      print render($block-&gt;content);
    }
  }


You need to know the module implementing the block, and the delta used for that block. It is better to put the code in the preprocess function to set a variable that is then rendered in the template file. As usual, the logic code should be in the template.php file of the theme, or in the module file, and the rendering code in the template file. (Don't confuse the template.php file with the template file.)

Instead of executing that code, it is easier to assign the block you want to show in the taxonomy term page to taxonomy term pages. In the settings page for the block (admin/structure/block/manage/&lt;block id&gt;/form/configure) select Only the listed pages, and in the textarea enter:


  taxonomy/term
  taxonomy/term/*