Template dans le dossier du module......

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

J'ai conçu un module qui crée des contenus personnalisés. Pour ces contenus j'ai créé des templates
node-projet.tpl.php
node-action.tpl.php
etc....

ces templates fonctionnent parfaitement lorsqu'ils sont dans le dossier du thème.

Quelles fonctions utiliser pour les placer dans le dossier du module...

j'ai tester beaucoup de choses mais la gestion des templates dans les thèmes est assez complexe..

Auriez vous une idée ?

Merci d'avance.

laurentf

Forum : 
Version de Drupal : 

Merci fanyalla,

Malheureusement ça n'éclaire pas ma lanterne....

Les thèmes c'est vraiment l'usine à gaz...en pire..

Mon problème est TRES simple.

Mon module (monitorproject) permet de créer plusieurs type de contenu :
projet,
demande,
action,
reunion,

pour chaque type de contenu j'ai un template personnalisé (contenant, en autre, des appels à des views).

je veux pouvoir placer mes templates dans le dossier de mon module. Je pense que c'est possible. J'ai donc utilisé le hook_theme de la façon suivante :

function monitorproject_theme() {
       return array(
              'projet' => array(
                'template' => 'node-projet',
                'arguments' => array('node' => NULL),
                ),

                'demande' => array(
               'template' => 'node-demande',
               'arguments' => array('node' => NULL),
                ),             
              
       );
}

et bien sur rien..que dalle, nada...
Je me gave de docs et autres pseudo explications sur le hook_theme et autres fonctions du même genre mais je pige de moins en moins...

Une âme charitable pourrez venir à mon secours...je craque...

Merci d'avance
Laurentf

hello En fait il faut que drupal ajoute le chemin de ton module en tant que chemin où il peut aller chercher des templates. Par défaut, drupal ne va pas voir partout. Donc je pense qu'il faut passer par un "hook_theme_registry_alter" qui te permet d'ajouter ton module comme chemin possible pour chercher des suggestions de template de node.

Si tu active le module "devel" et que tu vas à l'url "devel/theme/registry" tu pourras voir les informations dont dispose drupal pour trouver les templates.

Voici le code que j'ai utilisé pour inclure une sugesstion de page.tpl.php dans mon module

<?php
/**
 * Implementation of hook_theme_registry_alter()
 * On ajoute une suggestion de chemin pour que drupal trouve
 * dans notre module notre template page-galerie-photos.tpl.php
 * Drupal utilisera ce template automatiquement car nous avons une url
 * qui est "galerie-photos". (voir les suggestions automatiques de tpl de drupal)
 */
function fi_galerie_photos_theme_registry_alter(&$theme_registry) {
 
// Hook name we care about
 
$theme_hook = 'page';
 
// Get the path to this module
 
$templates_path = drupal_get_path('module', 'fi_galerie_photos') .'/templates';
 
// Add the module path on top in the array of paths
 
array_unshift($theme_registry[$theme_hook]['theme paths'], $templates_path);
}
?>