template.php中的hook_nodeapi

时间:2010-10-16 21:40:47

标签: php drupal

我正在尝试在template.php文件中使用hook_nodeapi来改变面包屑。我试过改变'if'语句,但似乎Drupal甚至没有在我的template.php中使用这个钩子。

function gh_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  $productNodeType = 'product';
  $tid = preg_replace('#[^\d+]#i', '', $_GET['bc']);
  if ($node->type==$productNodeType && $op=='view' && $tid) {
    $breadcrumb[] = l(t('Home'), NULL);
    if ($parents = taxonomy_get_parents_all($tid)) {
      $parents = array_reverse($parents);
      foreach ($parents as $p) {
        $breadcrumb[] = l($p->name, 'taxonomy/term/'. $p->tid);
      }
    }
    drupal_set_breadcrumb($breadcrumb);
  }
}

我从Drupal: Hierarchical taxonomical breadcrumb trail

找到了这个功能(并对其进行了一些修改)

1 个答案:

答案 0 :(得分:6)

钩子函数放在模块中,而不是主题,所以这就是你的函数没有被调用的原因。在快速浏览时,如果将其移动到模块,它看起来应该可以正常工作。为此,请在sites / all / modules中创建一个具有唯一模块名称的文件夹,例如“modulename”,创建一个名为modulename.info的文件,如下所示:

name = Module Name
description = A module to set breadcrumbs on a product.
core = 6.x

然后创建一个名为modulename.module的文件,以<?php开头,然后创建您的函数。启用该模块,它应该开始工作。