Navigation mit Sprung in 1. Unterkategorie

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

Navigation mit Sprung in 1. Unterkategorie

Beitragvon fsiebert1977 » 12. Dez 2005, 12:35

Hallo zusammen,

habe folgendes Problem: Ich möchte gerne eine 2-stufige Navigation erstellen, die beim Klick auf eine Hauptkategorie in die 1. Unterkategorie dieser Hauptkategorie springt, falls die Hauptkategorie leer ist (will heissen, falls im Startartikel der Kategorie keine Slices enthalten sind), aber auch nur dann.

Habe folgendes versucht:
Code: Alles auswählen
//------- Mainnavi
$path = explode( '|', $this->getValue("path").$this->getValue("article_id"));
array_shift( $path);
$cat_id = $path[0];
$subcat_id = $path[1];

echo '<div id="mainnavi"><ul>';

foreach ( OOCategory::getRootCategories( true ) as $oCategory) {
$name = htmlspecialchars($oCategory->getName());
$cid = $oCategory->getId();
$hasContent = OOArticleslice::getFirstSliceForArticle($cid);
$children = OOCategory::getChildrenById($cid,true);
$firstChild = $children[0];
if(!$hasContent and $firstChild) {
  $articles = OOArticle::getArticlesOfCategory($firstChild->getId(),true);
  $url = $articles[0]->getUrl();
} else {
  $articles = OOArticle::getArticlesOfCategory($oCategory->getId(),true);
  $url = $articles[0]->getUrl();
}
if ( $cat_id == $cid) {
   echo '<li class="aktiv"><a href="'. $url .'">'. $name .'</a></li>';
  }

  else {
    echo '<li><a href="'. $url .'">'. $name .'</a></li>';
  }
}
echo '</ul></div>';

Funktioniert aber leider nicht. Er springt immer in die erste Unterkategorie - warum? Habe auch schon versucht, $hasContent mit $this->getArticle() zu belegen und abzufragen, funktioniert leider auch nicht richtig. Das ganze muss auch noch in drei Sprachen funktionieren.

Hat jemand eine Idee? Vielen Dank im Voraus.
Gruß Florian
www.softloop.biz
fsiebert1977
 
Beiträge: 172
Registriert: 9. Feb 2005, 19:51
Wohnort: Bad Nauheim

Beitragvon Thomas.Blum » 12. Dez 2005, 14:41

HEj,

hast du mal print $hasContent eine Zeile nach der Zuweisung gemacht? Also wird überhaupt was in $hasContent gespeichert?

Schreibfehler:
OOArticleslice -> OOArticleSlice
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 Gast » 12. Dez 2005, 14:50

Ja, hab ich gemacht. Es wird nichts gespeichert. $cid hat aber den korrekten Wert. Hab den Schreibfehler auch korrigiert, hat aber leider nichts gebracht.
Gast
 

Beitragvon Thomas.Blum » 12. Dez 2005, 14:54

Hej,

ich bin dabei und schreib dir die navi.
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 Thomas.Blum » 12. Dez 2005, 15:04

Mal bitte testen:

Code: Alles auswählen
<?php

$PATH = explode( '|', $this->getValue("path").$this->getValue("article_id"));
$path1 = $PATH[1];
$path2 = $PATH[2];

print '<div id="mainnavi"><ul>';

foreach ( OOCategory::getRootCategories( true ) as $category) {
   $cName    = $category->getName();
   $cId    = $category->getId();
   $fSlice   = OOArticleSlice::getFirstSliceForArticle($cId);
   
   $children = $category->getChildren();
   foreach ($children as $child) {
      $fSubCatUrl = $child->getUrl();
      break;
   }
   
   if ($fSlice == "") {
      print '<a href="'.$fSubCatUrl.'">'.$cName.'</a>';     
   }
   else {
      print '<a href="'.rex_getUrl($cId).'">'.$cName.'</a>';   
   }
}
print '</ul></div>';

?>


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 fsiebert1977 » 12. Dez 2005, 15:30

Hi Thomas,

leider passiert jetzt nur noch was, wenn eine Unterkategorie vorhanden ist. In die Hauptkategorien geht er gar nicht. Was ich auch vergessen habe zu erwähnen, ist, dass mein Code mit Redaxo 3.0 noch ging. Erst nach dem Update auf 3.1 ging es nicht mehr. Ist vielleicht ein Fehler in der OOArticleSlice-Klasse?

Vielen Dank für deine Hilfe.
Gruß Florian
www.softloop.biz
fsiebert1977
 
Beiträge: 172
Registriert: 9. Feb 2005, 19:51
Wohnort: Bad Nauheim

Beitragvon Thomas.Blum » 12. Dez 2005, 15:42

Hej Florian,

ich denke du wolltest eine Navigation, die, wenn der Slice des Startartikels der Hauptcat leer ist die Url der ersten Unterkat anzeigt.

Das macht die Navigation.

Enn es nicht das ist, schreibe noch einmal eine Zusammenfassung, was die Navi machen sollte.

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 fsiebert1977 » 12. Dez 2005, 15:46

Nein, das hast du schon richtig verstanden. Das Problem ist, dass deine Hauptnavigation auch nicht in die Hauptkategorien geht, wenn Inhalt drin ist, genau das selbe Problem wie bei mir.

Daher meine Vermutung, dass irgendetwas mit der Klasse nicht mehr stimmt seit REX 3.1.
Gruß Florian
www.softloop.biz
fsiebert1977
 
Beiträge: 172
Registriert: 9. Feb 2005, 19:51
Wohnort: Bad Nauheim

Beitragvon fsiebert1977 » 12. Dez 2005, 15:59

Stopp! Ich glaube es liegt an was anderem: Ich musste einen ganzen Kategorienbaum mit allen enthaltenen Artikeln und Unterkategorien in eine andere Hauptkategorie verschieben. Das habe ich über PHPMyAdmin gemacht. Irgendwas scheint da schiefgelaufen zu sein, weil ich gerade eine neue Haupt- und Unterkategorie angelegt habe und dort alles funktioniert.

Was habe ich da bloss übersehen? Ich habe alle Pfade und alle re_id's der betroffenen Artikel geändert und in der Struktur sieht auch alles ok aus. Auch die Seite funktioniert mit allen Kategorien und Artikeln, bis auf das Problem mit der Navigation.

Hast du eine Idee?
Gruß Florian
www.softloop.biz
fsiebert1977
 
Beiträge: 172
Registriert: 9. Feb 2005, 19:51
Wohnort: Bad Nauheim

Beitragvon Jan.Kristinus » 12. Dez 2005, 16:07

hi flo,

über phpmyadmin ist das nicht so leicht getan.. die einzelnen artikel und kategorien haben auch pfade gespeichert, d.h. diese muesstest du auch noch anpassen.. ist aber etwas fummliger..

gruss

jan
Yakamara Media GmbH & Co. KG | Kaiserstrasse 69 | 60329 Frankfurt
Tel.: 069-900.20.60.30
http://www.yakamara.de/
Benutzeravatar
Jan.Kristinus
Admin
 
Beiträge: 1928
Registriert: 24. Aug 2004, 21:11
Wohnort: Frankfurt

Beitragvon fsiebert1977 » 12. Dez 2005, 16:10

Hi Jan,

das habe ich ja gemacht. Sieht auch wie gesagt in der Struktur und im Frontend richtig aus... Komischerweise habe ich auchg nur in einer Hauptkategorie was verändert, aber das Problem tritt bei allen bestehenden auf. Woher kann das nur kommen?
Gruß Florian
www.softloop.biz
fsiebert1977
 
Beiträge: 172
Registriert: 9. Feb 2005, 19:51
Wohnort: Bad Nauheim

Beitragvon Markus.Staab » 12. Dez 2005, 16:38

Hi Flo,

ebenfalls müssen noch die Namen der Kategorien angepasst werden... (catname)

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

Beitragvon fsiebert1977 » 12. Dez 2005, 17:03

Hi Markus,

aber die habe ich doch gar nicht verändert?

Ich hatte vorher folgende Struktur (ich habe nur die Unterkategorien von Referenzen verändert, deswegen führe ich nur diese auf):
Code: Alles auswählen
Hauptkategorien:
- Das Büro
- Aktuelles
- Referenzen
- Kontakt
- Impressum

Unterkategorien Referenzen:
- Hochbau
- Industriebau
- Ingenieurbau
- Referenzliste

Unterkategorien Referenzliste:
- Hochbau
- Industriebau
- Ingenieurbau

Die Unterkategorien der Referenzliste haben wiederum jeweils Unterkategorien, aber nur noch eine Ebene. Da die Unterkategorien der Referenzliste denen der Referenzen entsprechen, haben mein Kunde und ich uns entschlossen, die Referenzliste aufzusplitten und in die Unterkategorien der Referenzen zu verteilen. Jetzt bin ich hergegangen und habe die Unter-Unterkategorien der Referenzliste direkt in die Unterkategorien gleichen Namens der Referenzen verschoben. Dabei habe ich folgende Felder in der Tabelle rex_article angepasst:
- re_id
- path

In den anderen Hauptkategorien habe ich gar nichts verändert, kann das einen Einfluss gehabt haben?

Ich weiss nicht, ob ich mich verständlich ausdrücken konnte, ich kann auch gerne einen Zugang zum Backend per PM schicken.

Vielen Dank auf jeden Fall euch allen für die Hilfe.
Gruß Florian
www.softloop.biz
fsiebert1977
 
Beiträge: 172
Registriert: 9. Feb 2005, 19:51
Wohnort: Bad Nauheim

Beitragvon fsiebert1977 » 13. Dez 2005, 11:42

Ich habe jetzt herausgefunden, wo der Fehler liegt: bei den Sprachen. Alles funktioniert wunderbar, solange ein Artikel nur in einer Sprache vorliegt. Sobald ich für den Artikel Inhalte in einer anderen Sprache hinzufüge, liefert OOArticleSlice::getFirstSliceForArticle() kein Ergebnis mehr. Man kann ja auch als Parameter nicht die Sprache angeben, ist diese Funktion überhaupt schon auf Mehrsprachigkeit ausgelegt?
Gruß Florian
www.softloop.biz
fsiebert1977
 
Beiträge: 172
Registriert: 9. Feb 2005, 19:51
Wohnort: Bad Nauheim

Beitragvon Thomas.Blum » 13. Dez 2005, 11:48

Hej ,

dann solltest du eventuell diesen Weg gehen:

$a = OOArticle::getArticleById($aId, $REX['CUR_CLANG'])
$slice = $a->getFirstSlice();

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

Nächste

Zurück zu Templates/Navigationen [R3]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast