Можно ли реализовать "модульный" хук в template.php?

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

Аватар пользователя v1adimir@drupal.org v1adimir@drupal.org 20 декабря 2010 в 12:27

Иногда при темизации сайта нужно реализовать "модульный" хук, например, hook_menu_alter.

Делать ради одной функции отдельный модуль ломает, хотелось бы его реализовать непосредственно в кастомной теме, но ВОТ КАК? Я что-то не могу придумать и ничего найти по этому поводу в гугле. Это вообще, принципиально возможно?

Комментарии

Аватар пользователя v1adimir@drupal.org v1adimir@drupal.org 20 декабря 2010 в 13:50

RxB wrote:
"<a href="mailto:v1adimir@drupal.org">v1adimir@drupal.org</a>" wrote:
отдельный модуль ломает

Потеря производительности?

Да не, скорее организационно, не хочется плодить дополнительных файлов и директорий.
Раз это нужно только для одного сайта и именно для создания темы, то и хотелось, чтобы это все жило в одном месте в themes.

Аватар пользователя glu2006 glu2006 20 декабря 2010 в 16:53

У кого как, а у меня всегда возникает необходимость писать модуль проекта, в который и складываются всяческие форм альтеры, меню альтеры и т.д.

Аватар пользователя v1adimir@drupal.org v1adimir@drupal.org 20 декабря 2010 в 22:27

Всем спасибо за ответы! На самом деле в голове прояснилось насчет этой темы.

Если бы немного подумал, то и сам догнал, что модульных хуков в теме быть не должно по друпальной идеологии. Но сильно хотелось извернуться.

OK. Дальше делаю все правильно. Параллельно теме создаю соответствующий модуль для "тяжелого" кода.

Аватар пользователя glu2006 glu2006 20 декабря 2010 в 23:24

<a href="mailto:v1adimir@drupal.org">v1adimir@drupal.org</a> wrote:
Параллельно теме создаю соответствующий модуль для "тяжелого" кода.

Главное не называть модуль и тему одним именем, иногда чревато последствиями.

Аватар пользователя v1adimir@drupal.org v1adimir@drupal.org 21 декабря 2010 в 0:24

glu2006 wrote:
<a href="mailto:v1adimir@drupal.org">v1adimir@drupal.org</a> wrote:
Параллельно теме создаю соответствующий модуль для "тяжелого" кода.

Главное не называть модуль и тему одним именем, иногда чревато последствиями.


Своевременно предупредил, спасибо. На вскидку пришел в голову только конфликт имен в hook_theme, но собственно этого уже хватит за глаза. ))

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

есть хуки, которые можно вызвать не в модуле, а в теме. например, hook_theme. в 7-ом друпале alter-хуки тоже можно там. но по всем хукам я не знаю, хотелось бы какой-то список.

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

Ну я бы поспорил...
Я сказал, что в 7-ом друпале alter-хуки можно вызывать в теме... там есть исключения. Например, hook_form_alter можно в теме вызывать, а hook_menu_alter - нет!
Где же логика?

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 23 июля 2012 в 14:03

"Neumann" wrote:
Где же логика?

Как минимум, у вас она отсутствует. Система меню относится к внутренней структуре системы, менять её из темы нельзя и чревато. Ещё советую спросить почему hook_schema_alter() в теме не вызывается

Аватар пользователя natbampo natbampo 24 июля 2012 в 9:57

"Neumann" wrote:

Ну, ок. Но тогда почему в 6-ом друпале hook_form_alter вызывается только в модуле?

Седьмой друпал они делали года два вроде, логично же что должны появиться какие то небольшие улучшения? Smile