【问题标题】:hook_theme() does not pass argumentshook_theme() 不传递参数
【发布时间】:2010-10-18 11:05:12
【问题描述】:

我目前正在编写一个生成块的模块。输出应由模板定义。没什么特别的,但参数似乎没有正确传递。

这是主题方法:

/* # Theme {{{*/
function browse_by_taxonomy_theme() {
  return array(
    'browse_by_taxonomy_block' => array(
      'template' => 'browse_by_taxonomy_block',
      'arguments' => array(
        'next' => null,
        'previous' => null,
        'term' => null,
        'hide_if_null' => variable_get('browse_by_taxonomy_hide_links', false)
      )
    )
  );
}/*}}}*/

它是这样称呼的:

$block['content'] = theme('browse_by_taxonomy_block', "next", "previous", $tid);

即使我把它降到最低,它也不起作用:

function browse_by_taxonomy_block($op = 'list', $delta = 0, $edit = array()) {  
  switch ($op) {
    case 'list':
      $block = array(array('info' => t("Browse by taxonomy")));
      return $block;

    case 'view':
      # […] Dragons be here
      return array(
        'subject' => null, 
        'content' => theme('browse_by_taxonomy_block', "next", "previous", "p")
      );
  }
}/*}}}*/

但在我的模板中一切都是null

var_dump($previous); # => NULL
var_dump($next); # => NULL
var_dump($hide_if_null); # => NULL
var_dump($term); # => NULL

在我写的另一个模块中,我以几乎相同的方式进行了操作,并且可以正常工作。这次我做错了什么?

【问题讨论】:

  • 它必须来自模块中的其他东西,因为这看起来不错,应该可以工作。
  • 变量是用get_defined_vars()定义的吗?
  • @wildpeaks 即使是我的所有魔法都被剥离的缩小版也不起作用。
  • @googletorp 不,我的论点都不在 get_defined_vars();
  • @Nils,我最好的猜测是它与缓存相关,因为代码看起来不错。您是否尝试过清除缓存?

标签: drupal drupal-6 drupal-modules


【解决方案1】:

问题很可能是由缓存问题引起的,因为 Drupal 出于性能原因缓存了所有主题信息。

【讨论】:

    【解决方案2】:

    在这种情况下,缓存是魔鬼,我的朋友...只需刷新您的主题,它很可能会起作用。至少在我的情况下就是这样,经过漫长而漫长的搜索,充满了许多诅咒和咒骂,我终于尝试了,并且宾果游戏......

    【讨论】:

      猜你喜欢
      • 2016-03-10
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 2018-09-11
      • 2016-04-03
      • 2015-10-18
      相关资源
      最近更新 更多