WCF2: Interne Menüpunkte richtig hinzufügen

  • WCF 2.0

Achtung: Diese Seite ist nur noch Teil eines Archivs und wird in Zukunft entfernt.

Mit Community Framework 2 schaffte WoltLab die Möglichkeit, eigene interne Links im Hauptmenü anzugeben, die beim Aufruf dann auch als aktiv markiert werden. Hierzu ist jedoch leider etwas Hintergrundwissen notwendig, das ich hier erläutern möchte.

Externe Links lassen sich wie gehabt hinzufügen - einfach per Direktlink. Ruft man allerdings die Funktion zum Hinzufügen eines internen Links auf (Darstellung -> Seitenmenü -> Menüpunkt hinzufügen), so erhält man einmal das Feld "Controller" und einmal das Feld "Parameter". Zumindest ersteres muss man zwingend ausfüllen.

Controller
Der Controller ist praktisch die PHP-Klasse der Seite und immer in Verzeichnissen /lib/action, /lib/form oder /lib/page der jeweiligen Endanwendung oder von Community Framework (/wcf/lib/action bzw. /wcf/lib/form oder /wcf/lib/page) zu finden. Im Falle von Burning Board 4 erhält man im Verzeichnis /lib/page folgende Dateien aufgelistet:
  • BoardFeedPage.class.php
  • BoardListPage.class.php
  • BoardPage.class.php
  • ThreadLogPage.class.php
  • ThreadPage.class.php
  • WatchedThreadListPage.class.php
In der Beschreibung des Feldes Controllers steht, dass man den vollständigen Klassennamen inklusive Namespace angeben muss. Der Klassenname ist immer der Dateiname bis zum ersten Punkt. Bei den oben genannten Dateien also:
  • BoardFeedPage
  • BoardListPage
  • ThreadLogPage
  • ThreadPage
  • WatchedThreadListPage
Doch wie erhält man den Namespace? Auch das ist einfach, denn dieser Steht immer in Zeile 2 der jeweiligen Datei. Bei den oben genannten Dateien sollte es demnach immer folgendermaßen aussehen: namespace wbb\page; Der Namespace lautet demnach wbb\page und muss dem Klassennamen vorangestellt sein. Der richtige vollständige Controller für die oben genannten Seiten wäre demnach:
  • wbb\page\BoardFeedPage
  • wbb\page\BoardListPage
  • wbb\page\ThreadLogPage
  • wbb\page\WatchedThreadListPage
Kurz gesagt ist der Controller demnach der Pfad zur Datei (ohne das Verzeichnis /lib) mit vorangestellter Abkürzung der Endanwendung inklusive Dateiname ohne das .class.php.

Parameter
Ein Parameter muss nicht zwingend angegeben werden, da er nicht immer benötigt wird. Parameter sind normal auf der jeweiligen Seite in der Adressleiste sichtbar. Als Beispiel nehme ich mal den Link "Ungelesene Beiträge" in Burning Board 4. Dieser sieht folgendermaßen aus:
/index.php/BoardQuickSearch/?mode=unreadPosts
Der Controller wäre hier z. B. wbb\action\BoardQuickSearchAction.
Der Parameter wäre dann alles nach dem ?, in diesem Fall demnach mode=unreadPosts. Es wird nur dann ein Parameter benötigt, wenn er von dem jeweiligen Controller - also innerhalb von PHP - dann auch verarbeitet werden kann. Ansonsten wird er einfach ignoriert.

Mit diesem einfachen Wissen ist es somit möglich, eigene interne Links anzulegen, die dann beim Aufruf der jeweiligen Seite auch korrekt als aktiv markiert werden.
Über den Autor
Ich bin Webentwickler in Stuttgart und administriere Server seit vielen Jahren. In diesem Blog erstelle ich hauptsächlich Tutorials für andere Webentwickler, Webdesigner und Serveradministratoren.
-------------------------------------------------------------------------------------------------------------------------------------
I’m a web developer in Stuttgart, Germany, and server administrator since many years. This blog mainly contains a tutorial set for other web developer, web designer and server administrators.

2.993 mal gelesen

Kommentare 5

  • Black Rider -

    Diese findest du im jeweiligen Verzeichnis der Anwendung auf dem Webspace.

  • Sandrox -

    Hallo, ich habe noch eine kleine Frage und zwar wo ich die Verzeichnisse lib/action, /lib/form oder /lib/page finde? In der Administrationsüberfläche oder muss ich mir dafür das Plugin als ZIP Datei Downloaden und dann dort stöbern?

  • Gregory -

    Wie bekomme ich die Verlinkung auf eine Forenkategorie hin?

  • PatrickGER -

    Danke :)

  • Miraculix -

    Sehr schön und verständlich erklärt.