Modul :: NavigationUniversell

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von stefkey » Do 20. Sep 2012, 11:30

okay, ich hab den Sinn verstanden. Aber es tut nicht.
Folgendes ist nun der Moduloutput

Code: Alles auswählen

<?php

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

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


/*
* Ausgabe 4. Stufe
*/
$aQnavigation->between(3, '');
$aQnavigation->maskNormal(3, '<li><a href="{link}" class="nav_4th">{name1}</a></li>');
$aQnavigation->maskNormalSub(3, '<li><a href="{link}" class="nav_4thsub">{name1}</a></li>{sub}');
$aQnavigation->maskSelected(3, '<li><a href="{link}" class="nav_4thaktiv">{name1}</a></li>');
$aQnavigation->maskSelectedSub(3, '<li><a href="{link}" class="nav_4thsubaktiv">{name1}</a><ul>{sub}</ul></li>');

/*
* Ausgabe 3. Stufe
*/
$aQnavigation->before(2, '<ul>');
$aQnavigation->after(2, '</ul>');
$aQnavigation->between(2, '');
$aQnavigation->maskNormal(2, '<li><a href="{link}" class="nav_3rd">{name1}</a></li>');
$aQnavigation->maskNormalSub(2, '<li><a href="{link}" class="nav_3rdsub">{name1}</a></li>{sub}');
$aQnavigation->maskSelected(2, '<li><a href="{link}" class="nav_3rdaktiv">{name1}</a></li>');
$aQnavigation->maskSelectedSub(2, '<li><a href="{link}" class="nav_3rdsubaktiv">{name1}</a><ul>{sub}</ul></li>');


$sub = $aQnavigation->showNavigation(2);
if (strlen($sub) > 100) {
    $aQnavigation->setSub(2, $sub);
}

/*
* hier erfolgt die ausgabe an den browser
*/
echo $aQnavigation->showNavigation(2);

?> 

wenn im Kategoriebaum nun keine 4. und 3. Ebene vorhanden ist soll das im Browser auch nichts ankommen. D.h.:

Code: Alles auswählen

<div id="subnavigation"></div>
jedoch erscheint:

Code: Alles auswählen

<div id="subnavigation"><ul> </ul></div>
Und es hat ein Leerzeichen zwischen den UL-Tags.

------------------------------------------------------------

Zwei Tests ob diese UL vom Modul kommen habe ich auch gemacht: 1. letzte Zeile des Moduls gelöscht -> Erfolg! -> kein ul-tag mehr
und alternativ die Zeilen

Code: Alles auswählen

$aQnavigation->before(2, '<ul>');
$aQnavigation->after(2, '</ul>'); 
gelöscht -> Erfolg! -> kein ul-tag mehr

----------------------------------------------------------------

Dein Vorschlag muss ja klappen, jedoch kenn ich mich mit den Befehlen und der Syntax leider nicht aus. Ich verstehe nicht was da in der if-Schleife passiert und ob das in der Zeile am Ende (Ausgabe an den Browser) auch berücksichtigt wird. Könntest du das nochmal überfliegen?

Code: Alles auswählen

$sub = $aQnavigation->showNavigation(2);
if (strlen($sub) > 100) {
    $aQnavigation->setSub(2, $sub);
}

/*
* hier erfolgt die ausgabe an den browser
*/
echo $aQnavigation->showNavigation(2);

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Modul :: NavigationUniversell

Beitrag von Spider IT » Do 20. Sep 2012, 11:37

stefkey hat geschrieben:

Code: Alles auswählen

$sub = $aQnavigation->showNavigation(2);
war bei mir aber

Code: Alles auswählen

$sub = $aQnavigation->showNavigation(3);
Du packst im Moment in Ebene 2 die Ebene 2 nochmal rein.

Das gleiche Stück Code kannst du auch bei der Ausgabe wieder einsetzen, dann aber

Code: Alles auswählen

$sub = $aQnavigation->showNavigation(2);
if (strlen($sub) > 10) { # 10 wegen '<ul> </ul>'
    echo $sub;
}
Dabei kannst du dann die before und after Teile wieder rein machen.

Gruß
René

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von stefkey » Do 20. Sep 2012, 12:05

okay, jetzt klappts! Dein Code muss eben in der Ausgabe stehen. Hab auch mal die Zahl getestet, es reicht eine 4 weil vermutlich nur "<ul>" in $sub drin steht.
Danke für deine Unterstützung und auch Geduld!

Code: Alles auswählen

$sub = $aQnavigation->showNavigation(2);
if (strlen($sub) > 4) { # 4 wegen '<ul>'
    echo $sub;
}
Warum da nun trotzdem Leerzeichen bleiben ist mir noch unklar, aber egal. (Vielleicht muss man das in der atelierq.navigation.class.inc.php korrigieren?!? )

Code: Alles auswählen

(Da sind lauter Leerzeichen im Quelltext (Firefox -> Seitenquelltext anzeigen))
<div id="subnavigation">     



</div>
Und warum dein Code in meiner 3. Ebene auch steht verstehe ich auch nicht aber ich lass es mal so stehen:

Code: Alles auswählen

/*
* Ausgabe 3. Stufe
*/
$aQnavigation->before(2, '<ul>');
$aQnavigation->after(2, '</ul>');
$aQnavigation->between(2, '');
$aQnavigation->maskNormal(2, '<li><a href="{link}" class="nav_3rd">{name1}</a></li>');
$aQnavigation->maskNormalSub(2, '<li><a href="{link}" class="nav_3rdsub">{name1}</a></li>{sub}');
$aQnavigation->maskSelected(2, '<li><a href="{link}" class="nav_3rdaktiv">{name1}</a></li>');
$aQnavigation->maskSelectedSub(2, '<li><a href="{link}" class="nav_3rdsubaktiv">{name1}</a><ul>{sub}</ul></li>');
$sub = $aQnavigation->showNavigation(3);
if (strlen($sub) > 100) {
    $aQnavigation->setSub(2, $sub);
}
Danke für deine Unterstützung und auch Geduld!

os-im
Beiträge: 28
Registriert: Mo 1. Dez 2008, 10:31
Kontaktdaten:

Keine Navigation mehr in einem Mandanten

Beitrag von os-im » Do 10. Jan 2013, 14:14

Hallo,

wir setzen das Modul seit langem in einem Multimandantensystem ein, bislang ohne Probleme, nur heute ist aufgefallen, dass in einem Mandanten plötzlich keine Navigation mehr vorhanden ist.

Wir haben das Modul auch zerstückelt in 2 Module, die an einer Stelle die erste Ebene anzeigt (was auch noch funktioniert) und an anderer Stelle die 2-3. Ebene. Die 1. Ebene hat nur einen Punkt, der also automatisch immer aktiv ist (soll halt so sein .. ).

In einem 2. Mandanten der absolut identisch das gleiche Setup hat, und auch die identische Kategorie/Artikel Struktur wird die Menustruktur sauber angezeigt.

Ich habe schon Stunden damit verbracht, in der atelierq.navigation.class.inc.php debug-output einzutragen, aber ich komme nicht weiter im Moment.

Interessanterweise haben wir in 2 anderen Systemen (DEV und QA), die Abbilder von Produktion sind, überhaupt keine Probleme nur natürlich im PROD system muss dieser Fehler auftauchen...

Ich wäre wirklich dankbar, wenn mir jemand einen tip geben könnte, was ich noch schauen/machen könnte.

Contenido Version 4.8.15 auf Apache/2.2.3 (CentOS) mit php 5.2.4

os-im
Beiträge: 28
Registriert: Mo 1. Dez 2008, 10:31
Kontaktdaten:

Bisheriges Debugging

Beitrag von os-im » Do 10. Jan 2013, 14:21

Um mal zu beschreiben, was ich bislang versucht habe, bzw ein Phänomen welches ich mir nicht erklären kann ...

Wenn ich in der navigation.class.inc.php in der function showNavigation am ende ein wenig "debugge" kann ich mir die Navigationspunkte, die dort angezeigt werden sollten, ausgeben lassen. Eigentlich genau das, was am ende im return stehen sollte.

Was wir dann sehen, sind die Unterpunkte der 3. Ebene, was mir bei dem Output allerdings fehlt, sind die Kategorien, in denen die 3. Ebene sein sollte, sprich Ebene 2 wird verschluckt .. zumindest sieht es für mich/uns so aus.

victor
Beiträge: 70
Registriert: Mo 27. Jan 2003, 08:54
Wohnort: Kassel
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von victor » Di 26. Feb 2013, 13:39

Hat jemand schon Erfahrung mit der Navigation und contenido Version 4.8.18. Habe das Modul in 4.8.12 - 4.8.15 laufen, da läuft es mit dem dementsprechenden Einstellungen super. Bei 4.8.18. wird leider nichts ausgegeben.

Server Betriebssystem Apache/2.2.22
PHP Datenbankerweiterung mysql
Datenbankserver-Version 5.5.28-log
Installierte PHP-Version 5.2.17

LG Victor
"Niemand weiss mehr als alle zusammen"

Faar
Beiträge: 1497
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Keine Navigation mehr in einem Mandanten

Beitrag von Faar » Mo 4. Mär 2013, 16:17

os-im hat geschrieben: ...wir setzen das Modul seit langem in einem Multimandantensystem ein, bislang ohne Probleme, nur heute ist aufgefallen, dass in einem Mandanten plötzlich keine Navigation mehr vorhanden ist.
Contenido Version 4.8.15 auf Apache/2.2.3 (CentOS) mit php 5.2.4
Hi, die Navigation Universell funktioniert prinzipiell sehr gut und zuverlässig.
Nur kann es sein, dass die Kategorien nicht zuverlässig sind und dann die Navigation durcheinander gerät.
Es gab einen Bug in älteren Systemen der die con_cat Tabelle verfälscht hat und diese Fehler werden auch bei Updates mitgeschleppt, weil die Tabelle nie repariert wird.
Das muss von Hand gehen, die Reihenfolge der Kategorien in der Tabelle zu kontrollieren.
So kam es z.B. vor, dass eine Kategorie des Mandanten 1 eine Folgekateorie aus Mandant 3 angegeben hatte, was nicht sein darf.
Das kann man gut vergleichen, indem man die catid in der Artikelübersicht mit den Einträgen in der con_cat vergleicht.

Ansonsten, Navigation Universell funktioniert prinzipiell, aber der Mandanteneintrag für die Startkategorie (von wo aus der Menübaum anfängt) muss sein und im Modul-Code natürlich die richtige Fortführung.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Faar
Beiträge: 1497
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von Faar » Mo 4. Mär 2013, 16:25

victor hat geschrieben:Hat jemand schon Erfahrung mit der Navigation und contenido Version 4.8.18. Habe das Modul in 4.8.12 - 4.8.15 laufen, da läuft es mit dem dementsprechenden Einstellungen super. Bei 4.8.18. wird leider nichts ausgegeben.

LG Victor
Ja, in mehreren Projekten, läuft super.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Faar
Beiträge: 1497
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von Faar » Mo 4. Mär 2013, 16:30

Ich poste mal meinen angepassten Code der NavigationUniversell hier rein, der in einer Installation und ähnlich in mehreren Installationen läuft.
zu beachten ist, dass diese Navigation in drei einzelne Navigationsmodule getrennt ist (siehe Trennlinie ----- ), die an verschiedenen Stellen des Layout platziert werden können.

Natürlich sollte diese Datei hier auch im Verzeichnis /cms liegen:
includes/atelierq.navigation.class.inc.php

Code: Alles auswählen

<?php
// im System abgespeichert
//cInclude('classes', 'atelierq.navigation.class.inc.php');
// im Mandant abgespeichert
cInclude('frontend', 'includes/atelierq.navigation.class.inc.php');
cInclude("classes", "class.client.php");
$cApiClient = new cApiClient($client);
// Aus Mandanten-Einstellungen die Kategorie-ID holen (idcat), von der aus das Menü beginnt
$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'idcat_subnavigation'));
// Alternativ cat_id direkt eingeben
// $aQnavigation = new aQnavigation('1');

/*
* Ausgabe 1. Stufe
*/
$aQnavigation->before(0, '<ul>');
$aQnavigation->after(0, '</ul>');
$aQnavigation->between(0, '');
$aQnavigation->maskNormal(0, '<li class="navi"><a href="{link}" class="navi">{name1}</a></li>');
$aQnavigation->maskNormalSub(0, '<li class="navi sub"><a href="{link}" class="navi sub">{name1}</a><ul class="subnavigation">{sub}</ul></li>');
$aQnavigation->maskSelected(0, '<li class="navi aktiv"><a href="{link}" class="navi aktiv">{name1}</a></li>');
$aQnavigation->maskSelectedSub(0, '<li class="navi subaktiv"><a href="{link}" class="navi subaktiv">{name1}</a><ul class="subnavigation">{sub}</ul></li>');

/*
* hier erfolgt die ausgabe an den browser
*/
echo $aQnavigation->showNavigation(0);

?>
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<?php
// im System abgespeichert
//cInclude('classes', 'atelierq.navigation.class.inc.php');
// im Mandant abgespeichert
cInclude('frontend', 'includes/atelierq.navigation.class.inc.php');
cInclude("classes", "class.client.php");
$cApiClient = new cApiClient($client);
// Aus Mandanten-Einstellungen die Kategorie-ID holen (idcat), von der aus das Menü beginnt
$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'idcat_subnavigation'));
// Alternativ cat_id direkt eingeben
// $aQnavigation = new aQnavigation('1');

/*
* Ausgabe 2. Stufe
*/
$aQnavigation->before(1, '<ul>');
$aQnavigation->after(1, '</ul>');
$aQnavigation->between(1, '');
$aQnavigation->maskNormal(1, '<li class="navi sub"><a href="{link}" class="navi sub">{name1}</a></li>');
$aQnavigation->maskNormalSub(1, '<li class="navi subsub"><a href="{link}" class="navi subsub">{name1}</a><ul class="subsubnavigation">{sub}</ul></li>');
$aQnavigation->maskSelected(1, '<li class="navi subaktiv"><a href="{link}" class="navi subaktiv">{name1}</a></li>');
$aQnavigation->maskSelectedSub(1, '<li class="navi subsubaktiv"><a href="{link}" class="navi subsubaktiv">{name1}</a><ul class="subsubnavigation">{sub}</ul></li>');


/*
* hier erfolgt die ausgabe an den browser
* mit unterdrückung der Ausgabe bei leerem inhalt
*/
if($aQnavigation->navigationEmpty(1)==false)echo $aQnavigation->showNavigation(1);

?>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<?php
// im System abgespeichert
//cInclude('classes', 'atelierq.navigation.class.inc.php');
// im Mandant abgespeichert
cInclude('frontend', 'includes/atelierq.navigation.class.inc.php');
cInclude("classes", "class.client.php");
$cApiClient = new cApiClient($client);
// Aus Mandanten-Einstellungen die Kategorie-ID holen (idcat), von der aus das Menü beginnt
$aQnavigation = new aQnavigation($cApiClient->getProperty('navigation', 'idcat_subnavigation'));
// Alternativ cat_id direkt eingeben
// $aQnavigation = new aQnavigation('1');

/*
* Ausgabe 3. Stufe
*/
$aQnavigation->before(2, '<ul>');
$aQnavigation->after(2, '</ul>');
$aQnavigation->between(2, '');
$aQnavigation->maskNormal(2, '<li class="navi subsub"><a href="{link}" class="navi subsub">{name1}</a></li>');
$aQnavigation->maskNormalSub(2, '<li class="navi subsubsub"><a href="{link}" class="navi subsubsub">{name1}</a></li>{sub}');
$aQnavigation->maskSelected(2, '<li class="navi subsubaktiv"><a href="{link}" class="navi subsubaktiv">{name1}</a></li>');
$aQnavigation->maskSelectedSub(2, '<li class="navi subsubsubaktiv"><a href="{link}" class="navi subsubsubaktiv">{name1}</a></li>');

/*
* hier erfolgt die ausgabe an den browser
*/
echo $aQnavigation->showNavigation(2);

?>
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Re: Modul :: NavigationUniversell

Beitrag von stefkey » So 7. Dez 2014, 22:19

Hallo,

ich nutze das NavigationUniversell Modul sehr gerne. Nun stehe ich vor einem Problem. Ich möchte gerne - wenn möglich ohne 2 verschiedene Templates - in einem Block die 2. Navigationsebene sehen. Wenn ich nun auf einen NaviPunkt der 2. Ebene klicke der noch eine 3. Navi-Ebene beinhaltet sollte in Navi-Box nur noch der eine Navipunkt der 2. Ebene und alle Punkte der 3. Ebene zu sehen sein. Also inaktiven Nazipunkte der 2. Ebene verschwinden.
Müsste das mit entsprechender Modulkorrektur möglich sein?

Gesperrt