Page 1 of 1
Eindeutige Klasse für jedes Item in der Navigationsliste?
Posted: Fri 1. Feb 2008, 09:52
by mbenthaus
Hallo und guten Tag!
Ich habe ein Navigationselement mit Hilfe des RT-Tags
{NAV_LIST_UL:F,0,,menu,active} erstellt, welches auch prima funktioniert.
Jetzt würde ich aber gerne den Elementen der obersten Ebene eine eindeutige Klasse zuweisen, sodaß ich diese per CSS getrennt formatieren kann. Also ungefähr folgendermaßen stelle ich mir dass dann in der Ausgabe vor:
Code: Select all
<ul class="menu">
<li class="start"><a href="index.php?start">Start</a></li>
<li class="profil_active"><a href="index.php?profil">Profil</a>
<ul class="menu">
<li class="sub_no"><a href="index.php?geschichte">Geschichte</a></li>
<li class="sub_no"><a href="index.php?partner">Partner</a></li>
</ul>
</li>
<li class="produkte"><a href="index.php?produkte">Produkte</a></li>
<li class="kontakt"><a href="index.php?kontakt">Kontakt</a></li>
</ul>
So sollte bei der ersten Ebene jeweils die Klasse dem Seitennamen entsprechen und auch die aktive Seite dann zusätzlich gekennzeichnet sein. Die zweite Ebene soll davon nicht betroffen sein. Ich habe durch eigene Recherchen leider nichts in der Richtung gefunden. Ist so etwas von Haus aus möglich? Oder könnte man das generell irgendwie lösen?
Über einen Tipp würde ich mich freuen!
Viele Grüße,
Marc.
Re: Eindeutige Klasse für jedes Item in der Navigationsliste?
Posted: Fri 1. Feb 2008, 09:58
by juergen
Hallo,
denkbar wäre die original Funktion zu nutzen und die erweiteren Klassen aus einer noch zu schaffenden Tabelle auszulesen.. das CSS ist aber Strafarbeit

Re: Eindeutige Klasse für jedes Item in der Navigationsliste?
Posted: Fri 1. Feb 2008, 10:08
by flip-flop
Zumindest kannst du die IDs für jeden link ausgeben lassen. -
NAV_LIST_UL -basics
@string $parameter =
"menu_type, start_id, max_level, class_path, class_active, ul_id_name, wrap_ul_div(0 = off, 1 = <div>, 2 = <div id="">), wrap_link_text(<em>|</em>)"
E.g.: {NAV_LIST_UL:F, 19, 10, NLU_CSS, NLU_ACT, NLU_ID, 2, <em>|</em>} (Not a real one).
Also z.B.
{NAV_LIST_UL:F,0,,menu,active,ID}
Man könnte vielleicht die IDs im /frontend_render/ erstzen durch die entsprechenden Klassennamen, Habe ich allerdings nicht getestet ob der /frontend_render/ nach dem Menü abgearbeitet wird. Wenn das ginge könnte das auch vollautomatisch gehandhabt werden.
Nur die Klassen in der CSS-Datei musst du ja irgendwie verfügbar machen.
Re: Eindeutige Klasse für jedes Item in der Navigationsliste?
Posted: Fri 1. Feb 2008, 10:09
by mbenthaus
Ach, die Strafarbeit wäre mir in diesem Fall sogar egal.

Aber leider hab ich da keinen Schimmer, wie ich die bisherige Funktion erweitern könnte oder generell sowas lösen könnte. Dafür bin ich noch zu neu in phpwcms oder generell in der Programmiersprache PHP...
Hätte gedacht, dass es vielleicht noch Optionen bei dem RT-Tag oder sowas in der Richtung gibt...
Re: Eindeutige Klasse für jedes Item in der Navigationsliste?
Posted: Fri 1. Feb 2008, 10:13
by fopulu
möchtest du die einzelnen menüpunkte als horizontales menü und dabei die menüpunkte bspw in verschiedenen Farben darstellen?
da hätte ich evtl eine Lösung für dich....
Re: Eindeutige Klasse für jedes Item in der Navigationsliste?
Posted: Fri 1. Feb 2008, 10:17
by flip-flop
Hätte gedacht, dass es vielleicht noch Optionen bei dem RT-Tag oder sowas in der Richtung gibt...
siehe oben.
Das ist so ungefähr dieses Strickmuster (bunte Navi)
NAV_LIST_UL V1.2.8
Idee -> so sollte es gehen:
<div class="nlu_navi1">{NAV_LIST_UL:F,0,,act_path,active,ID}</div>
Alt :
<li id="li_ID_12" class="sub_ul act_path active"><a href="index.php?ebene03">Ebene03</a>
Neu:
<li id="li_ID_12" class="my_new_class sub_ul act_path active"><a href="index.php?ebene03">Ebene03</a>
Ersetzer in /frontend_render/
Code: Select all
<?php
// ****************************************************************
// Ersetzen von Zeichenketten
// 01.02.08 KH (flip-flop)
// ----------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {
die("You Cannot Access This Script Directly, Have a Nice Day.");
}
// ----------------------------------------------------------------
$content['all'] = str_replace('id="li_ID_12" class="sub_ul', 'id="li_ID_12" class="my_new_class sub_ul', $content['all']);
?>
Und wenn du jetzt noch geschickt den Seitennamen der aktuellen Seite ausliest und einsetzt ist es fast eine Automatik, bis auf die Klassen, die natürlich angelegt sein müssen. Ob das alles Sinn macht ist eine andere Sache.
Re: Eindeutige Klasse für jedes Item in der Navigationsliste?
Posted: Fri 1. Feb 2008, 12:51
by mbenthaus
Ja, du hast schon recht... Allzu sinnvoll ist das in einem dynamischen System natürlich nicht, da evtl. Seiten angelegt werden und dann die Klassen fehlen. In meinem Fall würde mir das allerdings absolut genügen. Und mit der Lösung über die ID bin ich sehr zufrieden. Evtl. lasse ich das noch der Optik wegen durch den Frontend-Renderer ersetzen, aber passen tut's allemal, womit ich das Thema gleich als »Solved« betitele.
Nochmal danke an euch alle für eure sehr nette und schnelle Hilfe!
Viele Grüße aus dem Ruhrpott!
Marc.
Re: Eindeutige Klasse für jedes Item in der Navigationsliste?
Posted: Fri 1. Feb 2008, 12:58
by juergen
Ersetzer in /frontend_login/

frontend-render
oder

frontend-init
Vielleicht war das jetzt auch schon pedantisch von mir, das wäre allerdings unbeabsichtigt

Re: Eindeutige Klasse für jedes Item in der Navigationsliste?
Posted: Fri 1. Feb 2008, 13:02
by flip-flop
Wenn dir die IDs reichen, würde ich nichts ersetzen, frisst dann nur unnötig Ressourcen beim Ausliefern. Optik: In die generierte Source schaut eh niemand hinein.
Ruhrpott: Wo?
@Jürgen: War gerade noch kopftechnisch in einem anderen Thema. Es muss natürlich frontend_render heißen.

Re: Eindeutige Klasse für jedes Item in der Navigationsliste?
Posted: Fri 1. Feb 2008, 13:47
by mbenthaus
flip-flop wrote:Wenn dir die IDs reichen, würde ich nichts ersetzen, frisst dann nur unnötig Ressourcen beim Ausliefern. Optik: In die generierte Source schaut eh niemand hinein.
auch wieder wahr. werde es erstmal so belassen.
flip-flop wrote:Ruhrpott: Wo?
Aus dem schönen Bochum! Tief im Westen sozusagen.

Re: Eindeutige Klasse für jedes Item in der Navigationsliste?
Posted: Fri 1. Feb 2008, 14:01
by flip-flop
Tief im Westen, wo die Sonne verstaubt! Ist es besser, viel besser, als man glaubt ....
Das Ruhrgebiet: Von Moers im Westen bis nach
Hamm 
im Osten, von Haltern im Norden und Ennepetal im Süden streckt sich das 4435 Quadratkilometer große Gebiet mit seinen 5,3 Millionen Einwohnern .....
->
http://www.salzgittertubes.com/de/Press ... im_Westen/ Glaubt kaum jemand das es bei uns auch recht nett ist.
Re: Eindeutige Klasse für jedes Item in der Navigationsliste?
Posted: Fri 1. Feb 2008, 14:24
by mbenthaus
flip-flop wrote:Glaubt kaum jemand das es bei uns auch recht nett ist.
Das stimmt wohl, allerdings würde ich viele Teile Bochums auch nicht unbedingt als Vorzeige-Ruhrpottstadt nehmen
Ich hab noch ne spezielle Frage...

Wie kann ich den Text in den Links des Menüs in einen <span>-Container setzen? Sprich das ein List-Item so aussieht:
Code: Select all
<li id="li_ID_1" class="sub_no sub_ul_true"><a href="index.php?profil"><span>Profil</span></a></li>
Wo könnte ich sowas angeben? Ihr merkt, ich bin noch nicht wirklich mit phpwcms vertraut...

Re: Eindeutige Klasse für jedes Item in der Navigationsliste?
Posted: Fri 1. Feb 2008, 14:40
by flip-flop
@string $parameter =
"menu_type, start_id, max_level, class_path, class_active, ul_id_name, wrap_ul_div(0 = off, 1 = <div>, 2 = <div id="">), wrap_link_text(<em>|</em>)"
E.g.: {NAV_LIST_UL:F, 19, 10, NLU_CSS, NLU_ACT, NLU_ID, 2, <span>|</span>} (Not a real one).
<div class="nlu_navi1">{NAV_LIST_UL:F,0,,act_path,active,ID,,<span>|</span>}</div>

-> -
NAV_LIST_UL -basics
Beispiel: -
Sliding door technology
Re: Eindeutige Klasse für jedes Item in der Navigationsliste?
Posted: Fri 1. Feb 2008, 14:48
by mbenthaus
So, alles fertig, keine Fragen mehr für heute

Tausend dank nochmal für die nette Hilfe!