Why can not Drupal find my theme for a custom block? I read this answer, but I can not figure out, why my block is not shown. My block is activated in footer and should appear on &lt;front&gt;. 

/**
 * Implements hook_theme().
 */
function poll_dialog_theme() {
  return array(
    'poll_dialog_output' =&gt; array(
      'variables' =&gt; array(
        'title' =&gt; NULL,
        'content' =&gt; NULL,
        'popular_content' =&gt; NULL,
      ),
      'template' =&gt; 'theme/poll_dialog',
    ),
  );
}

function poll_dialog_block_info() {
  $blocks['poll_dialog'] = array(
    'info' =&gt; t('Poll Dialog'),
    'cache' =&gt; DRUPAL_NO_CACHE, //there are a number of caching options for this
  );

  return $blocks;
}

/**
 * Implements hook_block_view().
 */
function poll_dialog_block_view($delta = '') {
  switch ($delta) {
    case 'poll_dialog':
      $block['subject'] = t('poll_dialog');
      $block['content'] = _poll_dialog_block_content();
      break;
  }
  return $block;
}

/**
 * Callback implemented by hook_block_view().
 */
function _poll_dialog_block_content() {
  $static_title = t('Static Title');
  $static_content = 'static content';

  return theme('poll_dialog', array(
      'title' =&gt; $static_title,
      'content' =&gt; $static_content,
      'link' =&gt; l('Poll', 'some url'), array('attributes' =&gt; array('target' =&gt; '_blank'))),
    )
  );
}
You're calling a non-existent theme function. Your code should be:

return theme('poll_dialog_output', array(
    'title' =&gt; $static_title,
    'content' =&gt; $static_content,
    'link' =&gt; l('Poll', 'some url'), array('attributes' =&gt; array('target' =&gt; '_blank'))),
  )
);


or, even better:

return array(
  '#theme' =&gt; 'poll_dialog_output',
  '#title' =&gt; $static_title,
  '#content' =&gt; $static_content,
  '#link' =&gt; l('Poll', 'some url'), array('attributes' =&gt; array('target' =&gt; '_blank'))),
);


The main point is that the name of the theme function you call needs to match what you've used in hook_theme().