custom.module vs template.php

9

To nie jest zbyt ukierunkowane pytanie, ale nie mogę znaleźć żadnych dobrych informacji na ten temat.

Kiedy uważa się za prawidłową praktykę umieszczanie kodu w pliku template.php, a kiedy zaimplementować go w module?

Mam na myśli w moim obecnym przykładzie, że muszę wywołać hook_preprocess_node i wewnątrz wykonać drupal_get_form i renderować ten formularz. Umieściłem moją logikę w pliku template.php.

Czy to jest poprawne? Jeśli nie, czy możesz podać mi krótką listę DOS i DONTS dotyczących problemu?

magtak
źródło
1
jeśli jest zbyt skomplikowany, umieszczam go w module, jeśli jest kilka wierszy kodu, umieszczam go w template.php. Wtedy zależy to również od użycia, czy dotyczy jednego motywu (template.php) czy różnych motywów (modułu). To zależy od Ciebie.
Tyler Durden,

Odpowiedzi:

9

Przy podejmowaniu tej decyzji staram się pamiętać o dwóch rzeczach.

Czy jest to funkcja funkcjonalna czy czysto wizualna? Komponenty funkcjonalne wchodzą w moduły. Te czysto wizualne są tematem.

Co się stanie, jeśli zmienię lub radykalnie zmienię motyw w dalszej części drogi i / lub zezwolę na wiele motywów dla mojej witryny? Jeśli nie chcesz replikować funkcji, powinna ona przejść do modułu.

Drupal ułatwia przeplatanie treści, logiki biznesowej i prezentacji. Aby zapewnić długoterminową łatwość konserwacji witryny, naprawdę musisz zachować ostrożność podczas implementacji.

Dobrą zasadą jest, że motyw nie powinien wiedzieć o identyfikatorach ( $nid, $uid, $tid, etc) do niczego, a powinno jedynie znać nazwy komputerów, aby zmienić wygląd wizualny.

W twoim przypadku dodanie formularza do węzła jest zmianą funkcjonalną i naprawdę umieściłbym to w module.

mpdonadio
źródło