Dynamische Navigation in CPO4 erklaert:

Allgemeine Diskussionen zu ConPresso 4. Handhabung, Möglichkeiten, Verständnisfragen.
Achtung: Bitte benutzt wenn möglich die themenspezifischen Foren!
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Hi Claus,

das Problem mit der Nummerierung der Elemente ist, dass die Navigation-IDs nichts mit der "Reihenfolge" derselben zu tun haben. Die Navigation an sich ist ein recht kompliziertes "nested sets"-Modell. Wenn Du Interesse an dem Algorithmus hast, such einfach mal im Netz :).

Balu
Marko

getParent()

Beitrag von Marko »

@MarkusR: Leider läuft die Funktion getParent() ins Leere, wenn dem übergeordneten Navigationseintrag gar keine Rubrik zugeordnet ist, sondern ein "externer Link".(Bei den "Eigenschaften des Navigationselementes") Hintergrund ist, dass ich einer übergeordneten Rubrik keine Artikel zuweisen möchte. Stattdessen soll man direkt eine untergeordnete Rubrik angezeigt bekommen. Gibt es dafür eine andere Lösung als "externer Link" oder kann man die getParent() Funktion erweitern, so dass sie in diesem Fall den Namen des "rubriklosen" Navigationselementes zurückgibt?
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Tja... Navigation ohne Inhalt ist nicht so einfach mit ConPresso.

Du könntest aber doch einfach als externen Link mit target _self die Rubrik angeben (einfach die komplette URL), zu der gesprungen werden soll...

hab's gerade gestestet... geht einwandfrei und so, als wäre es so gedacht :wink:
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
Marko

Beitrag von Marko »

In den "Eigenschaften des Navigationselementes"? Genau das habe ich ja gemacht. Nur wird eben dann in untergeordneten Rubriken das Navigationselement nicht als Parent erkannt. Weil keine Rubrik zugeordnet ist.
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Werde doch mal bitte ausführlicher... daß dann keine Rubrik-ID zurückgeliefert wird, ist mir schon mal klar.
Aber welche Konsequenzen das für Dich hat, habe ich jetzt noch nicht kapiert... was fängst Du mit der Rubrik-ID an oder würdest Du anfangen wollen?

Ansonsten kann man sich natürlich auch den Namen zurückliefern lassen:

Code: Alles auswählen

function getParent($actRubric) { 
$navArray = getNavigation(); 
// erstmal die Rubrik selbst suchen 
$rubrik_left = ''; 
$rubrik_right = ''; 
$rubrik_level = ''; 
for ($ip;$ip<count($navArray);$ip++) { 
if ($actRubric == $navArray[$ip]['rubric']['id'] OR $actRubric == $navArray[$ip]['rubric']['name']) { 
$rubrik_left = $navArray[$ip]['l']; 
$rubrik_right = $navArray[$ip]['r']; 
$rubrik_level = $navArray[$ip]['level']; 
} 
} 
// Übergeordneten Eintrag suchen 
foreach ($navArray as $key=>$value) { 
if (($value['level'] == $rubrik_level-1) AND ($value['l'] < $rubrik_left) AND ($value['r'] > $rubrik_right)) { 
$parentName = $value['caption']; 
} 
} 
return $parentName; 
}
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
Marko

Beitrag von Marko »

Sorry. Das war wirklich etwas minimalistisch. Also ich benutze den Parentnamen und den Namen der aktuellen Rubrik um in einer Kopfzeile die Parentrubrik und die aktuelle Rubrik hintereinander anzuzeigen. Das Problem entsteht erst, wenn ich eine Unterrubrik aufrufe, die unter einem "rubriklosen" Navigationslelement hängt.

Code: Alles auswählen

$ParRubrik=getParent($aktRubrik);

if ($ParRubrik !== NULL AND $ParRubrik !== 'Rootobjekt') echo "<span class='header1'>".getParent($aktRubrik)." - </span>";

$navArray = getNavigation();
for ($ip;$ip<count($navArray);$ip++) {
if ($aktRubrik == $navArray[$ip]['rubric']['id'])
   {$RubrikName=$navArray[$ip]['rubric']['name'];
    echo '<span class="secondheader">'.$RubrikName.'<!--RubrikID: '.$navArray[$ip]['rubric']['id'].'--></span>'; }
}
Die Frage ist also, wie man an den Namen des Parent-Navigationselements rankommt, wenn getParent nichts zurückgibt.
Gast

Re: Dynamische Navigation in CPO4 erklaert:

Beitrag von Gast »

balu hat geschrieben: [...]
Die Navigation wird als verschachtelte <ul>-Liste ausgegeben. Diese laesst sich mit den passenden CSS-Definitionen in jeder erdenklichen Form formatieren.
[...]
Balu
Hallo,

das dynamische Menü funktioniert bei mir soweit, nur dass es hässlich ist wie die nacht. habe kurzfristig (selfhtml ...) nix zum Formatieren von <UL>-Listen mittels CSS gefunden. kann ich da bitte noch 1 .. 2 Hinweise oder Codeschnipsel bekommen?

danke und Gruß
Christian.
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 01:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal
Kontaktdaten:

Beitrag von Matthias V »

Hallo Christian,

ich habe erstmal alle Formatierungen von den Listen gelöscht und die Links als Blockelemente formatiert. diese benötigen dann noch eine exakte breitenangabe, damit der Link im IE auf voller Breite funktoniert und auch der hover-Effekt.

Code: Alles auswählen

ul, li { display: inline; margin: opx; padding: 0px; list-style: none; }
a, a:link, a:visited, a.active, a:hover { display: block; width: 200px; text-decoration: none; color: black; background-color: #AAAAAA;}
a:hover { background-color: yellow; color: red; }
li a { margin-left: 10px; width: 190px; }
li li a {margin-left: 20px; width: 180px; }
li li li a {margin-left: 30px; width: 170px; }
Das ist nur mal ins blaue geschrieben natürlich musst du überall noch was davorschreiben, damit diese Formatierungen nur für die Navigation gelten. Wie z.B. div#navi ul, div#navi li, falls du die Navigation in einem

Code: Alles auswählen

<div id="navi">.. Deine Navigation, z.B. <?php printnavigation(); ?> ... </div>
Hoffe kannst mit diesen Schnipseln was anfangen.

Kannst auch einfach die Profile von einigen Authoren im Forum anschauen und dann bei umgesetzten Projekten schauen, wie es dort umgesetzt ist.

Gruß Matthias
Zuletzt geändert von Matthias V am 27.01.2006 20:56, insgesamt 1-mal geändert.
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
dnimtsch

Beitrag von dnimtsch »

Code: Alles auswählen

ul { list-style-image:url(../images/plus.gif); }

li.active { list-style-image:url(../images/minus.gif); }

ul a:link { color: #000000; font-weight: bold; text-decoration: none; }
ul a:visited { color: #000000; font-weight: bold; text-decoration: none; }
ul a:hover { color: #000000; font-weight: bold;text-decoration: underline; }
http://www.nady.de/wbn/
Gast

Beitrag von Gast »

Hallo,

danke für Eure hilfreichen Antworten,
habe ich erst jetzt entdeckt.

Ich nutze nun doch das Modul von MarkusR, habe es erfolgreich an meine Bedürfnisse angepasst.

Jetzt möchte ich für Rubriken, die keine Artikel enthalten die "Unterrubriken" in der nächsten navigationsebene anzeigen lassen. habe dazu hier im Forum einen neuen Thread aufgemacht. Vielleicht könnt Ihr ja dort mal dazu Stellung nehmen.

Gruß
Christian.
krishu
ConPresso-User
Beiträge: 82
Registriert: 15.12.2005 09:51
Kontaktdaten:

Beitrag von krishu »

Hi,

habe etwas versucht, die Funktion printnavigation() für mein Vorhaben zu nutzen. Dazu wollte ich mir eine Liste aller aufgeklappten Rubriken innerhalb der aktuellen ertellen lassen und diese dann ausgeben. Irgendwie funktioniert die Geschichte mit der $parent nicht, selbst wenn ich dort "manuell" eine Rubriknummer eingebe und mich dann in diese "begebe".

Code: Alles auswählen

<?php printnavigation('',0,99,$cpoRubric['id'],true); ?>

<?php printnavigation('',0,99,13,true); ?>
Wo liegt mein Denkfehler?

Gruß
Christian.
Ich habe keine Ahnung. Leider.
Abendschnee
ConPresso-Newbie
Beiträge: 4
Registriert: 08.10.2010 09:04

Menü PlugIN

Beitrag von Abendschnee »

Warum gibt es ein rekursives Menü das auch eine mehrsprachige Site unterstützt nicht einfach als PlugIn fertig, so wie das bei allen OpenSource Systemen, zB Joomla oder WordPress, der Fall ist?

Überhaupt gibt es leider viel viel zu wenige PlugIns für ConPresso was mich mal wieder fast vom Einsatz abgebracht hätte, wäre da im Moment nicht die Anforderung nac einem klassischem CMS und keinem Blog.

Für ConPreso 3 hatte ich mir damals mal ein rekursives Menü selbst geschrieben, was für ein Aufwand.

Fertige mehrstufige und dynamische Menüsysteme sollten nun wirklich zur Standard Auslieferung gehören, braucht doch fast jeder.

Oder habe ich was verpasst?
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

ConPresso besitzt überhaupt kein PlugIn-System. Deshalb kann es auch keine PlugIns geben.
Und wenn du gerne ein Modul verwenden möchtest, dazu gibt es mod_menu von MarkusR / conpresso4.de

Aber ganz ehrlich: Eine Navigation mit printnavigation() ist doch eine wirklich einfache Sache!
Günther Ludwig
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Hi,

ich verstehe das Problem auch nicht so ganz. Eine Menüstruktur mit printNavigation() - oder in 4.1 per Tag ist doch komplett ohne irgendwelche Plugins machbar?

Klar, man muss CSS können, um das zu formatieren, aber das braucht man als Webmaster für den Rest der Seite doch auch.

Balu
Bartels.Schöne
ConPresso Support & Development
Antworten