Modul :: NavigationUniversell

ZuMe
Beiträge: 71
Registriert: Sa 20. Dez 2003, 13:36
Kontaktdaten:

Beitrag von ZuMe »

Hallo,

wollte nur Danke sagen für das schöne Modul ! Jetzt gehts in meinem Testbereich so wie ich es mir vorgestellt hab, erste Ebene quer und die restlichen dann links und alles prima :)

Hat sich eigentlich noch etwas ergeben wegen dieser Zweisprachigkeit, was seelauer geschrieben hat? Ich hatte die englische Sprache nämlich auch im Modul gelassen und möchte sie nach seinem letzten Post jetzt nicht einfach löschen, falls dann auch die Artikel des Beispielmandanten weg sind.

Kummer, vielleicht solltest Du noch irgendwo dazu schreiben, daß die Klasse nur 4 Navigationsebenen ausliest und abbildet (so, wie die Standard-Beispielnavigation ja auch).
Es ist ja aber dank deiner gründlichen Kommentierung schnell zu ändern, wenn man mehr braucht.

lg,
Suse
mayer_nl
Beiträge: 14
Registriert: Fr 27. Jul 2007, 08:31
Wohnort: Bad Rothenfelde
Kontaktdaten:

Beitrag von mayer_nl »

Hallo,
gibt es die Möglichkeit eine 4. und 5. Ebene einzubauen :?:
So einfach wie die 3. ist es leider nicht.
kmutx
Beiträge: 7
Registriert: Sa 3. Nov 2007, 00:35
Kontaktdaten:

Beitrag von kmutx »

Ich weiss nicht ob es schon zu spät ist oder ob ich es einfach nicht verstehe.....

ich habe nun die datei atelierq....clas...php in das cms/includes verzeichnis kopiert. und ein modul nur mit dem output aus der output.php erstellt. dieses über ein template einem container zugewiesen..... und nix klappt.

das ganze lesen hier im thread verwirrt mich noch umso mehr...... kann denn niemand mal alle nötigen schritte cronologisch zuzammenfassen? Bitte.....
Siegfried
Beiträge: 6
Registriert: Do 8. Mär 2007, 10:42
Kontaktdaten:

Na wenigstens noch einer, der's nicht versteht

Beitrag von Siegfried »

Also ich lese auch schon ein paar tage und versuche das modul einzubauen, aber ich kriege nicht die geringste reaktion aus dem ganzen. ich kann mich nur anschließen... Bitte
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

meistens liegt es nur an den indidzes. die oberste ebene hat eine 0, die zweite ebene eine 1 usw. um die erste ebene unterhalb der hauptnavigation anzuzeigen, ist der index 0 zu verwenden. probier das mal aus. das beispiel, das hier publiziert ist, ist nicht ideal.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
wewo
Beiträge: 45
Registriert: So 8. Aug 2004, 19:08
Wohnort: Graz
Kontaktdaten:

fehler bei cat ohne sub

Beitrag von wewo »

Hallo!
Zuerst danke für das Modul - schöne Arbeit!
Verwende das Modul für eine gesplittete Navigation, doch leider bekomme ich seltsame Fehler und kann mir nicht ganz erklären wo der Hund begraben ist. :roll:

Navigation_Hauptebene:

Code: Alles auswählen

<?php

cInclude('classes', 'class.aQnavigation.php');

$cApiClient = new cApiClient($client);
$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'idcat_hauptnavi'));


$aQnavigation->before(0,'<ul id="navigationmain">');
$aQnavigation->between(0, '');
$aQnavigation->after(0,'</ul>');
$aQnavigation->maskNormal(0, '<li><a href="{link}">{name1}</a></li>');
$aQnavigation->maskNormalSub(0, '<li><a href="{link}" class="sub">{name1}</a></li>');
$aQnavigation->maskSelected(0, '<li><a href="{link}" class="activ">{name1}</a></li>');
$aQnavigation->maskSelectedSub(0, '<li><a href="{link}" class="activ">{name1}</a></li>');


echo $aQnavigation->showNavigation(0);

?>
Navigation_Subebene:

Code: Alles auswählen

<?php

cInclude('classes', 'class.aQnavigation.php');
$cApiClient = new cApiClient($client);
$treeID = intval($cApiClient->getProperty('navigation', 'idcat_hauptnavi'));
$aQnavigation = new aQnavigation($treeID);

// Ausgabe 2. Stufe
$aQnavigation->before(         2, "\n\t<ul class='opensub'>");
$aQnavigation->after(          2, "\n\t</ul>\n");
$aQnavigation->between(        2,  "\n\t\t");
$aQnavigation->maskNormal(     2, "<li class='indented'><a href='{link}'>{name1}</a></li>"                );
$aQnavigation->maskSelected(   2, "<li class='indented active'><a href='{link}' class='active'>{name1}</a></li>" );

// Ausgabe 1. Stufe
$aQnavigation->before(         1, "\n<ul id='subnavigation'>\n");
$aQnavigation->after(          1, "\n</ul>\n");
$aQnavigation->between(        1, "\t");
$aQnavigation->maskNormal(     1, "\n<li><a href='{link}'>{name1}</a></li>"                                       );
$aQnavigation->maskSelectedSub(1, "\n<li class='more open'><a href='{link}' class='active'>{name1}</a>{sub}</li>" );
$aQnavigation->setSub(1, $aQnavigation->showNavigation(2));


echo  $aQnavigation->showNavigation(1);

?>
Die Kategorien sind zumeist entweder:
- Haupt
-- Sub
-- Sub
-- Sub
-- Sub
oder
- Haupt
-- Sub
--- SubSub
--- SubSub
-- Sub


Bei allen Menüs mit SubSub Ebene funktioniert alles Prima, nur wenn ich eine Sub Ebene !ohne! SubSub auswähle funktioniert das Menü leider nicht mehr.

Mal ein fehlerfreier Beispielcode für eine aktive SubSub Kategorie:

Code: Alles auswählen

<ul id='subnavigation'>

<li><a href='/neukunden/produkte/leadsgenerator/'>Leadsgenerator®</a></li>	
<li class='more open'><a href='/neukunden/produkte/socratesdatabase/' class='active'>Socratesdatabase®</a>
	<ul class='opensub'><li class='indented'><a href='/neukunden/produkte/socratesdatabase/vorteile/'>Vorteile</a></li>
		<li class='indented'><a href='/neukunden/produkte/socratesdatabase/beispiele/'>Beispiele</a></li>
		<li class='indented active'><a href='/neukunden/produkte/socratesdatabase/seminare/' class='active'>Seminare</a></li>

		<li class='indented'><a href='/neukunden/produkte/socratesdatabase/einsatzgebiete/'>Einsatzgebiete</a></li>
	</ul>
</li>	
<li><a href='/neukunden/produkte/voicegenerator/'>Voicegenerator®</a></li>	
<li><a href='/neukunden/produkte/salesturbo/'>Salesturbo®</a></li>
</ul>
Beispielcode aktive Level 0 Ebene (z.b: Kontakt) mit nur Subs (ohne SubSubs):

Code: Alles auswählen

<ul id='subnavigation'>

<li><a href='/neukunden/kontakt/anschrift/'>Anschrift</a></li>	

<li><a href='/neukunden/kontakt/callback/'>Callback</a></li>	
<li><a href='/neukunden/kontakt/kontaktformular/'>Kontaktformular</a></li>
</ul>
Und jetzt die fehlerhafte Ausgabe, wenn ich eine dieser Subs (callback) auswähle

Code: Alles auswählen

<ul id='subnavigation'>

<li><a href='/neukunden/kontakt/anschrift/'>Anschrift</a></li>	
<li class='more open'><a href='/neukunden/kontakt/callback/' class='active'>Callback</a>
	<ul class='opensub'></li>	
<li><a href='/neukunden/kontakt/kontaktformular/'>Kontaktformular</a></li>

</ul>
		<!-- content schon vom nächten modul..... -->
		<div class="content left bxl">	
			<h1>Callback Formular<br/>
</h1>
..
..
..
..

Was läuft denn da schief :?:
Es wird $aQnavigation->before( 2, "\n\t<ul class='opensub'>"); fälschlicher Weise gerufen aber $aQnavigation->after( 2, "\n\t</ul>"); nicht?? Und warum überhaupt der Sprung in die 2. Subebene?

HILFE :shock:

Wenn ich allerdings das Outputmodul der Subnavi wiefolgt ändere:

Code: Alles auswählen

<?php

cInclude('classes', 'class.aQnavigation.php');
$cApiClient = new cApiClient($client);
$treeID = intval($cApiClient->getProperty('navigation', 'idcat_hauptnavi'));
$aQnavigation = new aQnavigation($treeID);

// Ausgabe 2. Stufe
$aQnavigation->before(         2, "");
$aQnavigation->after(          2, "");
$aQnavigation->between(        2,  "\n\t\t");
$aQnavigation->maskNormal(     2, "<li class='indented'><a href='{link}'>{name1}</a></li>"                );
$aQnavigation->maskSelected(   2, "<li class='indented active'><a href='{link}' class='active'>{name1}</a></li>" );

// Ausgabe 1. Stufe
$aQnavigation->before(         1, "\n<ul id='subnavigation'>\n");
$aQnavigation->after(          1, "\n</ul><!-- after sub1 -->\n");
$aQnavigation->between(        1, "\t");
$aQnavigation->maskNormal(     1, "\n<li><a href='{link}'>{name1}</a></li>"                                       );
$aQnavigation->maskSelected(   1, "\n<li><a href='{link}' class='active'>{name1}</a></li>"                        );
$aQnavigation->maskSelectedSub(1, "\n<li class='more open'><a href='{link}' class='active'>{name1}</a>\n\t<ul class='opensub'>{sub}\n</ul>\n</li>" );
$aQnavigation->setSub(1, $aQnavigation->showNavigation(2));


echo  $aQnavigation->showNavigation(1);

?>
Läuft alles wieder normal...... steh ich am Schlauch was die Methoden before/after machen sollten?

Ciao
wewo
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

es wird immer zwischen menupunkten unterschieden, die noch unterpunkte haben und welchen, die eben keine haben. das musst du auch dann berücksichtigen, wenn du die gleiche ausgabe machen willst. du solltest also sowas haben:

Code: Alles auswählen

$aQnavigation->maskSelected(   2, "<li class='indented active'><a href='{link}' class='active'>{name1}</a></li>" ); 
$aQnavigation->maskSelectedSub(   2, "<li class='indented active'><a href='{link}' class='active'>{name1}</a></li>" ); 
sonst erfolgt ein aufruf einer maske, die nicht existiert.

ich hoffe, das löst dein problem.

gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Pepe G.
Beiträge: 26
Registriert: Mo 16. Aug 2004, 20:52
Kontaktdaten:

4. ebene - lösung gefunden?

Beitrag von Pepe G. »

mayer_nl hat geschrieben:Hallo,
gibt es die Möglichkeit eine 4. und 5. Ebene einzubauen :?:
So einfach wie die 3. ist es leider nicht.
Bei mir geht es auch nicht.
Ich würde mir gerne die 4. Ebene ausgeben lassen, doch es klappt leider nur bis zur 3. Ebene.

Ich habe die 3. Ebene kopiert, die 3 durch eine 4 ersetzt und
dann noch die "setSub" Zeile eingefügt.

Hat jemand eine Idee?

Hier der Output:

Code: Alles auswählen

<?php 

cInclude('frontend', 'includes/atelierq.navigation.class.inc.php'); 

$cApiClient = new cApiClient($client); 
$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'idcat_servicenavigation')); 

$aQnavigation->between(4, ''); 
$aQnavigation->maskNormal(4, '<div class="navthirdoff"><a target="_self" href="{link}">{name1}</a></div>'); 
$aQnavigation->maskSelected(4, '<div class="navthirdon"><a target="_self" href="{link}">{name1}</a></div>'); 
$aQnavigation->maskSelectedSub(4, '<div class="navthirdon"><a target="_self" href="{link}">{name1}</a></div>'); 

$aQnavigation->between(3, ''); 
$aQnavigation->maskNormal(3, '<div class="navthirdoff"><a target="_self" href="{link}">{name1}</a></div>'); 
$aQnavigation->maskSelected(3, '<div class="navthirdon"><a target="_self" href="{link}">{name1}</a></div>'); 
$aQnavigation->maskSelectedSub(3, '<div class="navthirdon"><a target="_self" href="{link}">{name1}</a></div>'); 
$aQnavigation->setSub(3, $aQnavigation->showNavigation(4)); 

$aQnavigation->between(2, ''); 
$aQnavigation->maskNormal(2, '<div class="navsecondoff"><a target="_self" href="{link}">{name1}</a></div>'); 
$aQnavigation->maskSelected(2, '<div class="navsecondon"><a target="_self" href="{link}">{name1}</a></div>'); 
$aQnavigation->maskSelectedSub(2, '<div class="navsecondon"><a target="_self" href="{link}">{name1}</a></div>{sub}'); 
$aQnavigation->setSub(2, $aQnavigation->showNavigation(3)); 

$aQnavigation->between(1, ''); 
$aQnavigation->maskNormal(1, '<div class="navfirstoff"><a target="_self" href="{link}">{name1}</a></div>'); 
$aQnavigation->maskSelected(1, '<div class="navfirstopen"><a target="_self" href="{link}">{name1}</a></div>'); 
$aQnavigation->maskSelectedSub(1, '<div class="navfirstopen"><a target="_self" href="{link}">{name1}</a></div>{sub}'); 
$aQnavigation->setSub(1, $aQnavigation->showNavigation(2)); 

echo $aQnavigation->showNavigation(1); 

?>
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

so sollte es gehen:

Code: Alles auswählen

$aQnavigation->between(3, '');
$aQnavigation->maskNormal(3, '<div class="navthirdoff"><a target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskSelected(3, '<div class="navthirdon"><a target="_self" href="{link}">{name1}</a></div>');
$aQnavigation->maskSelectedSub(3, '<div class="navthirdon"><a target="_self" href="{link}">{name1}</a>{sub}</div>');
$aQnavigation->setSub(3, $aQnavigation->showNavigation(4)); 
(3. ebene durch diesen code ersetzen. respl. {sub} an der richtigen stelle einfügen.)

gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Pepe G.
Beiträge: 26
Registriert: Mo 16. Aug 2004, 20:52
Kontaktdaten:

Beitrag von Pepe G. »

danke erstmal für deine antwort andreas,

klappt leider nicht.

das {sub} bzw. deinen teil habe ich ersetzt aber die 4. Ebene wird immer noch nicht angezeigt.

bei einem var_dump($aQnavigation);
taucht auch keine 4. Ebene auf.

kategorie & artikel alles ist online

hast du noch eine idee?

danke und grüße
pepe
derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Beitrag von derSteffen »

Hallo,

ich habe mal ein Frage, weil ich das gerade gelesen habe. Funktioniert die Navigation universell nicht in mehrsprachigen Versionen?

und ...

Kann ich dieses Modul in einem Template auch zweimal verwenden (für 2 Kategoriebäume)?

Vielen Dank
matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Beitrag von matt.loker »

Hi Kummer,
habe mal eine Frage.
Kann man den Include

Code: Alles auswählen

cInclude('frontend', 'includes/atelierq.navigation.class.inc.php');

$cApiClient = new cApiClient($client);
$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'idcat_mainnavigation'));
nicht aus dem eigentlichen Modul trennen und in ein neues eigenständiges Modul schmeißen und es dann an den Anfang noch vor den HTML-Code einbauen?
Bei mir ist es gerade so, dass bei abwechselnd mal die Ebene 1 des Hauptmenüs zuerst geladen wird und dann erst die anderen Ebenen und ein ander Mal die Ebenen 2-5 vor der Ebene 1 geladen wird. Das liegt am Design der Seite.

Nun müsste ich es so lösen, dass ich 2 verschiedene Layouts haben mit 2 unterschiedlichen Navigationsmodulen und zwar ein Modul indem der Include in der Ebene 1 passiert und ein anderes Modul in dem der Include erst in den Ebenen 2-5 geschieht.

Ich hoffe du kommst mir meiner Erklärung mit. Habe die gabe Sachen unnötig zu verkomplizieren :). Es würde deine Navi dadurch noch ein Stück felxibler machen da man dann nicht mehr auf die Reihenfolge, in der die Module eingebunden werden, achten müsste.

Grüße
Matt
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

matt.loker hat geschrieben:...nicht aus dem eigentlichen Modul trennen und in ein neues eigenständiges Modul schmeißen und es dann an den Anfang noch vor den HTML-Code einbauen?
das kann man auf jeden fall machen. ich sehe da keinerlei problem.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Beitrag von matt.loker »

Ich habe es jetzt doch auf der Design-Ebene lösen können aber es ist gut zu wissen, dass es geht :)
Dank dir!
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

mit folgender anweisung...

Code: Alles auswählen

$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'idcat_mainnavigation')); 
wird bloss die instanziierung vorgenommen. diese muss vor dem ersten gebrauch erfolgen, kann allerdings in ein separates modul ausgelagert werden oder sogar direkt in das layout integriert werden (das ja auch interpretiert werden wird).

es ist im übrigen auch möglich, die kategorie direkt im modul zu konfigurieren. dazu kann einfach folgende anweisung verwendet werden:

Code: Alles auswählen

$aQnavigation = new aQnavigation(1); 
wobei die 1 durch die zutreffend idcat zu ersetzen ist. das ist häufig einfacher, als jedesmal die kategorie als eingeschaft in contenido anlegen zu müssen.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Gesperrt