custom.module vs template.php


9

C'est une question pas si ciblée mais je ne trouve pas de bonnes informations à ce sujet.

Quand est-il considéré comme une bonne pratique de mettre du code dans votre fichier template.php et quand l'implémenter dans un module?

Je veux dire dans mon exemple actuel, je dois appeler hook_preprocess_node et à l'intérieur effectuer un drupal_get_form et rendre ce formulaire. J'ai mis ma logique dans template.php.

Est-ce exact? Sinon, pouvez-vous me donner une courte liste de DOS et de DONTS concernant le problème?


1
si c'est trop complexe je le mets dans un module, si c'est quelques lignes de code je le mets dans template.php. Ensuite, cela dépend également de l'utilisation, que ce soit pour un thème (template.php) ou pour différents thèmes (module). C'est à vous.
Tyler Durden

Réponses:


9

Il y a deux choses que j'essaie de garder à l'esprit lorsque je prends cette décision.

S'agit-il d'une fonctionnalité ou d'une fonctionnalité purement visuelle? Les composants fonctionnels vont dans les modules. Des thèmes purement visuels entrent dans le thème.

Que se passe-t-il si je modifie ou change radicalement le thème en cours de route et / ou autorise plusieurs thèmes pour mon site? Si vous ne souhaitez pas répliquer la fonctionnalité, elle doit être intégrée dans un module.

Drupal facilite l'entrelacement du contenu, de la logique métier et de la présentation. Pour la maintenabilité à long terme d'un site, vous devez vraiment être prudent lorsque vous implémentez des choses.

Une bonne règle de base est que le thème ne devrait pas besoin de savoir sur les ID ( $nid, $uid, $tid, etc.) pour quoi que ce soit, et ne devrait besoin de connaître les noms des machines pour modifier l' apparence visuelle.

Dans votre cas, l'ajout d'un formulaire à un nœud est un changement fonctionnel, et je mettrais vraiment cela dans un module.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.