Hallo Skyjacker,
du kannst folgende Lösung dafür verwenden.
Die Artikel, deren Inhalt in der Liste erscheinen sollen, sollten im Layout die Marker "<!--start:content-->" und "<!--end:content-->", das kann man später dafür verwenden, um den Inhalt darin zu extrahieren. Hier ein Beipsiel für das Layout:
Code: Alles auswählen
<html>
<body>
<!--start:content-->
<!--- ... content of article --->
<!--end:content-->
</body>
</html>
Dann erstelle ein Modul, das follgenden Code im Module-Output hat:
Code: Alles auswählen
<?php
// include some files
cInclude('classes/Contenido_Category', 'Contenido_Category_Articles.class.php');
cInclude('classes/Contenido_Category', 'Contenido_Category.class.php');
if (!is_object($db)) {
$db = new DB_Contenido();
}
$oCat = new Contenido_Category_Articles($db, $cfg, $client, $lang);
// Load all articles in $myCategoryId
$aArticles = $oCat->getArticlesInCategory($myCategoryId);
$oUrl = Contenido_Url::getInstance();
// Loop through article list
foreach ($aArticles as $oArticle) {
// full url to article
$aParams = array(
'idart' => $oArticle->get('idart'),
'lang' => $lang
);
$url = $oUrl->build($aParams, true);
// get article output
$articleContent = file_get_contents($url);
// extract content
$startPos = strpos($articleContent, "<!--start:content-->");
$endPos = strpos($articleContent, "<!--end:content-->");
$articleCode = substr($articleContent, $startPos, $endPos - $startPos);
// output content
echo '<div class="my-article-list-item">' . $articleCode . "</div>\n";
}
?>
Der Code ist einfach gehalten ist also nicht mit Validierung/Fehlerbehandlung aufgebläht, du kannst es deinen Wünschen entsprechend erweitern.
Die Variable $myCategoryId enthält die Id der Kategorie, das kannst du mit CMS_VAR konfigurierbar achen, oder über Mandanteneinstellungen...
Bei dieser Variante wird zu jedem Artikel ein Request abgeschickt, d. h. die Seiten werden per file_get_contents() vom Server angefragt.
Es sollte sichergestellt sein, dass HTTP Requests mit file_get_contents erlaubt sind oder du verwendest Alternativen wie Sockets oder Curl.
Es wäre nicht schlecht, die Seiten zu Cachen, so dass nicht jedes Mal alle Artikel vom Server angefragt werden, z. B. nur alle 30 Minuten. Bedenke aber auch, dass ein einfacher Cache nicht Synchron mit dem Backend sein kann, d. h. Änderungen an Artikeln könnten erst später im Frontend erscheinen, also wenn der Cache ungültig und daher erneuert wird.
Wichtig:
Das Beispiel ist nicht getestet, bitte vorher Prüfen!
Gruß
xmurrix