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;
}

