Comment stocker des modèles de vues avec un module au lieu d'un thème

13

J'ai créé plusieurs modèles de vues qui sont actuellement stockés dans mon répertoire de thèmes actifs. Dans, je préférerais que ces modèles soient stockés dans le répertoire de mon module.

Ma question est, comment puis-je apporter ces fichiers de thème (views-view-field.tpl.php par exemple.) Dans mon répertoire de modules et les faire voir par Views?

En regardant les modules Vues, ​​je peux voir que les modèles par défaut sont stockés dans des vues / thèmes, mais je ne vois pas comment il a été mis en œuvre.

Citricguy
la source

Réponses:

29

Cela m'a aussi pris un certain temps pour comprendre. Le code suivant doit être placé dans votre fichier .module (le code suppose que votre module s'appelle "NAME")

/**
* Implements hook_views_api().
*
* Enabling using templates inside module
*/
function NAME_views_api() {
  return array(
    'api' => 3,
    'path' => drupal_get_path('module', 'NAME'),
    'template path' => drupal_get_path('module', 'NAME'),
  );
}

Cela indiquera à Views de chercher dans le répertoire racine de votre module. Personnellement, je suis fan de l'ajout d'un sous-répertoire au module pour contenir les fichiers de modèle. Pour ce faire, ajoutez le nom du répertoire à la fin du chemin du modèle, par exemple:

'template path' => drupal_get_path('module', 'NAME') . '/templates',
Reekan Mantell
la source
Les ajouter à un sous-répertoire est une idée fantastique, nettoie les choses et cela fonctionne parfaitement. Les futurs chercheurs s'assurent de vider votre cache Drupal. Merci @Reekan Mantell
Citricguy
Je vous remercie! Je pirate mon thème administrateur depuis des mois juste pour contourner un champ de vues sur sept. Maintenant, je n'ai plus à le faire.
JM01
Et je dois dire que vous pouvez toujours mettre TPL dans votre thème même si vous avez implémenté ce code. Merci.
anou
2
Cela ne fonctionnera pas avec les modules de fonctionnalités, utilisez plutôt hook_views_api_alter()comme indiqué ici: deeson.co.uk/labs/views-templates-features-module
Aubrey Robertson