Vorab:
Bin PHP und Contenido-Anfänger...
Aktueller Status:
Ich verwende die navigationUniversell (http://www.editio.ch/cms/front_content. ... uleView=45) in einem Projekt auf Con 4.8.12 untergebracht.
Aufbau der Navigation ist ein simples <ul><li><a>-Konstrukt. Es existieren mehrere Navigationen untereinander.
<ul> ist jeweils im Layout verankert, NavigationUniversell fügt entsprechende <li><a>-Konstrukte ein.
Wenn man im Frontend eingeloggt ist, wird zusätzliches Menü angezeigt.
Mein Wunsch:
Wenn man sich im Frontend eingeloggt hat, soll die Navigation erscheinen. (partitiell gelöst)
Wenn man eingeloggt ist, soll System ein <ul>-Konstukt ins Layout setzen, darin soll Container für Navigation aktiv werden. (Derzeit <ul>...</ul> immer im Layout vorhanden)
Wenn man sich ausgeloggt hat, soll <ul>-Konstrukt wieder verschwinden, Container kann meinetwegen bestehen bleiben.
Code soll XHTML strict bleiben.
Problem:
<ul> erzeugt einen Balken oberhalb der Navigation (border-top:...) und sorgt für entsprechenden Abstand zur nächsten Navigation (margin-bottom:...).
Die Links sind fabige Kästen (display:block; float:left; width:...; height:...; border:... usw), die sich innerhalb des ul unteranander anordnen.
NavigationUniversell kann nur Links im Stil <li><a href="...">Kategoriename</a></li> einfügen (soweit ich weiß).
Daher ergibt sich um Layout folgender Aufbau:
Code: Alles auswählen
<!-- LOGIN-MENU !-->
<ul>
<container id="110" name="LOGIN_MENU">LOGIN-MENU</container>
</ul>
<!-- END LOGIN-MENU !-->
Das soll aber nicht sein.
Zum einen stört es das Layout (Hauptproblem) enorm - zum anderen schmeißt diese Geschichte eine dicke Fehlermeldung in sämtlichen Validatoren aus, da es keine leeren <ul></ul> geben darf (nebensächliches Problem - nicht jeder validiert jede Webseite...).
Meine Idee:
Eine Abfrage, ob man eingeloggt ist, könnte das Problem lösen.
Also um es mal in eine Pseudo-Abfrage zu packen (vielleicht leichter verständlich, was ich meine:
Code: Alles auswählen
if (im frontend eingeloggt) {
print
<!-- LOGIN-MENU !-->
<ul>
<container id="110" name="LOGIN_MENU">LOGIN-MENU</container>
</ul>
<!-- END LOGIN-MENU !-->
}
[Modulcode "NavigationUniversell":
Code: Alles auswählen
<?php
cInclude('frontend', 'includes/atelierq.navigation.class.inc.php');
$cApiClient = new cApiClient($client);
$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'navi_login'));
$aQnavigation->between(0, '');
$aQnavigation->maskNormal(0, '<li><a href="{link}">{name1}</a></li>');
$aQnavigation->maskSelected(0, '<li><a href="{link}">{name1}</a></li>');
$aQnavigation->maskSelectedSub(0, '<li><a href="{link}">{name1}</a></li>');
echo $aQnavigation->showNavigation(0);
?>
VIELEN DANK IM VORRAUS SCHONMAL!
EDIT
Nachtrag:
Der Einsatz von before und after hat noch schlimmere Auswirkungen: Das <ul> wird geöffnet, aber nicht mehr geschlossen, wenn kein Login erfolgte.
Beispiel-Code:
Code: Alles auswählen
<?php
cInclude('frontend', 'includes/atelierq.navigation.class.inc.php');
$cApiClient = new cApiClient($client);
$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'navi_login'));
$aQnavigation->before(0, '<div class="menuarea_login"><ul>');
$aQnavigation->after(0, '</ul></div>');
$aQnavigation->between(0, '');
$aQnavigation->maskNormal(0, '<li><a href="{link}">{name1}</a></li>');
$aQnavigation->maskSelected(0, '<li><a href="{link}">{name1}</a></li>');
$aQnavigation->maskSelectedSub(0, '<li><a href="{link}">{name1}</a></li>');
echo $aQnavigation->showNavigation(0);
?>