ich habe ein kleines Problem bezüglich einer Artikelliste.
Ich möchte eine Liste mit allen Artikeln darstellen ( bis dahin kein Problem) und wenn ein Artikel dann angezeigt wird, unterhalb des Artikels die nächsten 4 Artikel anzeigen lassen. ( Auch das klappt)
Nun aber zu meinem Problem:
Ich habe das Skript so modifiziert, dass immer nur die nächsten Artikel anteast werden. Allerdings möchte unser Kunde, dass immer die 4 nächsten Artikel angezeigt werden - auch wenn man beispielsweise gerade den vorletzten Artikel geöffnet hat.
Wir kann ich es realisieren, dass wenn nicht genug nachfolgende Artikel zum anteasen bereitstehen, einfach wieder vorne in der Liste angefangen wird?
Beispiel:
Ich habe 10 Artikel
Wenn Artikel 5 gelesen wird, werden die Artikel 6,7,8,9 angeteast.
Wenn aber Artikel 8 gelesen wird, sollen die Artikel 9,10,1,2 angeteast werden.
Hier mein bisheriger Code:
Code: Alles auswählen
<div class="linie"></div>
<div class="second_content">
<?php
if (!function_exists('truncate'))
{
function truncate($string, $length = 80, $etc = '...', $break_words = false)
{
if ($length == 0)
return '';
if (strlen($string) > $length)
{
$length -= strlen($etc);
if (!$break_words)
$string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length +1));
return substr($string, 0, $length).$etc;
}
else
return $string;
}
}
// Sortierfunktion by Prio
// siehe http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten
if (!function_exists('sortArticlesByPrio')) {
function sortArticlesByPrio( $artA, $artB) {
$prioA = $artA->getPriority();
$prioB = $artB->getPriority();
if ( $prioA == $prioB) {
return 0;
}
return $prioA > $prioB ? -1 : 1;
}
}
// Sortierfunktion by CreateDate
// siehe http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten
if(!function_exists('sortArticlesByCreateDate')) {
function sortArticlesByCreateDate( $artA, $artB) {
$createA = $artA->getCreateDate();
$createB = $artB->getCreateDate();
if ( $createA == $createB) {
return 0;
}
return $createA > $createB ? -1 : 1;
}
}
// Sortierfunktion by UpdateDate
// siehe http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten
if(!function_exists('sortArticlesByUpdateDate')) {
function sortArticlesByUpdateDate( $artA, $artB) {
$updateA = $artA->getUpdateDate();
$updateB = $artB->getUpdateDate();
if ( $updateA == $updateB) {
return 0;
}
return $updateA > $updateB ? -1 : 1;
}
}
// Sortierfunktion by Name
// siehe http://wiki3.redaxo.de?n=R3.Sortiermöglichkeiten
if(!function_exists('sortArticlesByName')) {
function sortArticlesByName( $artA, $artB) {
$nameA = $artA->getName();
$nameB = $artB->getName();
if ( $nameA == $nameB) {
return 0;
}
$names = array($nameA,$nameB);
sort( $names, SORT_STRING);
return $names[0] == $nameA ? -1 : 1;
}
}
$catId = 'REX_VALUE[1]';
$lettersPerArticle = 'REX_VALUE[2]';
$sorting_order = 'CreateDate';
$mediaOut = '';
$itemsPerSide = "REX_VALUE[4]"; // Anzahl der News die gezeigt werden sollen
$cat = OOCategory::getCategoryById($catId);
$childs = $cat->getArticles( true);
if ( is_array( $childs)) {
if('REX_VALUE[5]') {
usort($childs, 'sortArticlesBy'.$sorting_order);
}
$counter = 1;
foreach ( $childs as $child)
{
$id = $child->getId();
// FILTER
// Startartikel ausblenden
if ( $id == REX_VALUE[1]) continue;
// Den aktuellen Artikel nicht verlinken
if ($id == REX_ARTICLE_ID) continue;
// Ältere Artikel nicht anzeigen
if ($id < REX_ARTICLE_ID) continue;
$article = new article( $id);
$name = $child->getName(); // Artikel Name
$date = $child->getCreateDate(); // Erstellungs Datum
$metadesc = $child->getDescription(); // Artikel Beschreibung
$metapic = $child->getFile(); // Meta Bild
// Ausgabe $out fuellen
if($counter <= $itemsPerSide)
{
print '<div class="infobox">';
print '<a href="'.$child->getUrl().'"><img src="files/'.$metapic .'" title="'.$name.' - Mehr erfahren »" alt="'.$name.' Vorschaubild"/></a>';
print '<h2><a href="'.$child->getUrl().'" title="'.$name.' - Mehr erfahren »">'.$name.'</a></h2>';
print '<p>'.$metadesc.'</p></div>';
}
$counter++;
}
}
?>
</div><!-- Ende 2nd_content -->
Viele Grüße
Cabby