Module summary : themer le contenu

Dans le module Summary, vous avez inséré quelques balises HTML directement dans le code PHP (balise H3 pour les titres). Dans cette section, vous permettrez aux créateurs de thèmes de modifier l'apparence du contenu de votre module.

La fonction theme_table prend en paramètre un tableau qui contient lui-même deux tableaux. Le premier doit contenir les en-têtes (header), le second les lignes (rows).
Voici comment implémenter cette fonction pour le nombre de nodes par type :

$result = db_query($query);
$header = array (t('Node type'), '#');
while ($row = $result->fetchAssoc()) {
  $rows[] = $row;
}
$table = theme('table', array ('header' => $header, 'rows' => $rows));
$summary_node_count_type = t('<h3>Number of nodes per type</h3>').$table;

Pour cela, votre module doit implémenter la hook hook_theme() qui prend en paramètre la liste des fonctions de thème du module. Il faut préciser les paramètres qu'aura chaque fonction. Ici, vous avez besoin du titre de la section et de son contenu.

/**
 * Implements hook_theme.
 */
function summary_theme () {
  $functions = array(
    'summary_paragraph' => array (
      'variables' => array('title' => NULL, 'content' => NULL)
    )
  );
  return $functions;
}

Il faut maintenant fournir une fonction par défaut dans le module au cas où le thème actif ne surcharge pas la fonction de thème. Cette fonction affiche uniquement le titre dans une balise <h4> et le contenu dans une balise <p>

/**
 * Fonction de thème par défaut
 */
function theme_summary_paragraph($variables) {
  $output = '<h4>'.$variable['title'].'</h4>';
  $output .= '<p>'.$variable['content'].'</p>';
  return $output;
}

Vous utiliserez votre fonction dans le module pour présenter vos paragraphes. Il suffit de passer en paramètre les deux chaînes composants le titre et le contenu dans un tableau associatif :

$title = variable_get('summary_content_types', t('Content types'));
$content = implode($summary_node_types_list, ', ');
$summary_node_types_list = theme('summary_paragraph', array('title' => $title, 'content' => $content));

....

Doc tek: 
Fichier attachéTaille
Plain text icon summary0.zip_.txt6.62 Ko