custom.module против template.php

9

Это не очень целевой вопрос, но я не могу найти хорошую информацию по этому вопросу.

Когда считается правильной практикой помещать код в файл template.php, а когда внедрять его в модуль?

Я имею в виду в моем текущем примере мне нужно вызвать hook_preprocess_node и внутри выполнить drupal_get_form и визуализировать эту форму. Я поместил свою логику в template.php.

Это верно? Если нет, можете ли вы дать мне краткий список DOS и DONTS по этой проблеме?

magtak
источник
1
если он слишком сложный, я помещаю его в модуль, если он содержит несколько строк кода, я помещаю его в template.php. Тогда это также зависит от использования, если это для одной темы (template.php) или для разных тем (модуль). Тебе решать.
Тайлер Дерден

Ответы:

9

Есть две вещи, которые я стараюсь учитывать при принятии этого решения.

Это функциональная или чисто визуальная функция? Функциональные компоненты входят в модули. Чисто визуальные идут в тему.

Что произойдет, если я изменю или радикально изменит тему в будущем и / или разрешу использовать несколько тем для моего сайта? Если вы не хотите копировать функцию, она должна быть в модуле.

Drupal позволяет легко переплетать контент, бизнес-логику и презентацию. Для долгосрочной поддержки сайта, вам нужно быть осторожным при реализации.

Хорошее эмпирическое правило состоит в том , что тема не должно знать об идентификаторах ( $nid, $uid, $tid, и т.д.) для чего - либо, и должна только знать имена компьютеров , чтобы изменить внешний вид.

В вашем случае добавление формы к узлу является функциональным изменением, и я бы действительно поместил это в модуль.

mpdonadio
источник