Drupal 7 tip: Gebruik niet thema('...', ...) gebruik render arrays

Posted by: 
Dominique De Cooman

De aanbevolen methode in drupal 7 om output te renderen is door gebruik te maken van render api. Dus men noemt niet meer direct het thema (...). Hier is een eenvoudig voorbeeld gebaseerd op het voorbeeld uit de voorbeeld module.

<?php

function render_something() {
  
$render_array = array(
    
'child' => array(
      
t('This is some text that should be put together'),
      
t('This is some more text that we need'),
    ),
    
'#separator' => ' | ',  // Made up for this theme function.
    
'#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;
}

/**
 * Implements hook_theme().
 */
function my_module_theme() {
  
$items = array(
    
'render_example_aggregate' => array(
      
'render element' => 'element',
    ),
  );

  return 
$items;
}
?>

De belangrijkste reden voor het bestaan van de render api is dat het veranderingen mogelijk maakt door andere modules voordat er een html wordt geproduceerd. Daarnaast biedt het een consequent systeem om output te leveren.

De render api kan veel meer dan alleen thema functies benoemen. Het maakt prefixing, suffixing, caching, theme wrappers, pre rendering en post rendering mogelijk.

Als u meer wilt weten hierover bekijk dan:
http://chicago2011.drupal.org/sessions/render-api-drupal-7
http://drupal.org/project/examples (renderapi example module)

Reactie toevoegen