Drupal 7 tabs (klasse toevoegen)


Soms zijn er zo van die dagen waarop je letterlijk uren verschijt (pardon my French) om simpele zaken op te lossen. Stel bijvoorbeeld dat je, gewoon omdat je absoluut met bootstrap wil werken, een klasse wil toevoegen aan Drupal tabs. Gewoon. Een klasse toevoegen.

Geen probleem, we zoeken onze template.php op en typen naar hartelust: (bron: http://drupal.org/node/173880)

function MYTHEME_menu_local_tasks() {
$output = '';
if ($primary = menu_local_tasks()) {
    $output .= "<ul class=\"tabs primary nav nav-tabs\">\n"
    $output .= $primary;
    $output .= "</ul>\n";
}
return $output;
}

Oeps! render($tabs); die in onze page.tpl.php normaal voor onze tabs zou moeten zorgen geeft ons doodleuk “array” terug als resultaat.

We ontmoeten Google, onze goede vriend in tijden van crisis en problemen, en ontdekken dat drupal_render($output) zowaar een mirakeloplossing is. (bron: http://drupal.org/node/986290)
Testen die handel! En jawel hoor, dat doet het…. tot je effectief ook klikt op de netjes van de juiste klasse voorziene tabs. Oeps 2!

    Warning: Invalid argument supplied for foreach() in element_children() (regel 6244 van /Users/..xxx../includes/common.inc).
    Warning: Cannot use a scalar value as an array in drupal_render() (regel 5723 van /Users/..xxx../includes/common.inc).
    Warning: Cannot use a scalar value as an array in drupal_render() (regel 5778 van /Users/..xxx../includes/common.inc).

Een error kleurt ons scherm rood en dat wil nu eenmaal zeggen: niet goed!

Terug op zoek. En deze keer werkt het wel. In je page.tpl.php laat je gewoon die render($tabs) staan en in template.php voeg je volgende code toe: (bron: http://drupal.org/project/basic )

function MYTHEME_menu_local_tasks(&$variables) {
$output = '';
if (!empty($variables['primary'])) {
$variables['primary']['#prefix'] = '<h2>' . t('Primary tabs') . '</h2>';
$variables['primary']['#prefix'] .= '<ul class="nav nav-tabs tabs primary clearfix">';
$variables['primary']['#suffix'] = '</ul>';
$output .= drupal_render($variables['primary']);
}
if (!empty($variables['secondary'])) {
$variables['secondary']['#prefix'] = '<h2>' . t('Secondary tabs') . '</h2>';
$variables['secondary']['#prefix'] .= '<ul>';
$variables['secondary']['#suffix'] = '</ul>';
$output .= drupal_render($variables['secondary']);
}
return $output;
}

waar MYTHEME uiteraard vervangen moet worden door de naam van je theme.

Voila, u heeft zonet uren zoekplezier bespaard. 😉

Reageer