Navigation-Links mit Klassen versehen
Hallo,
ich bin erst kürzlich auf JKBB gestoßen und benötige für meine Zwecke ein individuelles anpassen per Klassen der Navigation. Was müsste ich ergänzen bzw. verändern, damit ich beispielsweise dem Suche Link die Klasse "suchen-side" geben kann.
Gruß Tom
ich bin erst kürzlich auf JKBB gestoßen und benötige für meine Zwecke ein individuelles anpassen per Klassen der Navigation. Was müsste ich ergänzen bzw. verändern, damit ich beispielsweise dem Suche Link die Klasse "suchen-side" geben kann.
Gruß Tom
29.07.2011 18:21
Ganz so einfach geht das nicht, da die Navigation dynamisch aufgebaut wird. In der Datei /includes/output/menu.php ist ein Array von Menüpunkten definiert, aus welchem dann mithilfe der Funktion buildmenu() (in der Datei /includes/main/xml/xhtml.php) die Navigation gebastelt wird.
Um Klassen hinzuzufügen, könnte man vielleicht jeweils ein weiteres Array-Element hinzufügen, z.B.:
In der Funktion buildmenu() müsste dann dieser Abschnitt geändert werden::
... und folgendermaßen ergänzt / angepasst werden:
Das ganze ist nicht getestet - aber so in etwa sollte es funktionieren
Um Klassen hinzuzufügen, könnte man vielleicht jeweils ein weiteres Array-Element hinzufügen, z.B.:
$menu[1][] = array('Suche', $u_board . '/suche', "suchen-side");
In der Funktion buildmenu() müsste dann dieser Abschnitt geändert werden::
if ($i == 0) {
$x_menu .= '<li>' . $x_item;
} else {
if ($i == 1) {
$x_menu .= "\n" . '<ul>' . "\n";
$b_ul = true;
}
$x_menu .= '<li>' . $x_item . '</li>' . "\n";
}
... und folgendermaßen ergänzt / angepasst werden:
$x_li = '<li';
if (isset($item[2])) {
$x_li .= ' class="' . $item[2] . '"';
}
$x_li .= '>';
if ($i == 0) {
$x_menu .= $x_li . $x_item;
} else {
if ($i == 1) {
$x_menu .= "\n" . '<ul>' . "\n";
$b_ul = true;
}
$x_menu .= $x_li . $x_item . '</li>' . "\n";
}
Das ganze ist nicht getestet - aber so in etwa sollte es funktionieren
29.07.2011 20:48 | geändert: 29.07.2011 20:52
Okay, hat geklappt vielen Dank für die schnelle Hilfe 

29.07.2011 21:02
So ich schreib mal mein nächstes Anliegen hier rein, damit ich nicht schon wieder einen neuen Thread aufmachen muss. Ich würde gerne das MEnü um ein paar Punkte erleichtern und die Dynamik beibehalten, sieht dann wie folgt für den unregistrierten User aus:
Suche
Neue Beiträge
Registrieren
Login
Regeln
Datenschutz
Ich dachte jetzt das ich einfach die nicht benötigten Sachen rauslöschen kann:
Entstehender Quellcode:
Mit der Erkenntnis, dass nur Murks rauskommt, weil ich keine richtige Ahnung von PHP habe. Das Problem ist, wenn ich den Code so lasse wie er da oben ist, fehlen Listenelemente und allgemein ist die Liste dann ziemlich Schrott. Meine Frage wäre jetzt, ob es irgend wie möglich ist, das so zu schreiben, dass ich mit diesen Punkten eine ganz normale Liste ohne Unterpunkte und der Klassenfunktion bekomme.
Vielen Dank schonmal im Voraus und Entschuldigung fürs Nerven ^^
Suche
Neue Beiträge
Registrieren
Login
Regeln
Datenschutz
Ich dachte jetzt das ich einfach die nicht benötigten Sachen rauslöschen kann:
<?php
if ($sustatus >= 5 && $modqueue > 0) {
$menu[0][] = array('Mods', $u_board . '/mods', "current");
}
if ($sustatus >= 6) {
$menu[0][] = array('Admin', $u_board . '/admin', "current");
}
$menu[1][] = array('Suche', $u_board . '/suche', "suchen-nav", "current");
$menu[1][] = array('Neue Beiträge', $u_board . '/neue-beitraege-1' . $rext, "current");
if ($sustatus < 2) {
$menu[2][] = array('Registrieren', $u_board . $u_newdir . '/user', "current");
$menu[2][] = array('Login', $u_board . '/login');
} else {
$menu[2][] = array('Dein Account', $u_board . '/edit/user-' . $suid, "current");
$menu[2][] = array('Logout', $u_board . '/logout', "current");
}
$menu[3][] = array('Regeln', $u_board . '/info/regeln' . $rext, "current");
if ($u_impressum) {
$menu[3][] = array('Impressum', $u_impressum, "current");
}
if ($u_privacy) {
$menu[3][] = array('Datenschutz', $u_privacy, "current");
}
if ($u_home) {
$menu[4][] = array($x_home, $u_home);
}
?>
Entstehender Quellcode:
<ul>
<li class="suchen-nav"><a href="/forum/suche">Suche</a>
<ul>
<li class="current"><a href="/forum/neue-beitraege-1">Neue Beiträge</a></li>
</ul>
</li>
<li class="current"><a href="/forum/new/user">Registrieren</a>
<ul>
<li><a href="/forum/login">Login</a></li>
</ul>
</li>
<li class="current"><a href="/forum/info/regeln">Regeln</a>
<ul>
<li class="current"><a href="/forum/info/datenschutz">Datenschutz</a></li>
</ul>
</li>
</ul>
Mit der Erkenntnis, dass nur Murks rauskommt, weil ich keine richtige Ahnung von PHP habe. Das Problem ist, wenn ich den Code so lasse wie er da oben ist, fehlen Listenelemente und allgemein ist die Liste dann ziemlich Schrott. Meine Frage wäre jetzt, ob es irgend wie möglich ist, das so zu schreiben, dass ich mit diesen Punkten eine ganz normale Liste ohne Unterpunkte und der Klassenfunktion bekomme.
Vielen Dank schonmal im Voraus und Entschuldigung fürs Nerven ^^
30.07.2011 19:21 | geändert: 30.07.2011 19:22
Der Murks entsteht möglicherweise dadurch, dass $menu[0] fehlt.
Schmeiß mal die Index-Zahlen aus den Array-Variablen raus, dann sollte eine nicht-verschachtelte Liste bei rauskommen, die automatisch mit $menu[0] beginnt:
Schmeiß mal die Index-Zahlen aus den Array-Variablen raus, dann sollte eine nicht-verschachtelte Liste bei rauskommen, die automatisch mit $menu[0] beginnt:
if ($sustatus >= 5 && $modqueue > 0) {
$menu[][] = array('Mods', $u_board . '/mods', "current");
}
if ($sustatus >= 6) {
$menu[][] = array('Admin', $u_board . '/admin', "current");
}
$menu[][] = array('Suche', $u_board . '/suche', "suchen-nav", "current");
$menu[][] = array('Neue Beiträge', $u_board . '/neue-beitraege-1' . $rext, "current");
/* und so weiter */
30.07.2011 20:05 | geändert: 30.07.2011 20:05
Funktioniert einwandfrei! Vielen Dank und ein großes Lob für die Forensoftware, deckt meinen Funktionsbedarf komplett ab 

30.07.2011 20:19
Nur Mitglieder können in diesem Forum Antworten schreiben.



