Есть в модуле ubercart вот такая функция:
<?php/**
* Implementation of hook_view().
*/
function uc_product_kit_view($node, $teaser = 0, $page = 0)?>
хочется её правильно переопределить в template.php своей темы, а не в самом стороннем модуле... Знаю что это правильно, а как правильно переопределить не знаю...?
Нашел вот что Тема реестра для особых случаев , только не знаю как применить и то ли это?
Комментарии
хуки прописываются в файлах модуля а не шаблонизаторе
http://api.drupal.ru/api/group/hooks/6
[deleted]
Не... Так нельзя. Или я чего-то не знаю?..
Короче,
uc_product_kit_view
- этоhook_view
, т.е. друпаловский хук.Используйте хук
hook_nodeapi
- он срабатывает после выполненияhook_view
.Т.е. в своем модуле пишем:
switch ($op) {
case 'view':
// Тут пишете свои модификации хука
break;
}
}
Если это можно сделать по-другому, то подправьте меня кто-нибудь...
На api.drupal.ru есть примеры модулей для изучения Drupal API. Изучайте.
Это Вы кому?
Меня интересует только один вопрос: тот вариант насчет хука hook_nodeapi, который я написал выше - он единственный, или есть более оптимальное решение?
Не вам. Это ТС.
Еще можно в hook_preprocess_node, этот хук кажись даже не документирован. И в template.php через ENGINE_preprocess_node или THEME_preprocess_node. Как удобно.
Для ТС: переопределить указанную вами функцию не получится, можно только подправить переменные в функциях препроцессинга чего обычно хватает. Учите API одним словом, без этого тяжело.
Эти варианты я не рассматривал, ибо они не являются более оптимальным решением, чем hook_nodeapi...
Sinkora тот вариант, который вы описали с nodeapi самый кашерный. Что-то другое тоже в голову не приходит, ибо зачем делать по другому если для этого есть специальный хук.
А можно ли в hook_nodeapi поменять какую-либо переменную шаблона node.tpl.php, как это делается в препроцессинге?
Ну, в хук hook_nodeapi объект $node передается по ссылке - т.е все изменения на уровне объекта ноды. А переменные шаблона в нем не поменяешь.
Сигнатура hook_nodeapi это подтверждает:
Ну получается что кому как удобнее. Да и от случая зависит, вероятно иногда приходится импользовать оба хука.
Огромное спасибо Всем!