Иногда при темизации сайта нужно реализовать "модульный" хук, например, hook_menu_alter.
Делать ради одной функции отдельный модуль ломает, хотелось бы его реализовать непосредственно в кастомной теме, но ВОТ КАК? Я что-то не могу придумать и ничего найти по этому поводу в гугле. Это вообще, принципиально возможно?
Комментарии
нет
Потеря производительности?
Да не, скорее организационно, не хочется плодить дополнительных файлов и директорий.
Раз это нужно только для одного сайта и именно для создания темы, то и хотелось, чтобы это все жило в одном месте в themes.
У кого как, а у меня всегда возникает необходимость писать модуль проекта, в который и складываются всяческие форм альтеры, меню альтеры и т.д.
Всем спасибо за ответы! На самом деле в голове прояснилось насчет этой темы.
Если бы немного подумал, то и сам догнал, что модульных хуков в теме быть не должно по друпальной идеологии. Но сильно хотелось извернуться.
OK. Дальше делаю все правильно. Параллельно теме создаю соответствующий модуль для "тяжелого" кода.
Главное не называть модуль и тему одним именем, иногда чревато последствиями.
Своевременно предупредил, спасибо. На вскидку пришел в голову только конфликт имен в hook_theme, но собственно этого уже хватит за глаза. ))
Как определить, какие хуки модульные, а какие нет?
не модульных хуков не бывает
есть хуки, которые можно вызвать не в модуле, а в теме. например, hook_theme. в 7-ом друпале alter-хуки тоже можно там. но по всем хукам я не знаю, хотелось бы какой-то список.
логично предположить, что в темах можно реализовывать всё что влияет на разметку
Ну я бы поспорил...
Я сказал, что в 7-ом друпале alter-хуки можно вызывать в теме... там есть исключения. Например, hook_form_alter можно в теме вызывать, а hook_menu_alter - нет!
Где же логика?
Как минимум, у вас она отсутствует. Система меню относится к внутренней структуре системы, менять её из темы нельзя и чревато. Ещё советую спросить почему hook_schema_alter() в теме не вызывается
hook_form_alter влияет на разметку, hook_menu_alter - нет. вам этого мало?
Ну, ок. Но тогда почему в 6-ом друпале hook_form_alter вызывается только в модуле?
Седьмой друпал они делали года два вроде, логично же что должны появиться какие то небольшие улучшения?