Ctype-Inhalte aus übergeordneter Kategorie übernehmen

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

Ctype-Inhalte aus übergeordneter Kategorie übernehmen

Beitragvon marc » 28. Nov 2007, 17:15

Hallo zusammen,

hab heute mal ein Stück Code weiterentwickelt, das ich in verschiedenen Threads zusammengesucht habe.

http://forum.redaxo.de/ftopic1034.html&highlight=ctype
http://forum.redaxo.de/ftopic1225-0-asc-15.html
http://forum.redaxo.de/ftopic2613.html&highlight=ctype

Und zwar ging es mir darum, eine Möglichkeit zu finden, um die Ctypes aus übergeordneten Kategorien zu übernehmen, wenn im aktuellen Artikel keine Inhalte eingefügt wurden.

Zur Info: Ich habe eine Website mit sehr vielen Unterkategorien und die rechten und linken Spalten sind voll mit Infos. Aus diesem Grunde war es mir wichtig, dass die Unterkategorien/Newsseiten einer Filiale auch sofort die Spalteninfos der Filialseite übernehmen.

In den bisherigen Threads zum Thema hab ich nur Skripts gefunden, die das Ctype aus einem bestimmten Artikel übernehmen.

Daher hier die angepassten Versionen:

Wenn Ctype leer ist, dann die Infos aus dem Ctype der Root-Kategorie nehmen



Code: Alles auswählen
   //  print $this->getArticle(3);  Ctype ausgeben
   $ctype = $this->getArticle(3);
   if ( $ctype == "") {               // Wenn Ctype leer ist
      $aktuellekat = OOCategory::getCategoryById($this->getValue('category_id'));
      $tree = $aktuellekat->getParentTree();
      $rootkat = $tree[0]->getId();      // die Root-Kategorie ermitteln
      $art = new article($rootkat);    
      $ctype = $art->getArticle(3);   // C-type aus der Root-Kategorie ausgeben
   }
   echo $ctype;


Wenn Ctype leer ist, dann die Infos aus dem übergeordneten Ctype nehmen

Der Vorteil hierbei ist, dass er immer weiter nach Inhalten sucht, dh wenn die übergeordnete Kategorie kein gefülltes Ctype besitzt, dann sucht er immer höher, bis zu der Rootkategorie.

Code: Alles auswählen
   //  print $this->getArticle(3);  Ctype ausgeben
   
   $ctype = $this->getArticle(3);
   if ( $ctype == '') {                           // Wenn Ctype des aktuellen Artikel leer ist
      // print 'es besteht KEIN Ctype für diesen Artikel<br>Die übergeordneten Kategorien sind: <br>';
      
      $article= OOArticle::getArticleById($this->article_id);
      $parent = $article->getParentTree();
      $reverse = array_reverse($parent);                // array_reverse, um die Reihenfolge umzudrehen
      foreach($reverse as $cat) {                     // wir gehen alle übergeordneten Kategorien durch
         
         $neuer_art = new article($cat->getId());       
           $neuerctype = $neuer_art->getArticle(3);      // Ctype aus dem Artikel ermitteln
         
         if ($neuerctype =='') {                     // falls die übergeordnete Kategore auch kein Ctype hat
               /* $negativ = $cat->getName();
               print $negativ;
               print ': hat KEINEN gefüllten Ctype <br>'; */
            } else {                           // falls die übergeordnete Kategore EINEN Ctype hat
               /* $positiv .= '<a href="'.$cat->getUrl().'">'.$cat->getName().' ('.$cat->getId().')</a>';
               print $positiv;
               print ': hat EINEN gefüllten Ctype <br>'; */
               
               $neuer_art_ctype = new article($cat->getId());
               $ctype = $neuer_art_ctype->getArticle(3);
               echo $ctype;
               
               break;                           // anzeigen und Schleife beenden
            }
      }
   } else {                                    // Wenn Ctype besteht
      // print 'es besteht EIN Ctype für diesen Artikel<br>';
      echo $ctype;
   }
marc
 
Beiträge: 76
Registriert: 10. Mai 2006, 11:12
Wohnort: Lux

Zurück zu Templates/Navigationen [R3]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron