Я не могу переопределить функцию с помощью template.php - PullRequest
1 голос
/ 18 августа 2011

Я пытаюсь изменить ссылки на комментарии в своем выводе на Drupal, и я думаю, что нашел функцию, на которую хочу влиять, а именно function comment_node_view($node, $view_mode).

Он находится в модуле комментариев. Проблема в том, что я не могу повлиять на это, когда я пытаюсь переопределить это, поместив его в мой файл Template.php и добавив свою theme_ к имени функции? В моем template.php теперь это выглядит так:

function themename_comment_node_view($node, $view_mode)

если я снимаю themename_, это вызывает ошибку, говорящую, что я не могу повторно объявить это. Я могу скопировать модуль комментариев и отредактировать его напрямую, но я подумал, что это как-то тема?

Ответы [ 2 ]

2 голосов
/ 20 августа 2011

Темы Drupal могут реализовывать только функции тем (которые включают в себя препроцесс шаблона и функции процесса) или alter hooks .

comment_node_view () - это ловушка, но это не ловушка alter (иначе имя ловушки заканчивается на «_alter»).

Почему темы не могут реализовать hook_node_view()?

Поскольку hook_node_view() вызывается в comment_build_comment () с использованием следующего кода:

  // Allow modules to make their own additions to the comment.
  module_invoke_all('comment_view', $comment, $view_mode, $langcode);
  module_invoke_all('entity_view', $comment, 'comment', $view_mode, $langcode);

Как также отмечено в комментарии, module_invoke_all () вызывает хуки, реализованные в модулях, а не в темах.

Если вы хотите изменить способ отображения комментария из темы, вам следует создать файл шаблона comment.tpl.php для вашей темы.

0 голосов
/ 18 августа 2011

Интервал имени - «hook_node_view», поэтому вам нужно заменить «комментарий» (интервал имен, используемый модулем комментариев) на имя вашей темы:

function mytheme_node_view($node, $view_node)

Крючки:
http://api.drupal.org/api/drupal/includes--module.inc/group/hooks/7

hook_node_view:
http://api.drupal.org/api/drupal/modules--node--node.api.php/function/hook_node_view/7

Надеюсь, это поможет:)

...