Voilà, voilà... Fin de l'aventure...

 

Fermeture de kolossaldrupal.org dans...


Bonjour tout le monde,

Drupal évolue, les versions changent et Kolossaldrupal.org était essentiellement consacré à la version 6 de Drupal.

Autant dire que les infos présentées ici commencent à dater...

Faute de temps, je ne peux plus garder le site Kolossaldrupal à jour...

Je vous aurais bien proposé de reprendre le flambeau mais... c'est tellement simple de nos jours de se faire son propre site à soi...Pourquoi s'embêter alors ? :-)

Ce site restera donc en l'état, tel qu'il était en 2011...

Ah la la ! Cela ne nous rajeunit pas !

Manuel Vila - Avril 2016

Travailler avec des « templates suggestions »

Traduction de la page http://drupal.org/node/223440
publiée/actualisée le 11 Mars 2011 sur Drupal.org


Les « templates suggestions » sont des maquettes de mise en pages (gabarits) alternatives basés sur des fichiers .tpl.php existants.

Ces « suggestions » sont utilisées quand une circonstance particulière est rencontrée et qu'un fichier correspondant existe. Toutes les couches du core, des modules, des moteurs de thèmes et des thèmes peuvent fournir des suggestions. Vous pouvez les imaginer comme étant des conseils qui indiquent à l'application de choisir une mise en page adaptée à un contexte donné. Le concept est simple mais il s'agit d'une puissante fonctionnalité fournissant une autre couche de personnalisation.

Module Devel affichant une « template suggestion » pour possible "page" templates.

Une liste des toutes les suggestions pour le core peut être trouvée dans Core templates and suggestions.

Les noms de ces suggestions sont indiquées dans les fonctions de pré-traitement (preprocess functions). Il en existe de nombreuses fournies par le core. Si vous avez besoin de les enrichir davantage, ajoutez un pré-traitement pour le hook de thème dans votre fichier template.php. L'exemple ci-dessous ajoute des suggestions pour les hooks node et page. On peut en ajouter à n'importe quel hook implémenté en tant que gabarit.

Drupal 7

Drupal 6

Une liste de toutes les suggestions du core est disponible sur la page Drupal 6, suggestions de modèles de mise en page.

Le préfixe « drop » doit être remplacé par le nom de votre thème.

<?phpfunction drop_preprocess_page(&$variables) {
  global 
$user;

  
// Add a single suggestion based on the throttle module in core.
  
if (module_invoke('throttle''status') && isset($user->roles[1])) {
    
$variables['template_file'] = 'page-busy';
  }

  
// Add multiple suggestions for pages based on the logged in user's roles.
  
if (!empty($user->roles)) {
    foreach (
$user->roles as $role) {
      
$filter '![^abcdefghijklmnopqrstuvwxyz0-9-_]+!s';
      
$string_clean preg_replace($filter'-'drupal_strtolower($role));
      
$variables['template_files'][] =  'page-'$string_clean;
    }
  }

}
?>

 

Personnaliser la mise en page selon un type de contenu arbitraire

Vous pouvez améliorer le code précédent pour avoir des suggestions pour chaque type de contenu de votre site.

function my_theme_preprocess_page(&$variables) {
 if ($variables['node']->type != "") {
   $variables['template_files'][] = "page-node-" . $variables['node']->type;
  }
}

Ensuite, créez votre fichier de mise en page sous la forme page-node-votre_type_de_contenu. Si ce fichier est manquant, ce sera la mise en page par défaut qui sera utilisée.

Il y a deux façons d'ajouter ces suggestions :

  1. La clé template_file accepte une seule proposition et elle a la priorité. Si la condition est remplie et que le fichier existe, elle sera utilisée et toutes les autres seront ignorées.
  2. La clé template_files (attention au pluriel) peut prendre un tableau de propositions. Elles sont traitées dans l'ordre FILO (premier entré dernier sorti). Dans un premier temps, l'ajout au tableau doit être fait à partir d'une condition générale, condition qui devient plus restrictive au fur et à mesure, l'enchainement se faisant sur ces particularités. Adding to the array should be done with a general condition first, progressively getting more specific so it cascades based on specificity.

Dans l'exemple précédent, Drupal tentera d'utiliser une fichier nommé page-busy.tpl.php lorsque le seuil d'engorgement sera atteint pour les les utilisateurs anonymes (1 est habituellement affecté à l'identifiant des rôles anonymes). Les autres conditions informent Drupal de regarder les gabarits basés sur les rôles attribués à l'utilisateur courant, par exemple « page-authenticated-user.tpl.php ». Si aucun ne correspond, le gabarit de base page.tpl.php sera utilisé.

Ce sont des exemples simples. Vous pouvez paramétrer n'importe quel contexte basé sur les données dont vous disposez.

Quelques remarques :

  • Lorsque vous ajoutez à template_files, ajoutez au tableau. Ne le réinitialisez pas puisque les variables sont passées par référence. Toute suggestion paramétrée avant dans le core et les modules sera perdue.
  • <?php
      
    // Ne faites pas ceci :
      
    $variables['template_files'] = array('hook-suggestion');

      
    // Faites plutôt cela :
      
    $variables['template_files'][] = 'hook-suggestion';
    ?>
  • Préfixez la suggestion avec le nom du hook auquel elle est associée. Ça reste clair et les fichiers apparaissent groupés. Cela réduit également le risque que Drupal référence le gabarit avec un point d'entrée différent.
  • Par souci de cohérence, utilisez des traits d'union au lieu de signes soulignés. Le gabarit principal ne devrait jamais utiliser de signes soulignés.
  • Les suggestions ne fonctionnent que si elles sont placées dans le même dossier que le gabarit de base. Les gabarits peuvent être placés dans n'importe quel sous-dossier du thème. Ils doivent être appairés dans le même emplacement.
  • Pour les suggestions, le registre de thèmes n'a pas besoin d'être vidé. Ce n'est que le gabarit de base qui a besoin d'être référencé. Les suggestions sont prises en compte à la volée.