Weitere Artikel in einer Kategorie

Sub-Segmente

In dieser Demo werden de einzelnen Segmente mit Kategorien gebildet. Dies bietet große Flexibilität, denn in einer Kategorie können beliebig viele weitere Artikel mit jeweils beliebig vielen Modulen angelegt werden, die dann alle innerhalb eines Segments ausgelesen werden.

Ob man diese Möglichkeit benötigt, muss jeder selbst entscheiden. Aber diese Navigations-Variante soll als weitere Option gezeigt werden – zumal die Webdsite dann recht rasch zu einer Multipage-Website umgewandelt werden kann.

<?php
$content = '';
$path = rex_article::getCurrent()->getPathAsArray();
$path1 = ((!empty($path[1])) ? $path[1] : '');

echo '
<ul>';

// Unterkategorien des aktuellen Artikels
$cats = rex_category::get($this->article_id);
$children = $cats->getChildren(true);

// Array der Unterkategorien durchlaufen
if (is_array($children) && count($children) > 0) {
foreach ($children as $child) {

// Der Inhalt des aktuellen Artikels soll nicht nochmal erneut ausgelesen werden
if ($child->getId() == REX_ARTICLE_ID) continue;

// rex_string::normalize entfernt Sonderzeichen für eine gültige URL
echo '
<li><a href="" data-scroll="true" data-id="#'.rex_string::normalize($child->getName()).'">'.$child->getName().'</a></li>';

// Das Artikel-Objekt wird angesprochen, um die Inhalte zu erhalten
$category_content = new rex_article_content($child->getId());

// Der jeweilige Inhalt wird in eine Variable geschrieben
// Zu Beginn wird immer ein Sprunganker erzeugt
$content .= '
<div id="'.rex_string::normalize($child->getName()).'"></div>';
$content .= str_replace('class="button', 'class="btn btn-lg btn-black btn-arrow', $category_content->getArticle());

// Falls die Kategorie weitere Artikel hat,
// diese ebenfalls in das gleiche Segment laden
// Kommentare dazu im Template "Abschnitte als Artikel"
$cat = rex_category::get($child->getId());
$articles = $cat->getArticles(true);
if (is_array($articles) && count($articles) > 0) {

foreach ($articles as $article) {
if ($article->getId() == REX_ARTICLE_ID) continue;
if ($article->isStartArticle()) continue;
$article_content = new rex_article_content($article->getId());
$content .= $article_content->getArticle();
}
}
// Ende weitere Artikel der Kategorie holen

}
}

echo '
</ul>';
?>