Как узнать какие хуки модульные

Аватар пользователя Neumann Neumann 20 июля 2012 в 22:23

Добрый день.

Темизирую форму регистрации как описано здесь.
http://beyrent.net/blog/2011/05/theming-drupal-7-user-registration-form

Все получается. Только я не пойму, почему нужно создавать модуль? Почему нельзя вписать хук mymodule_form_user_register_form_alter в template.php темы? Ведь, например, hook_js_alter пишется там (как mytheme_js_alter).
Как определить какие хуки модульные, а какие нет?

Комментарии

Аватар пользователя Neumann Neumann 20 июля 2012 в 23:34

Ну, по той ссылке создается модуль. Специально для этого.

А можно так?
mytheme_form_user_register_form_alter

У меня не получается.

Аватар пользователя Alexei91 Alexei91 21 июля 2012 в 16:49

Я бы вообще не стал читать такую статью, потому как, что за х* у него в подвале с блоком авторизации. Криво, косо.

Аватар пользователя Neumann Neumann 22 июля 2012 в 3:39

ах вот вы как! Smile

а как объясните это? http://www.drupal.ru/node/54526

Или это в 6-ой было нельзя, а в 7-ой версии появилась возможность? Или что?

upd.

Читал сейчас список важных отличий 7-ки от 6-ой версии.
http://content-management-systems.info/node/212#Alter_hooks_available_to...

40 пункт как раз по теме. Почему-то не переведен.

Quote:
Alter hooks available to themes
(Issue) Hooks that are used to alter content before being displayed on the page are now available to themes. Some important ones to note are:
hook_page_alter
hook_form_alter
hook_js_alter
hook_css_alter
Note that although technically all of the alter hooks are exposed to the theme, only a given number of them will actually work due to the way the Drupal bootstrap works. If you need to use hook_menu_alter, for example, you'll have to use a module. These hooks can be exposed in template.php.

Для тех, у кого туго с анг. тут написано примерно следующее

Quote:
Изменяющие (alter) хуки доступны в темах.
Хуки, которые использовались для изменения контента перед тем, как вывести его на странице, теперь доступны в темах. Самые важные из них:
hook_page_alter
hook_form_alter
hook_js_alter
hook_css_alter
Заметьте, что хотя технически все изменяющие (alter) хуки доступны в темах, только определенно число из них действительно работает таким образом. К примеру, если вам нужно использовать hook_menu_alter, вам следует использовать модуль. Эти (видимо, те, которые действительно можно в темах) могут быть вызваны в template.php
(В скобках мои примечания)

Отсюда я как новичок в друпале делаю следующие выводы:
1. В 6-ом Друпале все хуки можно вызывать только в модулях.
2. В 7-ом Друпале alter-хуки можно вызывать не только в модулях, но и в темах, да и то не все.

Аватар пользователя Neumann Neumann 22 июля 2012 в 13:44

Хотя ведь hook_theme и в 6, и в 7 может вызываться в template.php

Все-таки не пойму, как я должен определять, какие хуки я могу вызвать только в модуле, а какие могу прописать в template.php. Гуглил, но нигде не нашел информацию. Какой-нибудь список хуков, в котором написано, этот хук может вызываться только в модуле, этот в теме.

Аватар пользователя Andruxa Andruxa 22 июля 2012 в 14:35

вот я удивляюсь
у вас предполагается 100500 различных хуков?

не проще ли и быстрее добавить в template.php требуемый хук, сбросить кеш тем и посмотреть - работает или нет, вместо того, чтобы флеймить тут?

в общем случае - хуки, модифицирующие представление контента, должны использоваться в темизации, а хуки, модифицирующие сам контент и/или логику работы CMS - в модулях

Аватар пользователя Neumann Neumann 22 июля 2012 в 17:01

Andruxa wrote:
вот я удивляюсь
у вас предполагается 100500 различных хуков?

не проще ли и быстрее добавить в template.php требуемый хук, сбросить кеш тем и посмотреть - работает или нет, вместо того, чтобы флеймить тут?

в общем случае - хуки, модифицирующие представление контента, должны использоваться в темизации, а хуки, модифицирующие сам контент и/или логику работы CMS - в модулях


Да, но не столько проще, сколько быстрее. Было бы удобнее, если бы был такой список. Странно, что его нет не только в рунете, но и во всем Интернете. Такое большое сообщество и такая часто используемая штука.

natbampo wrote:
"Neumann" wrote:
А можно так?
mytheme_form_user_register_form_alter

У меня не получается.

специально проверил у себя - работает ...


Да, я уже писал. Alter-хуки работают в template.php в 7-ой версии. Я тогда просто кеш не сбросил.

Аватар пользователя natbampo natbampo 22 июля 2012 в 15:31

"Neumann" wrote:
А можно так?
mytheme_form_user_register_form_alter

У меня не получается.

специально проверил у себя - работает ...

Аватар пользователя natbampo natbampo 22 июля 2012 в 17:10

"Neumann" wrote:
Я тогда просто кеш не сбросил.

для хуков из template.php кеш сбрасывать не надо, что то другое у тебя было.