Vorhandene theme_ hooks verwenden und überschreiben

Dank der Theme Registry können in Drupal 6 alle vorhandenen hook_theme und template_preprocess Funktionen überschrieben werden. Mittels dem bereits beschriebenen 'Theme developer Modul' vom Drupal, können auf die preprocess Funktionen eifnach ermittelt werden.

Es empfielt sich, immer die originale Funktion aus dem Modulcode in das eigene template.php File des Themes zu kopieren und anschliessend anzupassen.

Praktisches Beispiel anhand der theme_breadcrumb Funktion.

1. theme_breadcrumb suchen

Die Funktion befindet in der theme.inc im Ordner /includes.

/**
 * Return a themed breadcrumb trail.
 *
 * @param $breadcrumb
 *   An array containing the breadcrumb links.
 * @return a string containing the breadcrumb output.
 */
function theme_breadcrumb($breadcrumb) {
  if (!empty($breadcrumb)) {
    return '<div class="breadcrumb">'. implode(' » ', $breadcrumb) .'</div>';
  }
}

2. theme_breadcrumb in template.php kopieren und in mytheme_breadcrumb umbenennen. Alternativ kann auch phptemplate_breadcrumb verwendet werden. Dann gilt die Funktion für alle phptemplate-basierten Templates.

/**
 * Return a themed breadcrumb trail.
 *
 * @param $breadcrumb
 *   An array containing the breadcrumb links.
 * @return a string containing the breadcrumb output.
 */
function phptemplate_breadcrumb($breadcrumb) {
  if (!empty($breadcrumb)) {
    return '<span class="othercssclass">'. implode(' » ', $breadcrumb) .'</span>';
  }
}

3. Optional  phptemplate_preprocess_breadcrumb erweitern

/**
* Implementation of $themeenginename_preprocess_$hook().
* Variables we set here will be available to the breadcrumb template file.
*/
function phptemplate_preprocess_breadcrumb(&$variables) {
$variables['breadcrumb_delimiter'] = '#';
}

4. phptemplate_preprocess_breadcrumb mit neuer Variable anpassen

function phptemplate_breadcrumb($breadcrumb) {
  if (!empty($breadcrumb)) {
    return '<span class="othercssclass">'. implode(" $breadcrumb_delimiter ", $breadcrumb) .'</span>';
  }
}