Breadcrumb-Navigation im Drupal eigenen Forum

Breadcrumb-Navigation im Drupal eigenen Forum

Das Forum-Modul von Drupal ist für sich alleine genommen eher nicht das, was erfahrene Forum-Benutzer erwarten. Installiert man dazu jedoch das Modul Advanced Forum, so sieht das ganze schon anders aus. Natürlich kann es vom Funktionsumfang nicht mit Spezialisten wie vBulletin, Simple Machines Forum oder phpBB3 mithalten - das ist einfach eine andere Zielgruppe - aber dafür ist das Forum nahtlos in die Website integriert (vBulletin kann man zwar recht gut mit Hilfe von Drupal vB anbinden, aber nahtlos integriert ist es bei weitem nicht) und einfach zu bedienen und zu administrieren.

Eine Sache fehlte dann aber kürzlich auf einer Kunden-Website doch: eine Navigation nur für das Forum. Zwar gibt es auf der Website die Breadcrumb, aber die war für Forumbesucher doch eher ungewohnt und nur schwer als Navigationshilfe erkennbar. Statt dessen sollte direkt über der Forenliste, bzw. den Threads eine Navigation in Form von Buttons erscheinen. Im Gegensatz zur Breadcrumb allerdings ohne den führenden "Home"-Link. Wenn die Breadcrumb also so aussah

Home » Forums » Forum A » Forum-Thread

so sollte die Navigation im Forum diese Form haben

[Forums] [Forum A] [Forum-Thread]

Dazu müssen zwei Dateien des "Advanced Forum"-Moduls angepasst werden:

"sites/all/modules/advanced_forum/styles/naked/advf-forums.tpl.php"

Zeile 33 -</p>
 
<div class="forum-top-links"><?php print theme('links', $links, array('class' => 'links forum-links')); ?></div>
 
<p>+</p>
 
<div class="forum-top-links"><?php 
      $forumbreadcrumb = drupal_get_breadcrumb();
      unset($forumbreadcrumb[0]);
      array_unshift($forumbreadcrumb, array_shift($forumbreadcrumb) );
      print '<div class="forumbreadcrumb"><ul><li>'. implode('</li><li>', $forumbreadcrumb).'</li></ul></div>';
    ?><?php print theme('links', $links, array('class' => 'links forum-links')); ?></div>
 
<p>

 

 

 

Die Funktionsweise ist ganz einfach: Als erstes erstellen wir eine eigene Variablen für die Forum-Breadcrumb und weisen dieser den aktuellen Wert der Breadcrumb zu. Dafür gibt es die Drupal-Funktion drupal_get_breadcrumb() (liefert ein Array zurück). Anschließend wird der erste Eintrag (der hier immer "Home" enthält) aus dem Array entfernt. Nun wird dieses Array noch mit einer Print-Anweisung ausgegeben, und da wir ja Buttons haben wollen, entfällt das Trennzeichen &raquo;, stattdessen geben wir die Navigation als unordered list aus, die wir dann nur noch mit etwas CSS verschönern müssen. Damit erscheinen in der Forum-Übersicht und der Liste der Threads nun die Knöpfe für die Navigation innerhalb des Forums.

Damit diese Navi auch auf der Seite mit den Postings erscheint muss der gleiche Eintrag auch noch in  "sites/all/modules/advanced_forum/styles/naked/advf-forum-post.tpl.php" vorgenommen werden.

 nach Zeile 25: + <?php 
      $forumbreadcrumb = drupal_get_breadcrumb();
      unset($forumbreadcrumb[0]);
      array_unshift($forumbreadcrumb, array_shift($forumbreadcrumb) );
      print '<div class="forumbreadcrumb"><ul><li>'. implode('</li><li>', $forumbreadcrumb).'</li></ul></div>'; 
    ?> 

Ach ja, wen es stört, dass jetzt oben die normale Breadcrumb und gleichzeitig über dem Forum Navigations-Buttons erscheinen, der kann mit dem Javascript-Snippet die Breadcrumb ausblenden sobald eine Forum-Seite aufgerufen wird. Einfach den Code in den Kopf der Template-Datei page.tpl.php einfügen (diese befindet sich im Verzeichnis "sites/all/themes/mein-theme-ordner/"

 <script type="text/javascript">
          if (location.href.indexOf("/forums") > -1) {
      document.write('<STYLE TYPE="text/css">');
      document.write('.breadcrumb {display: none;}');
      document.write('</STYLE>');
          }
      </script>