Здравствуйте, уважаемые друпальщики! С Друпал имею дело совсем недавно, не судите строго если задал глупый вопрос. Есть задача: нужно присваивать HTML-обьекту из page.tpl.php определенный CSS-класс в зависимости от того, к какому словарю принадлежит открытая в данный момент нода. Как мне получить ID словаря открытой ноды в page.tpl.php? Это возможно?
Комментарии
попробуйте сделать <?php echo "
"; ?> - там и увидете(удобнее krumo юзать конечно - в модуль devel в папку krumo распоковать модуль krumo(с оф сайта друпала) . После его включения появится блок. В коде писать вроде krumo_add($node) - всё выведится в блоке(незабыть ему регион указать))
может термину?
$tid = 8; // id термина
if (isset($vars['node'])) {
$node = $vars['node'];
if (!empty($node->taxonomy)) {
$term_ids = array_keys($node->taxonomy);
if (in_array($tid, $term_ids)) {
$vars['my_super_id'] = 'wow'; // потом в page.tpl можно вывести переменную $my_super_id;
}
}
}
}
To penexe
В том то и дело,что именно словарю. Я понимаю, что нужно как-то эту переменную где-то обьявить, но знаний пока просто нехватает (новичек в друпале). Есть какое-нибудь готовое решение, чтоб можно было получить id словаря открытой ноды или NULL, если открытая нода не относится ни к одному из них? Буду благодарен за любую помощь.
словари зависят от типа нод, смотришь тип и присваиваешь класс.
то есть в моем коде условие должно быть
if ($node->type == 'page') {}
То monsterofcode и penexe :
Огромное спасибо! Нашлось что искал. Всё заработало!
Вот id словаря ноды:
$node->vid
я вас разочарую, но это номер ревизии ноды, не id словаря
да.. я уже увидел...
у вас несколько словарей у ноды, так? вы задаете некоторые из них, когда создаете ноду и надо вывести класс если нода принадлежит некоторым словарям? или только какому-то одному?
всё равно не совсем понял.. в массиве переменных $node какая-то дает id словаря?
Каждая нода принадлежит только к одному термину одного из словарей. Нужно присвоить класс в зависимости от словаря,к которому она принадлежит.
Грубо говоря - если пользователь читает любую страницу/заметку в пределах этого словаря - назначается нужный класс.
у вас что кол-во нод = кол-ву словарей? бред какой-то
нет-нет.. Я не это имел ввиду.. 9 словарей, в каждом словаре порядка 10-12 терминов. И около 800 страниц/заметок. Каждая страница/заметка относится к одному термину одного словаря. Других связей нет (так задумана иерархия заказчиком). При этом внешний вид page.tpl.php меняется в зависимости от принадлежности ноды к словарю. Поэтому мне нужно получить id словаря,которому принадлежит нода. Это вся задача.
if (isset($vars['node'])) {
$node = $vars['node'];
if (!empty($node->taxonomy)) {
$keys = array_keys($node->taxonomy);
$vars['vid'] = $node->taxonomy[$keys[0]]->vid; // в page.tpl будет $vid
}
}
}
Вот теперь точно все заработало! Спасибище!!