Hinzufügen von Navigations-Links (Brotkrumen) für MODs

Hier gibt es sporadisch Tipps zur Programmierung für phpBB3.0.x MOD Autoren
Antworten
Benutzeravatar
Mahony
Site Admin
Site Admin
Beiträge: 792
Registriert: 3. Dez 2006 22:09
Hat sich bedankt: 22 Mal
Danksagung erhalten: 6 Mal

Hinzufügen von Navigations-Links (Brotkrumen) für MODs

Beitrag von Mahony »

Hinweis: Dieser Beitrag richtet sich gezielt an MOD Autoren und enthält technische Details.

Eine einfache Möglichkeit Navigations-Links für MODs hinzuzufügen ist die Verwendung der, in phpBB3 integrierten, so genannten, "Brotkrumen" - Funktion (Brotkrumen, englisch Breadcrumbs, genannt, weil eine Spur zurück zum Forum-Index gelegt wird).

Es sind lediglich ein paar Zeilen PHP-Code erforderlich, um deinem MOD (oder deiner Website, sofern du in phpBB3 eingebundene Seiten verwendest) einen Brotkrumen hinzuzufügen.

Dieser Artikel erklärt, was zu tun ist um Brotkrumen anzulegen.

Um zu verstehen wie das ganze funktioniert, öffne die Datei styles/prosilver/template/overall_header.html und suche nach diesem Code:

Code: Alles auswählen

<!-- BEGIN navlinks --> <strong>‹</strong> <a href="{navlinks.U_VIEW_FORUM}">{navlinks.FORUM_NAME}</a><!-- END navlinks -->
Dieser Teil des Template-Codes ist für die Bildung des Brotkrumen (Breadcrumbs) verantwortlich, der oben im Forum zu sehen ist.
breadcrumbs.jpg
breadcrumbs.jpg (6.53 KiB) 12250 mal betrachtet
breadcrumbs.jpg
breadcrumbs.jpg (6.53 KiB) 12250 mal betrachtet
Wie du am Code sehen kannst, entspricht {navlinks.U_VIEW_FORUM} der eigentlichen Web-Adresse der Seite und {navlinks.FORUM_NAME} ist der Name der Seite, auf die verlinkt wird.

Um nun deinem eigenen MOD einen Brotkrumen (Breadcrumbs) hinzuzufügen, öffne die main.php - Datei deines MODs.
Suche nun nach der page_header function in deinem Script (wenn du mehrere Aufrufe der page_header function in deinem MOD hast, kannst du für jeden Aufruf einen Brotkrumen (Breadcrumbs) anlegen, wenn du dies möchtest).
Vor der page_header function füge nun folgenden Code ein:

Code: Alles auswählen

$template->assign_block_vars('navlinks', array(
'FORUM_NAME' => $user->lang['MOD_INDEX'],
'U_VIEW_FORUM' => append_sid('my_mod.'.$phpEx),
));
Wie du siehst, entspricht dieser Template-Code, der "navlinks"-Schleife der in der overall_header.html angezeigt wird.

Der von uns eingefügte Code würde demnach folgende Ausgabe in der overall_header.html ergeben:
breadcrumbs_einfach.png
breadcrumbs_einfach.png (903 Bytes) 12250 mal betrachtet
breadcrumbs_einfach.png
breadcrumbs_einfach.png (903 Bytes) 12250 mal betrachtet
Die Sprachvariable $user->lang['MOD_INDEX'] ist dabei nur als Beispiel zu betrachten. Du kannst hier jede Sprachvariable verwenden, die du möchtest (falls es sich nicht um einen MOD handelt, sondern um eine in phpBB3 eingebundene Seite, kannst du auch eine hart codierte Zeichenkette verwenden).
Im append_sid Aufruf, musst du dann noch my_mod mit dem Namen deiner .php - Seite (die aufgerufen werden soll) ersetzen.
Wenn du, aus welchen Gründen auch immer, einen externen Link aufrufen möchtest, kannst du hier auch hart codierte Zeichenketten verwenden.
Beispiel:

Code: Alles auswählen

‘U_VIEW_FORUM’ => ‘http://www.example.com’,
Ein weiteres Feature der Brotkrumen (Breadcrumbs), ist die Verwendung von template loops (Template Schleifen).
Du kannst also den Code mehrfach einfügen, um mehrere Links zu erhalten. Du könntest den Code aber auch innerhalb einer Schleife verwenden, um diesen Effekt zu erhalten (eine foreach-Schleife wäre hier sehr nützlich und angebracht).

Ein solches Beispiel, könnte in etwa so aussehen:

Code: Alles auswählen

$navlinks_array = array(
array(
'FORUM_NAME' => $user->lang['MOD_INDEX'],
'U_VIEW_FORUM' => append_sid('my_mod.'.$phpEx),
),

array(
'FORUM_NAME' => $user->lang['MOD_SUBPAGE'],
'U_VIEW_FORUM' => append_sid('my_mod.'.$phpEx, 's=1'),
),

array(
'FORUM_NAME' => $user->lang['MOD_SUBPAGE_2'],
'U_VIEW_FORUM' => append_sid('my_mod.'.$phpEx, 's=2'),
),
);

foreach( $navlinks_array as $name )
{
$template->assign_block_vars('navlinks', array(
'FORUM_NAME' => $name['FORUM_NAME'],
'U_VIEW_FORUM' => $name['U_VIEW_FORUM'],
));
}
Dies würde dann folgendes Ergebnis zeigen:
breadcrumbs_loop.png
breadcrumbs_loop.png (1.04 KiB) 12250 mal betrachtet
breadcrumbs_loop.png
breadcrumbs_loop.png (1.04 KiB) 12250 mal betrachtet
In diesem Beispiel, wurde lediglich eine Änderung am PHP-Code benötigt und keine Änderung an der Template-Datei. Sobald die Änderung durchgeführt wurde und die Datei hoch geladen ist, sollte das Ergebnis sofort (ohne leeren des Caches) angezeigt werden.



Dieser Artikel basiert auf dem Artikel des phpbb.com - blogs


Grüße: Mahony
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
Klug ist, wer nur die Hälfte von dem glaubt, was er hört. Weise ist, wer erkennt, welche Hälfte richtig ist.

Bild
Antworten