J'ai créé un module de fonctionnalités contenant uniquement une vue et un type de contenu.
À l'heure actuelle page-node-x.tpl.php
, mes views-view-y.tpl.php
fichiers et moi se trouvent dans mon répertoire de thèmes.
Est-il possible de les déplacer dans mon module de fonctionnalités?
Pour les vues, il existe en théorie un mécanisme pour les modèles de vues (peut-être que cela fonctionne pour tous les modèles).
Vous pouvez définir la clé "chemin du modèle" dans votre implémentation hook_views_api de votre module personnalisé.
Une fois que vous disposez de ces vues, le fichier spécifié sera analysé pour les fichiers de modèle. Malheureusement, le test le plus simple échoue actuellement, donc cette fonctionnalité n'est probablement pas encore portée sur drupal7, mais si quelqu'un veut y entrer, consultez _views_find_module_templates () dans views.module.
la source
La façon la plus simple est d'utiliser
hook_theme_registry_alter()
et d'ajouter simplement le chemin de votre module aux chemins du thème:la source
theme()
implémentation, il ne semble pas que cetheme path
soit un tableau. Êtes-vous sûr que cela fonctionne? Voir api.drupal.org/api/drupal/includes%21theme.inc/function/theme/7theme paths
auparavant dans Drupal 6, mais Drupal 7 a changé ce comportement dans drupal.org/node/678714 Il semble, à partir des commentaires # 29 et # 31 dans le numéro mentionné, que les suggestions de thèmes des modules doivent être déclarées dans le hook_theme de ce module, mais comment le faire est laissé comme un exercice au lecteur: /Que diriez-vous d'une approche légèrement abstraite avec le thème de réaction contextuelle?
http://drupal.org/project/context_reaction_theme
Enveloppez votre contexte dans les fonctionnalités et il est même exportable. Mais c'est peut-être en fait une question de gourou Drupal qui cherche à créer quelque chose de plus profond et à connaître l'itinéraire.
la source
J'ai commencé avec la réponse de googletorp et j'ai construit une fonction générique:
Il permet non seulement d'écraser la position et le nom du nœud et d'afficher les fichiers tpl, mais également de fournir une fonction de prétraitement pour les vues.
Donc, si vous avez appelé votre propre module
mymodule
avec un fichier de modèle,sites/all/modules/mymodule/templates/foo--variant.tpl.php
vous pouvez maintenant facilement modifier le registre des thèmes pour utiliser votre propre répertoire de modèles:la source
Comme l'a dit @jcsio, la réponse acceptée sur cette page fonctionne, mais le modèle ne peut pas être remplacé par un thème.
http://www.metachunk.com/blog/adding-module-path-drupal-7-theme-registry propose une solution qui vous permet d'ajouter le chemin de votre module (et sous-dossiers) à scanner pour toutes sortes des fichiers .tpl.php.
Je l'ai légèrement changé, car il contenait une variable `` chemins de thème '' qui ne semble pas utilisée par Drupal 7.
J'ai essayé à la fois la réponse acceptée et cette solution, cette dernière fonctionne pour moi jusqu'à présent!
la source