Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
template.php中的hook_nodeapi_Php_Drupal - Fatal编程技术网

template.php中的hook_nodeapi

template.php中的hook_nodeapi,php,drupal,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-&

我试图在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);
  }
}

我从

中找到了这个函数(并对其进行了一些修改),钩子函数是以模块形式出现的,而不是以主题形式出现的,所以这就是为什么没有调用函数的原因。快速浏览一下,若你们把它移到模块中,它看起来应该可以正常工作。为此,在sites/all/modules中创建一个具有唯一模块名称的文件夹,例如“modulename”,并创建一个名为modulename.info的文件,如下所示:

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

然后创建一个名为modulename.module的文件,以
开头,感谢您提供的信息。我不知道胡克不能进入主题。我把上面的代码放在一个模块中,使它工作了。再次感谢!我一直在到处寻找我在template.php中的钩子实现被忽略的原因。