Menü um einen festen Menüpunkt erweitern

Wie verwendet man Templates oder erstellt Navigationen und passt diese an.

Menü um einen festen Menüpunkt erweitern

Beitragvon snaft » 6. Mai 2009, 13:00

Hallo alle zusammen!

Ich benutze folgendes Navi-Template unter REX 4.1:

Code: Alles auswählen
<?php


/*
Menue Template - Position per Meta Infos

-----------------------------------------
$vm = Vertikales Menue
$bm = Bottom Menue
$hm = Horizontales Menue
$tm = Top Menue
-----------------------------------------

*/


$PATH = explode("|",$this->getValue("path").$this->getValue("article_id")."|");

$path1 = $PATH[1];
$path2 = $PATH[2];
$path3 = $PATH[3];
$path4 = $PATH[4];
$path5 = $PATH[5];

// Root Kats rausholen

foreach (OOCategory::getRootCategories() as $cat) {

$catId = $cat->getId();
$catUrl = $cat->getUrl();
$catName = $cat->getName();

if ($cat->isOnline(true)) {

$lev1Size = sizeof($cat->getChildren());
$cp = explode('|', $cat->getValue('cat_MenuePosition'));
// top, horizontal, vertikal, bottom


// Top Menue ----------------------------------

foreach ($cp as $catPos) {
if($catPos == "oben") {
if ($catId == $path1) {
$tm .= '<li><a href="'.$catUrl.'"><strong>'.$catName.'</strong></a></li>';
} else {
$tm .= '<li><a href="'.$catUrl.'">'.$catName.'</a></li>';
}
}
}


// Horizontal Menue ---------------------------

foreach ($cp as $catPos) {
if($catPos == "rechts") {
if ($catId == $path1) {
$hm .= '<li><a href="'.$catUrl.'"><strong>'.$catName.'</strong></a></li>';
} else {
$hm .= '<li><a href="'.$catUrl.'">'.$catName.'</a></li>';
}
}
}


// Vertikales Menue ---------------------------

foreach ($cp as $catPos) :
if($catPos == "links") {
if ($catId == $path1) {
$vm .= '<li><a href="'.$catUrl.'"><strong>'.$catName.'</strong></a>';
} else {
$vm .= '<li><a href="'.$catUrl.'">'.$catName.'</a>';
}

if ($lev1Size == "0") $vm .= '</li>';
}
endforeach;


// Unterkategorien Vertikales Menue -----------
if ($catId == $path1) {
if ($lev1Size != "0") {
$vm .= '<li><ul class="zwo">';

foreach ($cat->getChildren() as $vert2):
if ($vert2->isOnline(true)) {
if ($vert2->getId() == $path2) {
$vm .= '<li><a href="'.$vert2->getUrl().'"><strong>'.$vert2->getName().'</strong></a></li>';
} else {
$vm .= '<li><a href="'.$vert2->getUrl().'">'.$vert2->getName().'</a></li>';
}
}
endforeach;

$vm .= '</ul></li>';

}
}


// Bottom Menue -------------------------------

foreach ($cp as $catPos) {
if($catPos == "unten") {
if ($catId == $path1) {
$bm .= '<li><a href="'.$catUrl.'"><strong>'.$catName.'</strong></a></li>';
} else {
$bm .= '<li><a href="'.$catUrl.'">'.$catName.'</a></li>';
}
}
}


}
}

// Ausgabe Top Menu
$topMenu .= '<ul>';
$topMenu .= $tm;
$topMenu .= '</ul>';

// Ausgabe Horizontal Menu
$vertikalMenu .= '<ul>';
$vertikalMenu .= $vm;
$vertikalMenu .= '</ul>';

// Ausgabe vertikal Menu
$horizontalMenu .= '<ul>';
$horizontalMenu .= $hm;
$horizontalMenu .= '</ul>';

// Ausgabe Bottom Menu
$bottomMenu.= '<ul>';
$bottomMenu .= $bm;
$bottomMenu .= '</ul>';

?>


Nun habe ich dazu eine Frage:

Wie kann ich in einem Unterpunkt des vertikalen Menüs einen neuen Menüpunkt anlegen.
Normalerweise würde ich ja nur eine neue Kategorie mit einem Startartikel anlegen und gut ist.
Geht aber nicht, da ich nicht auf eine Seite im eigentlichen Sinne linken muss, sondern wie folgt:
Code: Alles auswählen
http://XXXXX.de/index.php?article_id=156&start=18


Es geht um das start=18, welches von einem Newsmodul generiert wird, und ich somit direkt aus dem Hauptmenu auf das Archiv(das ist dieser Link) verlinken will.

So, das war's. Hat mich jemand verstanden? Und kann mir auch noch weiterhelfen?

Beste Grüße,
Marc
Ich hasse Leute, die mitten im Satz.
Benutzeravatar
snaft
 
Beiträge: 198
Registriert: 3. Mai 2007, 14:47
Wohnort: Hamburgo

Beitragvon nente » 6. Mai 2009, 13:45

sollte in etwa so funktionieren ([LINKNAME] durch einen beliebigen String ersetzen):

Code: Alles auswählen
$vertikalMenu .= '<ul>';
$vertikalMenu .= $vm;
$vertikalMenu .= sprintf("<li><a href=\"%1\$s\">[LINKNAME]</a></li>\n", rex_getUrl(156, $REX['CUR_CLANG'], "start=18"));
$vertikalMenu .= '</ul>'
nente
 
Beiträge: 46
Registriert: 25. Apr 2007, 12:49

Beitragvon snaft » 6. Mai 2009, 14:27

Hallo!

Das sieht für den Anfang klasse aus. Nur habe ich ein Problem damit: Es wird auf folgende URL verlinkt:
Code: Alles auswählen
http://www.XXXXX.de/156-0-NoName.html?=18


Und das geht ins Leere.

Ich habe das redaxoeigene Modrewrite aktivert. Kann es daran liegen?

Außerdem hatte ich noch was vergessen. Es wäre optimal, wenn dieser Link erst im submenu(2.Ebene) des vertikalen Menüs auftauchen würde. Falls das so einfach nicht machbar ist, sollte es nicht so schlimm sein.

Beste Grüße,
Marc
Ich hasse Leute, die mitten im Satz.
Benutzeravatar
snaft
 
Beiträge: 198
Registriert: 3. Mai 2007, 14:47
Wohnort: Hamburgo

Beitragvon nente » 6. Mai 2009, 15:48

Hi Marc,

snaft hat geschrieben:Das sieht für den Anfang klasse aus. Nur habe ich ein Problem damit: Es wird auf folgende URL verlinkt:
Code: Alles auswählen
http://www.XXXXX.de/156-0-NoName.html?=18


Und das geht ins Leere.

Ich habe das redaxoeigene Modrewrite aktivert. Kann es daran liegen?

Hm, scheinbar wird "start" als parameter geschluckt. Hast Du eine Url wo ich mir das mal anschauen kann? Bei mir Funktioniert die Ausgabe tadellos (4.2er)

snaft hat geschrieben:Außerdem hatte ich noch was vergessen. Es wäre optimal, wenn dieser Link erst im submenu(2.Ebene) des vertikalen Menüs auftauchen würde. Falls das so einfach nicht machbar ist, sollte es nicht so schlimm sein.

Kein Problem, einfach den Codeschnippsel weiter oben einbauen, also so:
Code: Alles auswählen
// Unterkategorien Vertikales Menue -----------
if ($catId == $path1) {
if ($lev1Size != "0") {
$vm .= '<li><ul class="zwo">';

foreach ($cat->getChildren() as $vert2):
if ($vert2->isOnline(true)) {
if ($vert2->getId() == $path2) {
$vm .= '<li><a href="'.$vert2->getUrl().'"><strong>'.$vert2->getName().'</strong></a></li>';
} else {
$vm .= '<li><a href="'.$vert2->getUrl().'">'.$vert2->getName().'</a></li>';
}
}
endforeach;

/* insert static link to article 156 */
$vm .= sprintf("<li><a href="%1\$s">[LINKNAME]</a></li>\n", rex_getUrl(156, $REX['CUR_CLANG'], "start=18"));

$vm .= '</ul></li>';


Kleine Anmerkung: Das ist recht quick&dirty. zB wird der Link nicht ausgegeben wenn keine Unterkategorien da sind und es wird auch nicht übeprüft ob der statische Link der aktuellen Seite entspricht wie es das Nav-Template eigentlich macht.
nente
 
Beiträge: 46
Registriert: 25. Apr 2007, 12:49

Beitragvon snaft » 6. Mai 2009, 17:48

Hallo alle!

Falls jemand das gleiche Problem hat, hier die Lösung, die dank "nente" hervorragend funktioniert.

Code: Alles auswählen
// Unterkategorien Vertikales Menue -----------
if ($catId == $path1) {
if ($lev1Size != "0") {
$vm .= '<li><ul class="zwo">';

foreach ($cat->getChildren() as $vert2):
if ($vert2->isOnline(true)) {
if ($vert2->getId() == $path2) {
$vm .= '<li><a href="'.$vert2->getUrl().'"><strong>'.$vert2->getName().'</strong></a></li>';
} else {
$vm .= '<li><a href="'.$vert2->getUrl().'">'.$vert2->getName().'</a></li>';
}
}
endforeach;

/* insert static link to article 156 */
if($catId==44) $vm .= sprintf("<li><a href=\"%1\$s\">News-Archiv</a></li>\n", rex_getUrl(1, $REX['CUR_CLANG'], "&amp;start=2"));
$vm .= '</ul></li>';

}
}



Beste Grüße,
Marc
Ich hasse Leute, die mitten im Satz.
Benutzeravatar
snaft
 
Beiträge: 198
Registriert: 3. Mai 2007, 14:47
Wohnort: Hamburgo


Zurück zu Templates/Navigationen [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast