Tabs umbenennen in Drupal

Bild von tobiasb

Mit diesem Snippet lassen sich die Tabs/Reiter/Kateireiter oder wie auch immer man das nennen möchte individuell umbenennen.

Wenn der 1. Tab nur bei Nodes in Drupal6 umbenannt werden muss, sollte sich http://drupal.org/project/tabname_tweaker anschauen.
machen.

Dieser Code muss in die template.php des Themes eingefügt werden, am besten am Ende. Der Code verändert dabei den Inhalt der $tabs Variable der page.tpl.php des Themes

Code für Drupal5/6

  1. function phptemplate_change_tab_label($label_old, $label_new, &$vars) {
  2.   $tabs = explode("\n", $vars['tabs']);
  3.   $vars['tabs'] = '';
  4.  
  5.   foreach($tabs as $tab) {
  6.     if(strpos($tab, '>'. $label_old .'<') === FALSE) {
  7.       $vars['tabs'] .= $tab . "\n";
  8.     }
  9.     else {
  10.       $vars['tabs'] .= str_replace('>'. $label_old .'<', '>'. $label_new .'<', $tab) ."\n";
  11.     }
  12.   }
  13. }

Diesen Code müssen Sie auch in ihre template.php einfügen.

Code für Drupal5

  1. function _phptemplate_variables($hook, $vars = array()) {
  2.   if ($hook == 'page') {
  3.     if (arg(0) == 'user' && is_numeric(arg(1))) {
  4.       phptemplate_change_tab_label(t('Edit'), t('Edit account'), &$vars);
  5.     }
  6.     if (arg(0) == 'node' && is_numeric(arg(1))) {
  7.       phptemplate_change_tab_label(t('Edit'), t('Edit post'), &$vars);
  8.     }
  9.   }
  10. }

Code für Drupal6

  1.  function phptemplate_preprocess_page(&$vars) {
  2.   //gilt für alle Benutzer
  3.   if (arg(0) == 'user' && is_numeric(arg(1))) {
  4.     phptemplate_change_tab_label(t('Edit'), t('Edit account'), &$vars);
  5.   }
  6.   //gilt nur für Benutzer, deren Benutzer-Name Tobias ist
  7.   if (arg(0) == 'user' && is_numeric(arg(1))) {
  8.     $user = user_load(arg(1));
  9.     if (strtolower($user->name) == 'tobias')  {
  10.       phptemplate_change_tab_label(t('Edit'), t('Edit your account MR. Tobias'), &$vars);
  11.     }
  12.   }
  13.   //gilt für alle Nodes
  14.   if (arg(0) == 'node' && is_numeric(arg(1))) {
  15.     phptemplate_change_tab_label(t('Edit'), t('Edit post'), &$vars);
  16.   }
  17.   //gilt nur für Nodes des Typs story
  18.   if (arg(0) == 'node' && is_numeric(arg(1))) {
  19.     $node = node_load(arg(1));
  20.     if ($node->type == 'story' )  {
  21.       phptemplate_change_tab_label(t('Edit'), t('Edit story'), &$vars);
  22.     }
  23.   }
  24. }

Edit = org.Zeichenkette in English!
Edit post/account = diese Zeichenkette wird anstatt Edit angezeigt. Die neue Bezeichnung kann beliebig sein.
Wer wissen will was es alles im $node/$user Objekt gibt, sollte sich mal das Modul devel installieren.

HINWEISE!

Falls schon eine Funktion der Funktionen in der template.php vorhanden ist, muss nur der Funktionskörper zur bestehende Funktion hinzugefügt werden.

Die t() Funktion ermöglicht es englischen Text übersetzbar zu machen. Deshalb können dann die Zeichenketten ggf. im Bereich für Übersetzungen übersetzt werden.

Falls man kein English standardmäßig aktiviert hat, sollte man vorher nachschauen wie die Bezeichnung des zuveränderten Tab lautet.

Re: Tabs umbenennen in Drupal

Hallo,

das wäre so ziemlich genau das, was ich suche - nur benötige ich das für Drupal6. Gibt es da auch eine ähnliche Möglichkeit?

Viele Grüße,
Tobias

Bild von tobiasb

Re: Tabs umbenennen in Drupal

So hab jetzt den für D6 nötigen Code hinzugefügt.