Замена метода load Хука hook_nodeapi в Drupal7

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

Аватар пользователя xakudu xakudu 23 декабря 2012 в 20:13

В Drupal 6 была удобный хук "hook_nodeapi", в котором через метод 'load' можно было удобно проделать предварительные изменения на этапе загрузки.

То есть проблема такова: как изменить в Drupal 7 ноду на этапе загрузки, что бы она отобразилась уже с учетом изменений?
Нужен аналог для Drupal 7, в котором можно было бы изменить поля.
C hook_node_view не прокатывает - ноду меняешь, а её отображение не меняется.

Комментарии

Аватар пользователя sas@drupal.org sas@drupal.org 23 декабря 2012 в 22:03

"xakudu" wrote:
hook_node_view не прокатывает - ноду меняешь, а её отображение не меняется.

Наверно Вы что-то не так делаете используя его часто , ( ->content ...),
Также можно использовать _node_view_alter( он следует за первым.
Осталься вообщем то и hook_node_load
См. node.api.php

* - hook_node_view() (all)
* - hook_entity_view() (all)
* - hook_node_view_alter() (all)
* - hook_entity_view_alter() (all)

Аватар пользователя xakudu xakudu 23 декабря 2012 в 23:06

"<a href="mailto:sas@drupal.org">sas@drupal.org</a>" wrote:
Наверно Вы что-то не так делаете используя его часто , ( ->content ...),
Также можно использовать _node_view_alter( он следует за первым.

Нет, не смог. Никак невозможно в этих хуках изменить отображение. У меня не вышло.
"<a href="mailto:sas@drupal.org">sas@drupal.org</a>" wrote:
Осталься вообщем то и hook_node_load

Там проблема в том, что внутри hook_node_load нельзя загрузить другие ноды стандартным hook_node_load_multiple - зависает. В этом была засада - рекурсия там.

Аватар пользователя sas@drupal.org sas@drupal.org 24 декабря 2012 в 13:25

xakudu wrote:
"<a href="mailto:sas@drupal.org">sas@drupal.org</a>" wrote:
Наверно Вы что-то не так делаете используя его часто , ( ->content ...),
Также можно использовать _node_view_alter( он следует за первым.

Нет, не смог. Никак невозможно в этих хуках изменить отображение. У меня не вышло.
"<a href="mailto:sas@drupal.org">sas@drupal.org</a>" wrote:
Осталься вообщем то и hook_node_load

Там проблема в том, что внутри hook_node_load нельзя загрузить другие ноды стандартным hook_node_load_multiple - зависает. В этом была засада - рекурсия там.

Код в студию ?!

Аватар пользователя xakudu xakudu 24 декабря 2012 в 15:51

"<a href="mailto:sas@drupal.org">sas@drupal.org</a>" wrote:
Код в студию ?!

Да я в итоге через отдельные node_load сделал, что было несколько неудобно.
Вы просто попробуйте в этом хуке вызвать node_load_multiple - сразу завис. С этим и боролся, пока не разобрался, что к чему. В hook_node_view вообще бесполезняк, можете попробовать.
Вообще это ОЧЕНЬ ПЛОХО, что хук вызывает по умолчанию сам себя. Подобного бреда в 6-ке не было, nodeapi уже не мог ни при каких обстоятельствах вызваться из самого себя. В общем тут бреда навертели в 7-ке ИМХО.

Аватар пользователя xakudu xakudu 24 декабря 2012 в 19:08

"<a href="mailto:sas@drupal.org">sas@drupal.org</a>" wrote:
Учитесь слушать и читать - он рабочий полостью.

Приведите пожалуйста рабочий код, с помощью которого можно менять выводимые данные в данном хуке. Конкретно - прикрепленные файлы. Я вот пробовал - у меня не вышло.

Аватар пользователя sas@drupal.org sas@drupal.org 24 декабря 2012 в 19:28

"xakudu" wrote:
Приведите пожалуйста рабочий код

Зачем ? У меня работает - это у Вас не работает -вот Вы и публикуйте, если хотите чтобы Вам помогли.

Аватар пользователя xakudu xakudu 24 декабря 2012 в 19:41

Да я уже сделал давно через hook_node_load, вы что. У нас спор уже пошел теоретический. Я не смог изменить через views