template.php中的hook_nodeapi

dec*_*dev 2 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);
  }
}
Run Code Online (Sandbox Code Playgroud)

我从Drupal中找到了这个函数(并对其进行了一些修改):分层分类学面包屑跟踪

Sco*_*nen 6

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

name = Module Name
description = A module to set breadcrumbs on a product.
core = 6.x
Run Code Online (Sandbox Code Playgroud)

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