GELÖST - Menüanzeige von Login abhängig / How to?

Gesperrt
ameise
Beiträge: 10
Registriert: Fr 22. Mai 2009, 07:20
Wohnort: Gelsenkirchen
Kontaktdaten:

GELÖST - Menüanzeige von Login abhängig / How to?

Beitrag von ameise »

Guten Morgen Leute!

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 !-->
Ergo: auch wenn Menü nicht angezeigt wird, steht (dank <ul>) der obere Balken im Layout
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 !-->
} 
Ich denke, diese Abfrage müsste ins Layout - kann aber auch gerne mit ins Modul aufgenommen werden...


[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);

?>
Wäre klasse, wenn mir jemand eine Lösung formulieren könnte!
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);

?>
Zuletzt geändert von ameise am Mi 15. Jul 2009, 10:10, insgesamt 2-mal geändert.
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Menüanzeige von Login abhängig / How to?

Beitrag von idea-tec »

wieso so kompliziert?

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 "<ul>";
echo $aQnavigation->showNavigation(0);
echo "</ul>";
?>
Und dann das ul-Tag aus dem Layout raus.
ameise hat geschrieben:NavigationUniversell kann nur Links im Stil <li><a href="...">Kategoriename</a></li> einfügen (soweit ich weiß).
Nein, das ist nicht richtig, du kannst damit alles machen was du willst. du kannst im modul ja auch aus <li> ein <div> machen, und, und, und...

Mal ein fettes R E S P E C T an kummer, das ist das beste Navi-Modul, das es gibt
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
ameise
Beiträge: 10
Registriert: Fr 22. Mai 2009, 07:20
Wohnort: Gelsenkirchen
Kontaktdaten:

Re: Menüanzeige von Login abhängig / How to?

Beitrag von ameise »

Hallo idea-tec!

Erstmal DANKE für die rasche Antwort :-)

Das habe ich auch schon probiert.

Auch die Lösung mit den umschließenden <ul> ergibt beim ausgeloggten Zustand die Ausgabe:

Code: Alles auswählen

<div class="menuarea_login">
       <ul></ul>
</div>
Genau DAS möchte ich ja verhindern...

Auch wenn ich die Formatierung dem umschließenden DIV übergebe - es bleibt im Code stehen -> der Balken bleibt im Layout stehen...
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Menüanzeige von Login abhängig / How to?

Beitrag von idea-tec »

SORRY ... jetzt weiß ich wieder wieso ich mich nebenbei in ein Backend eingeloggt hatte um was nachzusehen ;-)

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>');

if ($auth->auth["uid"] != "nobody") {
    echo "<ul>";
 }
echo $aQnavigation->showNavigation(0);
if ($auth->auth["uid"] != "nobody") {
    echo "</ul>";
 }
?>
Wie du dann mit dem von dir geposteten div-Tag umgehst wirst du selbst wissen, evtl. auch einfach hier mit rein.
So sollte es nun gehen, da die abfrage auf eingeloggt ja drinne ist ;-)
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
ameise
Beiträge: 10
Registriert: Fr 22. Mai 2009, 07:20
Wohnort: Gelsenkirchen
Kontaktdaten:

Re: Menüanzeige von Login abhängig / How to?

Beitrag von ameise »

Hallo Karsten!

Klappt alles SUPER - auch mit DIV drumherum :-) Genau DAS habe ich gesucht!

Vielen Dank! - Werde Dich weiterempfehlen ;-)
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: GELÖST - Menüanzeige von Login abhängig / How to?

Beitrag von idea-tec »

Danke :-)
Man kann auch alles in eine Abfrage packen, müsste genau so funktionieren:

Code: Alles auswählen

if ($auth->auth["uid"] != "nobody") {
    echo "<ul>";
    echo $aQnavigation->showNavigation(0);
    echo "</ul>";
}
Ist dann halt doppelt gemoppelt, weil die Abfrage/Anzeige auf gesicherte Kategorien ja eh von der Modulfunktion erledigt wird. Man spart sich lediglich ein wenig Code
Ich füge das meist so "getrennt" ein, da man es in der Regel einfacher hat, wenn mal ein "Fremder" an das Modul kommt, weil er die Unterscheidung besser erkennt. Hier kann man aber auch einen Kommentar hinter die Zeilen einfügen.
Das alles nur als weitere Information :-)
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
Gesperrt