Есть нода 'page', которая имеет опционное поле изображения 'banner'. Также эта нода может быть добавлена в очередь (модуль nodequeue). Этот модуль добавляет в $links ноды свои ссылки для добавления текущей ноды в ту или иную очередь. Я хочу скрывать некоторые ссылки для добавления ноды в определённые очереди, если поле 'banner' не содержит картинки - дабы не смущать редактора сайта ненужными линками.
В template.php пишу
<?php
function frontend_links($links, $attributes = array()) {
if (arg(0) == 'node' && is_numeric(arg(1))) {
if (user_access('manipulate queues')) {
$node = node_load(arg(1));
$banner = $node->field_banner['content'];
foreach ($links as $key=>$value) {
$link_item = explode(' ', $key);
if ($link_item[1] == 'nodequeue-toggle-q-1' && !$banner) {
unset($links[$key]);
}
}
}
}
return theme_links($links, $attributes = array('class' => 'links'));
}
?>
Это должно работать, но вот вызов node_load() приводит к тому, что сайт вообще не открывается - просто 404 ошибка. Где грабли?
Кстати, подскажите есть ли другой способ отловить массив $links. Хотел через препроцесс, но там уже поздно - линки идут уже готовой строкой
Комментарии
естесственно. а нафига там дрюкать еще лоад? есть препроцессор в шаблоне то
Ну так, hook_link() и hook_link_alter() заправляют этим, нафиг препроцесс?
hook_link() уже смотрел, не покатило, я так понял ей добавлять линки удобно
А вот hook_link_alter() то что доктор приписал, спасибо