Похоже, что в drupal6 taxonomy_node_get_tree () принимает узел, а не nid.
Самый простой способ изменить код:
<?php
$term_id_to_trigger_show_block = 109;
if ((arg(0) == 'node') && is_numeric(arg(1))) {
$node = node_load(arg(1));
$terms = taxonomy_node_get_terms($node);
foreach($terms as $term) {
if ($term->tid == $term_id_to_trigger_show_block) {
return TRUE;
}
}
}
?>
node_load () кэширует узлы в памяти, так что это не будет большим ударом по производительности.
Но подождите!Вы можете уточнить это еще больше ...
menu_get_item () получит загруженный в данный момент пункт меню, когда объект узла загружен, он вызовет taxonomy_node_get_terms ().Таким образом, вы можете упростить до:
<?php
$term_id_to_trigger_show_block = 109;
$object = get_menu_item();
if (isset($object->taxonomy)) {
foreach($object->taxonomy as $term) {
if ($term->tid == $term_id_to_trigger_show_block) {
return TRUE;
}
}
}
?>
Это позволит получить другие типы объектов, у которых есть объект таксономии, что может вызвать некоторую путаницу, если это так, вставьте arg(0) == 'node'
обратно.