ConPresso4 Community

Fragen, Antworten, Diskussionen rund um das Content Management System ConPresso

 
Automatische Navigationsfunktion für CPO 4
Gehe zu Seite 1, 2, 3  Weiter
 
Neue Antwort erstellen    ConPresso4 Community Foren-Übersicht -> ConPresso 4
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
M. Klaucke
ConPresso-User


Anmeldungsdatum: 01.01.1970
Beiträge: 37

BeitragVerfasst am: 23.02.2005 17:02    Titel: Automatische Navigationsfunktion für CPO 4 Antworten mit Zitat

Hallo,

da hier doch des öfteren mal nach einer Navigation für ConPresso 4 nachgefragt wird, hier ein kurzes Beispiel wie man automatisch eine Navigation erstellen kann.

Prinzipiell besteht die ganz einfache Navigation aus z. Zeit 5 PHP-Funktionen, die an den entsprechenden Stellen z.Bsp. in der global_header.php eingebunden werden können. Die Navigation funktioniert bis zu drei Leveln, das sollte auch für anspruchsvolle Navigationsbäume reichen. Die Level werden in Unordered Lists ausgegeben (<ul><li></li></ul>), wobei Level 1 alleine und Level 2 + 3 ineinander verschachtelt sind.
Zur Verdeutlichung schaut aufder Testseite 'http://www.dav-weinheim.de/intern' nach, dort wird Level 1 horizontal und Level 2 + 3 untereinander ausgegeben. Sagt mehr als tausend Worte.

Bei den Funktionen handelt es sich um:

function getRubric() - ermittelt die Daten der aktuell ausgewählten Rubric,
function getParents() - ermittelt dir Schlüssel der (falls vorhanden) Eltern der aktiven Rubrik,
function printLevel1() - gibt eine Liste (<ul><li></li></ul>) mit den Level 1 - Einträgen aus, und markiert den aktiven Eintrag (oder das Elternelement zur aktiven Rubrik)
function printLevel2() - gibt eine Liste (<ul><li></li></ul>) mit den verschachtelten Level 2 + 3 - Einträgen aus, und markiert den aktiven Eintrag (oder das Elternelement zur aktiven Rubrik)
function printSitemap() - gibt eine verschachtelte Liste mit allen Rubriken des Navigationsbaumes aus

Die Funktionen sind in eine Datei 'navigation.inc.php' abgelegt, diese habe ich in der global_header.php-Beispieldatei erstmal in das Verzeichnis /_cfg gelegt. Das Verzeichnis kann beliebig geändert werden, dann muss allerdings auch der require_once() - Aufruf der navigation.inc.php in der global_header.php geändert werden.

Die Datei 'navigation.cfg.php' und das Beispiel für eine global_header.php könnt Ihr als Zip-File unter http://www.kolonna.de/download/navigation.zip herunterladen. Die global_header.php sollte die Anwendung der Funktionen ausreichend erklären, das Aussehen der einzelnen Menülevel müsst Ihr direkt in den einzelnen PHP-Funktionen ändern.
Betrachtet die Navigationsfunktionen als vorläufig und mit heißer Nadel gestrickt. Sie funtkionieren problemlos, sind aber nicht gerade elegant und schnell aus der Not geboren.

Viel Spaß damit!
Mathias
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7057

BeitragVerfasst am: 23.02.2005 17:33    Titel: Re: Automatische Navigationsfunktion für CPO 4 Antworten mit Zitat

Nach einem kurzen Blick auf den Code:

Sehe ich das richtig, daß Du dich bewußt auf 3 Levels beschränktst?

Ist keine Kritik, wollte nur nachhaken, weil man ja rekursiv beliebige Tiefen erreichen könnte (was ich aber noch nicht kapiert habe) und ich selbst bei meinen Menüs aus optischen und Platzgründen max. 4 Level einsetze.

Werde es bei nächster Gelegenheit mal einbauen...


_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
M. Klaucke
ConPresso-User


Anmeldungsdatum: 01.01.1970
Beiträge: 37

BeitragVerfasst am: 23.02.2005 17:41    Titel: Re: Automatische Navigationsfunktion für CPO 4 Antworten mit Zitat

Hallo Markus,

ja, die Einschränkung auf 3 Level ist bewußt vorgenommen. Weitergehende Tiefen wären problemlos durch Anpassung der Ausgabefunktionen möglich, aber da ich sie nicht brauche habe ich mir die Arbeit und die Kopfschmerzen beim Anblick der 'if'-Konstrukte erspart.

;-) Mathias

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
M. Klaucke
ConPresso-User


Anmeldungsdatum: 01.01.1970
Beiträge: 37

BeitragVerfasst am: 23.02.2005 17:53    Titel: Re: Automatische Navigationsfunktion für CPO 4 Antworten mit Zitat

Kleiner Hinweis:

in der Datei navigation.inc.php, Zeile 72 steht ein - Tag den ich übersehen hatte. Das Archiv ist nun bereinigt, der unnötige HTML-Tag gelöscht.

Mathias
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Francis
Gast





BeitragVerfasst am: 26.02.2005 08:30    Titel: Re: Automatische Navigationsfunktion für CPO 4 Antworten mit Zitat


 In der Datei "navigation.inc.php" ist der Browser in Zeile 46 beim Parsen haengengeblieben.
Nachdem ich nach dem if-statement die drei "echo" in geschweifte Klammern verpackt hatte, lief es dann.

php:
<?php
// printLevel1(array Navigationsarray, key Level1)
// gibt alle Elemente des Level 1 aus, und kennzeichnet das aktive Element

function printLevel1($navArray$actKey1) {
    
// echo "<ul id='iHeaderNavList'>\n";
    
foreach ($navArray as $key=>$value) {
        if ((
$value['level'] == 1) AND ($key == $actKey1))

            {                                                             
// eingefuegt
            
echo "<li id='iActiv'> <a href='../_rubric/index.php?rubric=".$value['rubric']['id']."'> \n";
            echo 
"<img src=\"../_images/navid/".$value['caption'].".gif\"> \n";
            echo 
" </a> \n";
            }                                                             
// eingefuegt
            
        
elseif (($value['level'] == 1) AND ($key != $actKey1))
            echo 
"<li><a href='../_rubric/index.php?rubric=".$value['rubric']['id']."'>".$value['caption']."</a></li>\n";
    }
    echo 
"</ul>\n";
}
?>

Nach oben
Francis
Gast





BeitragVerfasst am: 26.02.2005 08:46    Titel: Re: Automatische Navigationsfunktion für CPO 4 Antworten mit Zitat

Obiger Beitrag ist hinfaellig. Der von mir korrigierte "Fehler" ist ueberhaupt erst durch meine Aenderungen enstanden. Sorry. Francis

Nach oben
mkd
ConPresso-Checker


Anmeldungsdatum: 01.01.1970
Beiträge: 114

BeitragVerfasst am: 02.03.2005 16:49    Titel: Re: Automatische Navigationsfunktion für CPO 4 Antworten mit Zitat

moin,

ich bekomme folgende fehlermeldung:
Fatal error: Cannot redeclare getrubric() (previously declared in /home/jm/homepage/buchladen-langen/_cfg/navigation.inc.php:10) in /home/jm/homepage/buchladen-langen/_cfg/navigation.inc.php on line 10

MfG
Benny
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7057

BeitragVerfasst am: 02.03.2005 20:32    Titel: Re: Automatische Navigationsfunktion für CPO 4 Antworten mit Zitat

Poste doch mal die Datei, in der Du _cfg/navigation.inc.php eingebunden hast (vermutlich global_header.php)...


_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
M. Klaucke
ConPresso-User


Anmeldungsdatum: 01.01.1970
Beiträge: 37

BeitragVerfasst am: 03.03.2005 10:28    Titel: Re: Automatische Navigationsfunktion für CPO 4 Antworten mit Zitat

Hi Benny,

nach deiner Fehlermeldung vermute ich mal du versuchst die Funktion getrubric() zweimal einzubinden. Wie hast du die ganze Navigation in deiner (z.Bsp.) global_header.php eingebunden? Mit der entsprechenden Datei wäre eine Fehlersuche einfacher.

Mathias
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Matthias V
Modul-Entwickler


Anmeldungsdatum: 01.01.1970
Beiträge: 1251
Wohnort: Sondershausen

BeitragVerfasst am: 09.03.2005 15:39    Titel: Re: Automatische Navigationsfunktion für CPO 4 Antworten mit Zitat

Hallo M.Klaucke,

ist es möglich diese automatische Navigation zu benutzen, auch wenn man viele verschiedene Rubrikverzeichnisse benutzt, also nicht nur _rubric ?
Wie muss man in dem Fall die Datei navigation.inc.php anpassen ?

Gruß Matthias

_________________
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Matthias V
Modul-Entwickler


Anmeldungsdatum: 01.01.1970
Beiträge: 1251
Wohnort: Sondershausen

BeitragVerfasst am: 09.03.2005 16:35    Titel: Re: Automatische Navigationsfunktion für CPO 4 Antworten mit Zitat

Hallo ihr alle,

ich habe mir die Frage selber beantwortet.

Dazu muss in navigation.inc.php, die oben zum Link bereitsteht, folgendes ersetzt werden

Statt folgender Pfadangabe:
>>> href='../_rubric/index.php?rubric=.................und so weiter
kann man auch
>>> href='../".$directory."/index.php?rubric=.................und so weiter
oder
>>> href='".CPO_BASEDIR.$directory."/index.php?rubric=.................und so weiter
schreiben.

Denn dann funktionieren auch die Links, welche in einem anderen Rubrikverzeichnis als _rubric liegen.


Gruß Matthias

_________________
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Matthias V
Modul-Entwickler


Anmeldungsdatum: 01.01.1970
Beiträge: 1251
Wohnort: Sondershausen

BeitragVerfasst am: 09.03.2005 17:56    Titel: Re: Automatische Navigationsfunktion für CPO 4 Antworten mit Zitat

Hallo ihr alle,

mein Vorschlag funktioniert doch nicht.
Ich habe jetzt auch noch eine Weile rumexperimentiert, aber es will nicht.

Hat nicht jemand einen Vorschlag, wie es sonst gehen könnte, villeicht auf ähnliche Art und Weise wie ich es schon probiert habe?

Gruß Matthias

_________________
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jürgen Becker
Gast





BeitragVerfasst am: 09.03.2005 23:07    Titel: Re: Automatische Navigationsfunktion für CPO 4 Antworten mit Zitat

Eine Erweiterung von „rubric“ scheint mir sinnvoll, damit man den Namen des Rubric-verzeichnisses ermitteln kann.

In „_include/function.php“ zwei Ergänzungen in der Funktion „getNavigation“


function getNavigation()
{
$query = 'SELECT id, name, seclevel,directory ' <-------------------------hier das "directory" ergänzen!
.'FROM '.CPO_RUBRIC.' ';
DEBUG(1, $query, __FILE__, __LINE__);
$db = new DB;
$db->query($query);
$rubrics = array(0=>'');
while ($db->next_record()) {
$rubrics[$db->v('id')] = array('id'=>$db->v('id'), 'name'=>$db->v('name'), 'seclevel'=>$db->v('seclevel'), 'directory'=>$db->v('directory')); <------------------------hier ebenfalls den Teil directory ergänzen
}
……………...Rest unverändert.
Dann kann das zur Rubric gehörige Verzeichnis z.B. über $Key[’rubric’][’directory’] ermittelt werden

Nach oben
Matthias V
Modul-Entwickler


Anmeldungsdatum: 01.01.1970
Beiträge: 1251
Wohnort: Sondershausen

BeitragVerfasst am: 10.03.2005 11:19    Titel: Re: Automatische Navigationsfunktion für CPO 4 Antworten mit Zitat

Hallo Jürgen Becker,

bei mir funktioniert es noch nicht, wahrscheinlich hab ich ein Brett vorm Kopf.

In welcher Datei kann man $Key[’rubric’][’directory’] verwenden, um den Ordnernamen der entsprechenden Rubrik zu bekommen.
Ich möchte ja, wie schon weiter oben bemerkt in der Datei "navigation.inc.php" von M.Klaucke den Ordner der zugehörigen Rubrik dynamisch erzeugen.
Muss ich villeicht noch in der Datei, wo ich "getNavigation()" aufrufe noch einen weiteren Parameter an z.B. "printLevel1()" (in "navigation.inc.php" von M.Klaucke) übergeben?

Ich habe schon alle möglichen Übergaben von Parametern und in den unterschiedlichsten Dateien probiert.

Gruß Matthias

_________________
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jürgen Becker
Gast





BeitragVerfasst am: 11.03.2005 00:54    Titel: Re: Automatische Navigationsfunktion für CPO 4 Antworten mit Zitat

Hallo Matthias!

Nach der Ergänzung in der Funktion "getNavigation" kannst Du im Vorschlag von M. Klaucke diese Erweiterung direkt nutzen.

Beisp.: Hier erst das Original aus "navigation.inc.php"
function printLevel1($navArray, $actKey1) {
echo "<ul id='iHeaderNavList'>\n";
foreach ($navArray as $key=>$value) {
if (($value['level'] == 1) AND ($key == $actKey1))
Hier ändern------------------>echo "<li id='iActiv'><a href='../_rubric/index.php?rubric=".$value['rubric']['id']."'>".$value['caption']."</a></li>\n";
elseif (($value['level'] == 1) AND ($key != $actKey1))
Hier analog _rubric ersetzen------>echo "<li><a href='../_rubric/index.php?rubric=".$value['rubric']['id']."'>".$value['caption']."</a></li>\n";
}
echo "</ul>\n";


Hier die veränderte Zeile:
echo "<li><a href='../".$value['rubric']['directory']."/index.php?rubric=".$value['rubric']['id']." >".$value['caption']."</a></li>\n";

Die fest vorgegebene _rubric wird ersetzt durch den Eintrag aus navArray .$value['rubric']['directory'].
In den anderen Funktionen im Vorschlag Klauke entsprechned ändern.

Gruß Jürgen
Nach oben
Beiträge der letzten Zeit anzeigen:   
Neue Antwort erstellen    ConPresso4 Community Foren-Übersicht -> ConPresso 4 Alle Zeiten sind GMT + 2 Stunden
Gehe zu Seite 1, 2, 3  Weiter
Seite 1 von 3

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen