[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
JQuery Teaser Modul per Zufall - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
a.albrecht
Beiträge: 141
Registriert: 17. Dez 2008, 23:43
Kontaktdaten: ICQ

JQuery Teaser Modul per Zufall

22. Dez 2012, 17:46

Hallo Leute.

Ich habe mir das JQuery Teaser Modul als Grundlage genommen.
Die Ausgabe erfolgt in Div-Boxen, ohne den jQuery-Kram.
Ich möchte aus der ausgewählten Kategorie die eingegebene Anzahl
von Artikeln per Zufall auslesen lassen.

Wie kann ich das Modul entsprechend erweitern?

Code: Alles auswählen

<h1>Erfahrungsberichte</h1>
<div class="box">
<?php
// -- JQuery Teaser Modul --
// -- Andreas Otte        --
// -- otte@otte.net       --
// -- Version 1.0         -- */

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();

    // Startartikel ausblenden
    if ( $id == REX_VALUE[1]) continue;

    // Den aktuellen Artikel nicht verlinken
    if ($id == REX_ARTICLE_ID) continue;

    $article = new article( $id);
    $name = $child->getName();         // Artikel Name
    $date = $child->getCreateDate();  // Erstellungs Datum
    $media = $child->getFileMedia();  // Artikel Bild

    $content = truncate( $article->getArticle(), 'REX_VALUE[2]'); // Anzahl Zeichen

	// Ausgabe $out fuellen
    if($counter <= $itemsPerSide) 
      {
      
      printf ('<a href="'.$child->getUrl().'"><div class="erfahrung">%s', $content);
     print '<p class="autor"><em>'.$name.'</em></p>';
      print '</div></a></div>';
      }
  $counter++; // wiederholen bis Anzahl der srtikel erreicht ist
  }
}
?>
</div>
Schöne Weihnachtstage!
andré

Ingo
Beiträge: 782
Registriert: 24. Jun 2010, 00:34

Re: JQuery Teaser Modul per Zufall

23. Dez 2012, 05:59

$childs müsste ein array mit allen Artikeln sein. Lass dir 5 zufällige Zahlen zwischen 0 und count($childs) - 1 ermitteln und hol dir die Artikel mit diesen 5 Zahlen als keys aus $childs.

Zurück zu „Allgemeines [R4]“