node_load внутри theme_links валит весь сайт. Почему

Главные вкладки

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 26 ноября 2010 в 19:03

Есть нода '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. Хотел через препроцесс, но там уже поздно - линки идут уже готовой строкой

Комментарии

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 27 ноября 2010 в 17:14

"<a href="mailto:shamaner@drupal.org">shamaner@drupal.org</a>" wrote:
есть препроцессор в шаблоне то

"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
Кстати, подскажите есть ли другой способ отловить массив $links. Хотел через препроцесс, но там уже поздно - линки идут уже готовой строкой

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 27 ноября 2010 в 17:54

"RxB" wrote:
hook_link() и hook_link_alter()

hook_link() уже смотрел, не покатило, я так понял ей добавлять линки удобно

А вот hook_link_alter() то что доктор приписал, спасибо