Tipps und Tricks (Teil 1)

Veröffentlicht am 15.01.2013 von Jockl in Adventskalender 2012

Im Adventskalender am 04.12.2012

Einbinden eines Top-Links für bestimmte Usergruppen


Wie generell die Top-Links um weitere Links erweitert werden können, ist hier in der Doku beschrieben.

Nun kann es aber sein, dass man einen Link einfügen möchte, der nur für bestimmte Benutzergruppen sichtbar ist und für andere nicht (z.B. für Gäste).
Eine der Möglichkeiten, so etwas umzusetzen, möchten wir im Nachfolgenden zeigen.

Die Top-Links sind im Template "header" enthalten (in der Templategruppe "Seitenkopf Templates"). Hier ein Auszug aus dem Template mit den entsprechenden Zeilen

<ul>
<li><a href="{$mybb->settings['bburl']}/search.php">......{$lang->toplinks_search}</a></li>
<li><a href="{$mybb->settings['bburl']}/memberlist.php">......{$lang->toplinks_memberlist}</a></li>
<li><a href="{$mybb->settings['bburl']}/calendar.php">......{$lang->toplinks_calendar}</a></li>
<li><a href="{$mybb->settings['bburl']}/misc.php?action=help">......{$lang->toplinks_help}</a></li>
<li><a href="{$mybb->settings['bburl']}/games.php">......{$lang->gamesection}</a></li>
</ul>

Damit der hier zur Verfügung stehende Platz nicht gesprengt wird, habe ich die img-Tags komplett heraus genommen.

Zu diesen Top-Links soll nun z.B. ein Link zu einer eigenen Seite eingefügt werden, der aber nicht für Gäste und gebannte User sichtbar sein soll.
Der Link würde, direkt in das Template header eingebunden, wie folgt aussehen...

<li><a href="{$mybb->settings['bburl']}/meineSeite.php">......MeineSeite</a></li>

...und wäre für jeden Besucher des Forums sichtbar.

Statt der Zeile

<li><a href="{$mybb->settings['bburl']}/meineSeite.php">......MeineSeite</a></li>

setzen wir die Variable {$meineSeite} in das Template header ein. Der Bereich der Top-Links sieht dann im header-Template wie folgt aus

<ul>
<li><a href="{$mybb->settings['bburl']}/search.php">......{$lang->toplinks_search}</a></li>
<li><a href="{$mybb->settings['bburl']}/memberlist.php">......{$lang->toplinks_memberlist}</a></li>
<li><a href="{$mybb->settings['bburl']}/calendar.php">......{$lang->toplinks_calendar}</a></li>
<li><a href="{$mybb->settings['bburl']}/misc.php?action=help">......{$lang->toplinks_help}</a></li>
<li><a href="{$mybb->settings['bburl']}/games.php">......{$lang->gamesection}</a></li>
{$meineSeite}
</ul>

Nun müssen wir die Variable {$meineSeite} mit Leben füllen und Ihr auch noch mit auf den Weg geben, dass sie nicht allen Usern erscheinen soll.

Hierzu benötigen wir eine Änderung der Datei global.php. Zu finden ist diese Datei im root-Verzeichnis deines Forums.
Dringen zu beachten sind dabei auch diese Hinweise zur Änderung von PHP-Dateien!

In der global.php suchen wir die Zeile

eval("$header = \"".$templates->get("header")."\";");

Diese Zeile ist dafür verantwortlich, das Template header zu laden und Änderungen, die dieses Template betreffen, sind vor dieser Zeile einzufügen.

Wir müssen also vor dieser Zeile definieren, wie die Variable {$meineSeite} gestaltet werden soll.

Zum einen soll sie als Listeintrag mit folgendem Inhalt umgewandelt werden.

<li><a href="{$mybb->settings['bburl']}/meineSeite.php">......MeineSeite</a></li>

Nun benötigen wir noch eine Bedingung (if-Abfrage), die überprüft, ob der Betrachter der Seite einer berechtigten Usergruppe angehört.
Nehmen wir an, wie oben beschrieben, dass sowohl Gäste als auch gebannte User diesen Link nicht sehen sollen.
Diese Usergruppen sind unter der ID 1 und 7 zu finden.

Für diese Usergruppe werden wir der Einfachheit halber ein Array erstellen. Das hat den Vorteil, dass ihr nötigenfalls schnell weitere Gruppen hinzufügen oder entfernen könnt). Danach fragen wir das Array ab und je nach Ergebnis wird der Top-Link im header geladen oder auch nicht.

Vor die bereits oben angesprochene Zeile

eval("$header = \"".$templates->get("header")."\";");

fügen wir folgenden Code-Abschnitt ein:

$checkMyUsergroup = array(1,7);
if(!in_array($mybb->usergroup['gid'], $checkMyUsergroup)){
$meineSeite = "<li><a href=\"{$mybb->settings['bburl']}/meineSeite.php\">......MeineSeite</a></li>";
}

Natürlich müsst Ihr die Punkte (......) noch mit einem img-Link ersetzen, wenn vor dem Link ein Icon angezeigt werden soll.

Für Rückfragen stehen wir natürlich im Forum jederzeit gerne zur Verfügung.