Astuce Drupal 7: Ne pas utiliser "theme('...', ...)", utiliser "render arrays"
Dans Drupal 7, la méthode recommandée pour rendre la sortie est en utilisant l'API rendre. Donc, il ne faut pas appeler theme(...) directement. Voici un exemple simple basé sur l'exemple du module exemples.
<?php
function render_something() {
$render_array = array(
'child' => array (
t ('Ceci est des textes qui devraient être rassemblés'),
t ('Ceci est un autre texte dont nous avons besoin'),
),
'#separator' => ' | ', // Fait pour cette fonction theme.
'#theme' => 'render_example_aggregate',
);
print render($render_array);
}
/**
* Theme function
*/
function theme_render_example_aggregate($variables) {
$output = '';
foreach (element_children($variables['element']['child']) as $item) {
$output .= $variables['element']['child'][$item] . $variables['element']['#separator'];
}
return $output;
}
/**
* Implémente hook_theme().
*/
function my_module_theme() {
$items = array(
'render_example_aggregate' => array(
'render element' => 'element',
),
);
return $items;
}
?>L'utilité principale de l'API render est qu'elle permet de modifier par d'autres modules avant que toute html ne soit produite. En outre, elle fournit un système cohérent qui produit toutes les sorties.
L'API render a plus de fonctionnalités que le simple appel de theme(). Elle permet l'ajout de préfixe, suffixe, la mise en cache, l'ajout d'enveloppes de thème, le pré-rendu et post-rendu.
Pour plus d'information sur ce check out:
http://chicago2011.drupal.org/sessions/render-api-drupal-7
http://drupal.org/project/examples (renderapi example module)

