Navigation - auf Klick neues Fenster

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

Navigation - auf Klick neues Fenster

Beitragvon kdk » 2. Feb 2006, 16:00

Erstmal Hallo zusammen,
ich hab redaxo vor einer Weile entdeckt und bin gerade dabei mein erstes Projekt damit abzuwickeln (Link folgt). Dem allgemeinen Lob hier kann ich mich erstmal nur anschließen.

Bei der Navigation möchte ich bei Klick auf (natürlich) "Forum" das sich ein neues Fenster öffnet um mir eine Zwei-Klick-Lösung zu ersparen.

Wenn ich den Tipp aus http://forum.redaxo.de/ftopic1220.html& ... es+fenster
befolge bekomme ich folgende Fehlermeldung:

Parse error: parse error, unexpected T_VARIABLE in /homepages/29/d120006022/htdocs/lebenswelten/redaxo/include/generated/templates/4.template on line 15

line15 ist folgende: if (§$lev1->getId() == 5) $link = '<a href="http://redaxo.de" target="_blank">';

Da ich natürlich ein php-DAU bin find ich den Fehler nicht.

Die Redaxo-Version ist aktuell undfür die Navigation benutze ich folgendes Template:

<?php
// EXPLODE PATH
$PATH = explode("|",$this->getValue("path").$this->getValue("article_id")."|");

// GET CURRENTS
$path1 = $PATH[1];
$path2 = $PATH[2];
$path3 = $PATH[3];


/* START 1st level categories */
$navLeftCol .= '<ul class="nav1st">';
foreach (OOCategory::getRootCategories() as $lev1) {


if ($lev1->isOnline(true)):
if ($lev1->getId() == $path1) {
$navLeftCol .= '<li class="active"><a class="current" href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
if ($lev1->getId() != "1") {
$sitePath .= ' ›› <a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
}
$titlePath .= ' >> '.$lev1->getName();
}
// 2nd level - no active link
else {
$navLeftCol .= '<li><a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
}

// 1st level had categories? -> go on
$lev1Size = sizeof($lev1->getChildren());

if ($lev1->getId() == $path1) {
if ($lev1Size != "0") {
$navLeftCol .= '<ul class="nav2nd">';

// START 2nd level categories
foreach ($lev1->getChildren() as $lev2):
if ($lev2->isOnline(true)) {
// 2nd level - active link
if ($lev2->getId() == $path2) {
$navLeftCol .= '<li class="active"><a class="current" href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
$sitePath .= ' ›› <a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
$titlePath .= ' >> '.$lev2->getName();
}
// 2nd level - no active link
else {
$navLeftCol .= '<li><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
}

// 2nd level had categories? -> go on
$lev2Size = sizeof($lev2->getChildren());

if ($lev2->getId() == $path2) {
if ($lev2Size != "0") {
$navLeftCol .= '<ul class="nav3rd">';

// START 3rd level categories
foreach ($lev2->getChildren() as $lev3):
if ($lev3->isOnline(true)) {
// 3rd level - active link
if ($lev3->getId() == $path3) {
$navLeftCol .= '<li class="active"><a class="current" href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>';
$sitePath .= ' ›› <a href="'.$lev3->getUrl().'">'.$lev3->getName().'</a>';
$titlePath .= ' >> '.$lev3->getName();
}
// 3rd level - no active link
else {
$navLeftCol .= '<li><a href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>';
}
}
endforeach;
// END 3rd level categories

$navLeftCol .= '</ul>';
} // END by if ($lev2Size != "0"):
}
$navLeftCol .= '</li>';
}
endforeach;
// END 2nd level categories

$navLeftCol .= '</ul>';
} // END by if ($lev1Size != "0"):
}
$navLeftCol .= '</li>';

endif; // END by if ($lev1->isOnline())
}
$navLeftCol .= '</ul>';
// END 1st level categories

if ($REX['CUR_CLANG'] == 1) $breadcrumb = 'You are here ›› <a href="index.php?clang=1">Home</a> '.$sitePath;
else $breadcrumb = 'Sie sind hier ›› <a href="index.php">Startseite</a> '.$sitePath;

// print $navLeftCol;
?>

Wäre toll wenn mir jemand helfen könnte.
kdk
 
Beiträge: 125
Registriert: 19. Dez 2005, 13:36

Re: Navigation - auf Klick neues Fenster

Beitragvon Thomas.Blum » 2. Feb 2006, 16:22

Hej und willkommen bei Redaxo,

kdk hat geschrieben:line15 ist folgende: if (§$lev1->getId() == 5) $link = '<a href="http://redaxo.de" target="_blank">';


wenn das wirklich so bei dir drin steht, dann musst du das "§"-Zeichen entfernen.

vg Thomas
blumbeet - web.studio - Dresden - 0351 217 6225
webbude - Blog über CSS.XHTML.REX
Ein Wunschzettel
Benutzeravatar
Thomas.Blum
Entwickler
 
Beiträge: 4670
Registriert: 24. Aug 2004, 21:11
Wohnort: Dresden

Beitragvon kdk » 2. Feb 2006, 16:58

Erstmal Danke für die schnelle Hilfe. Die Fehlermeldung ist weg.

Allerdings hat der Link jetzt keine Funktion, d.h. es wird trotzdem der Artikel mit der ID 5 aufgerufen.
Vertue ich mich etwa mit der ID? Ich vermutete es wäre die Artikel-ID die man auch unter 'Struktur' angezeigt bekommt.

Der Nav-Code sieht nun so aus :

<?php
// EXPLODE PATH
$PATH = explode("|",$this->getValue("path").$this->getValue("article_id")."|");

// GET CURRENTS
$path1 = $PATH[1];
$path2 = $PATH[2];
$path3 = $PATH[3];


/* START 1st level categories */
$navLeftCol .= '<ul class="nav1st">';
foreach (OOCategory::getRootCategories() as $lev1) {

if ($lev1->getId() == 5) $link = '<a href="http://redaxo.de" target="_blank">';
else $link = '<a href="'.rex_getUrl($lev1->getId()).'">';


if ($lev1->isOnline(true)):
if ($lev1->getId() == $path1) {
$navLeftCol .= '<li class="active"><a class="current" href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
if ($lev1->getId() != "1") {
$sitePath .= ' ›› <a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
}
$titlePath .= ' >> '.$lev1->getName();
}
// 2nd level - no active link
else {
$navLeftCol .= '<li><a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
}

// 1st level had categories? -> go on
$lev1Size = sizeof($lev1->getChildren());

if ($lev1->getId() == $path1) {
if ($lev1Size != "0") {
$navLeftCol .= '<ul class="nav2nd">';

// START 2nd level categories
foreach ($lev1->getChildren() as $lev2):
if ($lev2->isOnline(true)) {
// 2nd level - active link
if ($lev2->getId() == $path2) {
$navLeftCol .= '<li class="active"><a class="current" href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
$sitePath .= ' ›› <a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
$titlePath .= ' >> '.$lev2->getName();
}
// 2nd level - no active link
else {
$navLeftCol .= '<li><a href="'.$lev2->getUrl().'">'.$lev2->getName().'</a>';
}

// 2nd level had categories? -> go on
$lev2Size = sizeof($lev2->getChildren());

if ($lev2->getId() == $path2) {
if ($lev2Size != "0") {
$navLeftCol .= '<ul class="nav3rd">';

// START 3rd level categories
foreach ($lev2->getChildren() as $lev3):
if ($lev3->isOnline(true)) {
// 3rd level - active link
if ($lev3->getId() == $path3) {
$navLeftCol .= '<li class="active"><a class="current" href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>';
$sitePath .= ' ›› <a href="'.$lev3->getUrl().'">'.$lev3->getName().'</a>';
$titlePath .= ' >> '.$lev3->getName();
}
// 3rd level - no active link
else {
$navLeftCol .= '<li><a href="'.$lev3->getUrl().'">'.$lev3->getName().'</a></li>';
}
}
endforeach;
// END 3rd level categories

$navLeftCol .= '</ul>';
} // END by if ($lev2Size != "0"):
}
$navLeftCol .= '</li>';
}
endforeach;
// END 2nd level categories

$navLeftCol .= '</ul>';
} // END by if ($lev1Size != "0"):
}
$navLeftCol .= '</li>';

endif; // END by if ($lev1->isOnline())
}
$navLeftCol .= '</ul>';
// END 1st level categories

if ($REX['CUR_CLANG'] == 1) $breadcrumb = 'You are here ›› <a href="index.php?clang=1">Home</a> '.$sitePath;
else $breadcrumb = 'Sie sind hier ›› <a href="index.php">Startseite</a> '.$sitePath;

// print $navLeftCol;
?>
kdk
 
Beiträge: 125
Registriert: 19. Dez 2005, 13:36

Beitragvon Markus.Staab » 2. Feb 2006, 17:00

Hi,

der Artikel dem du eine andere URL zuweisen willst befindet sich auch auf der obersten Ebene? Oder ist dieser in einer Kategorie drinne?

Gruß,
Markus
Benutzeravatar
Markus.Staab
Entwickler
 
Beiträge: 9781
Registriert: 29. Jan 2005, 14:50
Wohnort: Aschaffenburg/Germany

Beitragvon kdk » 2. Feb 2006, 17:08

Der Forumslink befindet sich auf der obersten Ebene, dies ist der Link

/redaxo/index.php?page=structure&category_id=5&clang=0

Ich würde sagen "Forum" ist die Kategorie, bis auf den leeren Startartikel befindet sich nichts in der Kategorie.
kdk
 
Beiträge: 125
Registriert: 19. Dez 2005, 13:36

Beitragvon svenalbert » 2. Feb 2006, 17:08

du übergibst deiner navigation nirgends den anderen link. bei dir wird immer aus der struktur von redaxo generiert.
Code: Alles auswählen
         $navHeader .= '<li class="active"><a class="current" '.$link.'>'.$lev1->getName().'</a>';

mußt du noch für dich anpassen, du hast navleftcol und nicht navheader.
aber hier mußt du den $link übernehmen/-geben.

sonst funktioniert's nicht.
Benutzeravatar
svenalbert
 
Beiträge: 1295
Registriert: 24. Nov 2005, 16:21
Wohnort: Clausthal-Zellerfeld / lower saxony

Beitragvon kdk » 2. Feb 2006, 17:17

Ähm, sorry das habe ich verstanden. Wo soll ich der Navigation den Link übergeben?
Durch einfügen des codes? Aber wohin?
kdk
 
Beiträge: 125
Registriert: 19. Dez 2005, 13:36

Beitragvon svenalbert » 2. Feb 2006, 17:37

Code: Alles auswählen
/* START 1st level categories */
$navLeftCol .= '<ul class="nav1st">';
foreach (OOCategory::getRootCategories() as $lev1) {

if ($lev1->getId() == 5) $link = 'http://redaxo.de" target="_blank';
else $link = rex_getUrl($lev1->getId());


if ($lev1->isOnline(true)):
if ($lev1->getId() == $path1) {
$navLeftCol .= '<li class="active"><a class="current" href="'.$link.'">'.$lev1->getName().'</a>';
if ($lev1->getId() != "1") {
$sitePath .= ' ›› <a href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
}
$titlePath .= ' >> '.$lev1->getName();
}
// 2nd level - no active link
else {
$navLeftCol .= '<li><a href="'.$link.'">'.$lev1->getName().'</a>';
}



Ersetz mal das stück bis dahin.

Sven
Benutzeravatar
svenalbert
 
Beiträge: 1295
Registriert: 24. Nov 2005, 16:21
Wohnort: Clausthal-Zellerfeld / lower saxony

Beitragvon kdk » 2. Feb 2006, 18:01

Danke, danke, danke. Funktioniert alles wunderbar

Wo genau der Fehler lag, das schau ich mir dann lieber morgen mal genau an.

Die Hilfe hier ist ein guter Grund für redaxo.
kdk
 
Beiträge: 125
Registriert: 19. Dez 2005, 13:36

Beitragvon svenalbert » 2. Feb 2006, 18:34

Code: Alles auswählen
if ($lev1->getId() == 5) $link = 'http://redaxo.de" target="_blank';
else $link = rex_getUrl($lev1->getId());

Du übergibst hier der Var $link den "Wert" für dein Linkziel.

Um das auch in die Navigation zu bringen, mußt du es hier
Code: Alles auswählen
$navLeftCol .= '<li class="active"><a class="current" href="'.$link.'">'.$lev1->getName().'</a>';
und hier
Code: Alles auswählen
$navLeftCol .= '<li><a href="'.$link.'">'.$lev1->getName().'</a>';
in die generierung der navigation einfließen lassen.

bei dir wurde ganz normal mit dem linkziel, welches durch die struktur von redaxo bereit gestellt wird, gearbeitet.
Code: Alles auswählen
$navLeftCol .= '<li class="active"><a class="current" href="'.$lev1->getUrl().'">'.$lev1->getName().'</a>';
Benutzeravatar
svenalbert
 
Beiträge: 1295
Registriert: 24. Nov 2005, 16:21
Wohnort: Clausthal-Zellerfeld / lower saxony


Zurück zu Templates/Navigationen [R3]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast