template.php中的hook_nodeapi
我试图在template.php文件中使用hook_nodeapi来更改面包屑。我尝试过修改“if”语句,但Drupal似乎甚至没有在我的template.php中使用这个钩子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-&
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中的钩子实现被忽略的原因。