2010-11-04 6 views
4

Je suis nouveau à Drupal et je travaille sur la création de mon propre thème pour notre module personnalisé. Quelqu'un peut-il s'il vous plaît m'aider à comprendre comment enregistrer nos fonctions de thème ou partager des idées ou des liens qui explique le processus à partir de zéro.Enregistrez vos fonctions de thème dans Drupal

Répondre

29

Enregistrer une fonction de thème signifie implémenter hook_theme dans votre module. Par exemple, si votre module est appelé "example", vous devez avoir une fonction appelée example_theme dans le fichier example.module. La fonction de thème doit retourner un tableau ou vous allez vous retrouver avec le fameux écran blanc de la mort.


En example.module:

<?php 
// $Id$ 

// Implements hook_theme 
function example_theme(){ 
    return array(
     'mydata' => array(

      // Optionally, you can make the theme use a template file: 
      // this line references the file "mydatafile.tpl.php" in the same folder as the module or in the folder of the active theme 
      'template' => 'mydatafile', 

      // these variables will appear in the template as $var1 and $var2 
      'arguments' => array(
       'var1' => null, 
       'var2' => null, 
      ), 

     ), 
     'myotherdata' => array(

      // these variables will appear in the functions as the first and second arguments 
      'arguments' => array(
       'var1' => null, 
       'var2' => null, 
      ), 

     ) 
    ); 
} 


// If you don't want to use a template file, use a function called "theme_THEID" to create the HTML. 
function theme_myotherdata($var1, $var2){ 
    return "<div>var1= $var1 and var2= $var2</div>"; 
} 

En mydatafile.tpl.php:

<div>mydatafile.tpl.php was called</div> 
<ol> 
    <li>var1: <?php echo $var1; ?></li> 
    <li>var2: <?php echo $var2; ?></li> 
</ol> 

Vous pouvez le n appeler plus tard la fonction de thème manuellement si nécessaire:

$html = theme('mydata', 'hello world', 123); 
$html = theme('myotherdata', 'hello world', 123); 

Dans ce cas, « mydatafile.tpl.php » et « theme_myotherdata » recevra la valeur « Bonjour tout le monde » en $ var1 et la valeur 123 $ var2.


Il y a many more options, comme changer le nom de la fonction, en utilisant des modèles au lieu d'un nom fixe, étant en mesure d'avoir la fonction dans un autre fichier php ou tel, consultez le lien.


Voici quelques plus de ressources sur thématisation:


Par ailleurs, vous devrez reconstruire le cache du registre thématique si vous ajoutez les fonctions dans le fichier .module après qu'il a été installé, dans ce cas, vous pouvez le faire en effaçant le cache (un moyen consiste à utiliser le bouton en bas de la page Performances).

+0

Le bit Themer de devel a maintenant son propre module, je pense. – CurtainDog

Questions connexes