@Balu: Kurzinfo zur Navigationsfunktion

Allgemeine Diskussionen zu ConPresso 4. Handhabung, Möglichkeiten, Verständnisfragen.
Achtung: Bitte benutzt wenn möglich die themenspezifischen Foren!
Antworten
Martin
ConPresso-User
Beiträge: 96
Registriert: 01.01.1970 01:00

@Balu: Kurzinfo zur Navigationsfunktion

Beitrag von Martin »

Hallo Balu,

es wäre supernett, wenn du hier eine Minianleitung zur Nutzung der Navigationsfunktionen in einer CPO4-Site schreiben würdest.

So ca. 8 - 10 Sätze würden ja wahrscheinlich reichen, damit ein erfahrener Conpresso-Schrauber ;-) seine ersten Gehversuche in dem Thema starten kann.

Maverick
ConPresso-User
Beiträge: 71
Registriert: 01.01.1970 01:00
Hat sich bedankt: 2 Mal

Re: @Balu: Kurzinfo zur Navigationsfunktion

Beitrag von Maverick »

Ja, das währe wirklich toll.

Gruss Maverick
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Re: @Balu: Kurzinfo zur Navigationsfunktion

Beitrag von balu »

Also gut, dann will ich das mal versuchen. Allerdings kann es sein, dass es hier noch kleinere Aenderungen/Ergaenzungen geben wird.

Die Grundlage der Navigation ist die Funktion getNavigation(). Diese liefert ein mehrdimensionales Array zurueck, mit dem man die Navigation aufbauen kann. Dieses Array kann als Tabelle der Navigationselemente angesehen werden.

Eine "Zeile" in diesem Array entspricht einem Eintrag in der Navigation. In dieser Zeile sind die folgenden Werte gespeichert:

ID: ID des Navigationselementes
l: Links (Erklaerung siehe unten )
r: Rechts (Erklaerung siehe unten)
level: die Ebene in der sich dieses Navigationselement befindet
childs: wie viele Kindknoten dieses Element hat
caption: die Bezeichnung des Elementes
navigation: Array mit Daten bei einer externen URL
rubric: Array mit Daten bei Auswahl einer Rubrik

Die Werte Links und Rechts basieren auf dem Nested-Sets-Modell, das fuer die Darstellung des Baumes benutzt wird. Das ganze kommt aus der Mengenlehre und ist ziemlich kompliziert, aber fuer hauptsaechlich lesende Zugriffe sehr performant, da rekursive Datenbank-Abfragen vermieden werden (siehe auch <http://www.develnet.org/36.html>). Fuer Euch ist hauptsaechlich interessant, dass ein Kindknoten immer l- und r-Werte hat, die zwischen Links und Rechts des Elternknotens stehen.

Die beiden Arrays navigation und rubric haben je nach Einstellung die folgenden Werte:

navigation:
externalURL: URL auf eine externe Seite
externalURLTarget: das Target der URL

rubric:
id: ID der aufzurufenden Rubrik
name: Name der Rubrik
seclevel: Sicherheitsstufe der Rubrik (offen, personalisiert, geschlossen)

Eine ganz einfache Anzeige der Namen der Navigationselemente kann dann also z.B. so aussehen:

<?php
define('CPO', true);
require_once('_include/common.inc.php');

$nav = getNavigation();

foreach ($nav as $k=>$v) {
printf('<div style="padding-left: %dem;">', ($v['level']-1)*3); // hier wird die Einrueckung mittels padding gemacht
printf('%s (Level: %d; Kinder: %d; Links: %d; Rechts: %d)',
$v['caption'],
$v['level'],
$v['childs'],
$v['l'],
$v['r']
);
printf('</div>');
}
?>

Da das ganze so nur schwer zu erklaeren ist, wollen wir ein paar Beispiele zur Verfuegung stellen, die verschiedene Navigations-Arten nachbauen.

Wenn Ihr Fragen habt, fragt einfach hier...

Balu
Bartels.Schöne
ConPresso Support & Development
Maverick
ConPresso-User
Beiträge: 71
Registriert: 01.01.1970 01:00
Hat sich bedankt: 2 Mal

Re: @Balu: Kurzinfo zur Navigationsfunktion

Beitrag von Maverick »

Hallo Blau

Vielen Dank. Wenn mann beim require noch ein "../" vor den pfad setzt, kann das script gleich so z.B. in die "global_header.php" eingefügt werden.

Wer mal ein wenig mit der Navi experimentieren.

Gruss Maverick
Martin
ConPresso-User
Beiträge: 96
Registriert: 01.01.1970 01:00

Re: @Balu: Kurzinfo zur Navigationsfunktion

Beitrag von Martin »

Hallo Balu,

genau so habe ich mir das gedacht - SUPER - und vielen Dank für die Info - ich werde mal damit experimentieren.

MBellinger

Re: @Balu: Kurzinfo zur Navigationsfunktion

Beitrag von MBellinger »

Hallo Balu,
habe ich das alles richtig verstanden oder ist das noch nix für Nichtprogrammierer.
Ich hab noch nicht verstanden, wie ich hier eine Navigation erzeugen kann.

Danke für (kurze) Rückmeldung.

freundliche Grüße
Michael
StefanRHRO

Re: @Balu: Kurzinfo zur Navigationsfunktion

Beitrag von StefanRHRO »

Ich denke mal für nicht Programmierer ist das gar nichts im Moment, oder man wartet ein bisschen ab und übt sich in Copy & Paste, aber ich denke mal das die Jungs sich da noch was einfallen lassen auch für die jenigen, die mit PHP nichts am Hut haben.
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Re: @Balu: Kurzinfo zur Navigationsfunktion

Beitrag von balu »

Hallo Ihrs,

das stimmt natuerlich. Im Moment ist es so, dass die Navigationen tatsaechlich nur von Programmierern geschafft werden kann. Wir haben hier lange ueberlegt, ob wir dazu ebenfalls eine Option im Frontend schaffen sollten, die die Generierung von einfachen Navigationen ermoeglicht (und haben das auch noch auf unserer Liste stehen).

Allerdings sind die Navigationen oft so kompliziert (mehrstufig, Anzeige des ersten Levels oben waagerecht, Unternavigation links senkrecht, etc.) das wir uns fuer die "programmiererische" Variante entschieden haben, die genau diese Flexibilitaet bietet. Man kann dann sogar dynamisch Grafiken generieren lassen, usw. was ueber ein reines Frontend nur schwer durchzufuehren waere.

Es ist aber auf jeden Fall geplant einige Beispiele fuer Navigationen zu liefern, die sehr detalliert dokumentiert werden, so dass man dort schnell mit kleinen Anpassungen eine eigene Navigation raus machen kann.

Balu
Bartels.Schöne
ConPresso Support & Development
Kerstin AMN
ConPresso-User
Beiträge: 27
Registriert: 01.01.1970 01:00

Re: @Balu: Kurzinfo zur Navigationsfunktion

Beitrag von Kerstin AMN »

Hallo zusammen,

nun sind ja nach der obigen Diskussion wieder ein paar Monate verstrichen. Gibt es inzwischen schon mehr Beispiele? Das wäre super. Auch eine Seite eines Benutzers, wo man mal sehen könnte, was die Leute so alles zaubern wäre gut.

Danke!
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Re: @Balu: Kurzinfo zur Navigationsfunktion

Beitrag von balu »

Hallo Kerstin,

wir erstellen selber gerade erst die ersten Navigationen mit dieser Funktion. Zum endueltigen Release wird es dann auch ein paar mehr Beispiele geben...

Balu
Bartels.Schöne
ConPresso Support & Development
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7361
Registriert: 01.01.1970 01:00
Hat sich bedankt: 110 Mal
Danksagung erhalten: 933 Mal
Kontaktdaten:

Re: @Balu: Kurzinfo zur Navigationsfunktion

Beitrag von MarkusR »

Balu hat geschrieben:
"Die Werte Links und Rechts basieren auf dem Nested-Sets-Modell, das fuer die Darstellung des Baumes benutzt wird. Das ganze kommt aus der Mengenlehre und ist ziemlich kompliziert, aber fuer hauptsaechlich lesende Zugriffe sehr performant, da rekursive Datenbank-Abfragen vermieden werden (siehe auch http://www.develnet.org/36.html). Fuer Euch ist hauptsaechlich interessant, dass ein Kindknoten immer l- und r-Werte hat, die zwischen Links und Rechts des Elternknotens stehen. "

Menschenskind...! ;o)

Mit diesem "nested modell" habt ihr aber wirklich was ins Nest gelegt! Die Rubikeigenen Angaben, die getNavigation() hergibt, lassen sich ganz prima auswerten, wenn man das Array zerlegt hat. Aber die verschiedenen Verwandschaftsbeziehungen, die ich brauche, um kolabierende (aufklappende) Menüs zu bauen (wenn ich mal von ul-css-js-Lösungen absehe), haben mir jetzt ganz schöne Kopfschmerzen bereitet. Am Ende habe ich das Array sogar rückwärts durchgearbeitet, aber nun steht das erste modulare Menü ;o)
Am Ende haben sich ein paar doch sehr einfache Lösungen aus dem "nested"-Modell ergeben, die einige zuerst entwickelte Funktionen wieder überflüssig machten...
Da ich es für das kommende mod_menu für CP4 gebastelt habe, hilft es wenig, wenn ich jetzt schon was hier poste, da die Modulschnittstelle noch aussteht und man es derzeit nur im "Handbetrieb" ins System einbauen kann.

Ich werde in Kürze mal die Modulseite exemplarisch parallel als CP4-Version laufen lassen und dort das Menü weiterentwickeln!

Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Antworten