Modifizierte Newsliste / Nichts anzeigen wenn nur ein Art...

Gesperrt
saschar
Beiträge: 141
Registriert: Mo 21. Okt 2002, 14:37
Wohnort: Dornbirn, A
Kontaktdaten:

Modifizierte Newsliste / Nichts anzeigen wenn nur ein Art...

Beitrag von saschar »

Hallo,
ich verwende für eine 3 Navigationsebene oder sagen wir mal Artikelnavigation eine Modifizierte Newsliste.
Habe das auch so abgeändert, das mit der aktive Artikel anders dargestellt wird.
Da ich sie aber in jedem Template eingebaut habe, habe ich nur den Output und da die Einstellungen gemacht.
Jetzt fehlt mir aber noch eine kleine Funktion und zwar wenn in der jeweiligen Kategorie nur ein Artikel ist,
dann sollte es keine Newsliste ausgeben, also erst ab 2 und mehr....

Kann mir da vielleicht jemand schnell helfen.
Der Code ist und angehängt.

Vielen Dank
Sascha



Code: Alles auswählen

    <?php

    class articleList {

       /**
        * Konstruktor der Klasse.
        * @param Integer  Primärschlüssel der Artikelkategorie.
        */
       function articleList($myIdCat) {

          global $client, $lang, $idcat;

          $this->myIdCat = $idcat;

          $this->client = $client;
          $this->lang = $lang;
          $this->idcat = $idcat;

          $this->db = new DB_Contenido();
       }

       /**
        * Setzt den vor der Artikelliste auszugebenden HTML-Code.
        * @param String  HTML-Code, der vor der Artikelliste ausgegeben werden
        * soll.
        */
       function setBefore($before) {

          $this->before = $before;
       }

       /**
        * Setzt den nach der Artikelliste auszugebenden HTML-Code.
        * @param String  HTML-Code, der nach der Artikelliste ausgegeben werden
        * soll.
        */
       function setAfter($after) {

          $this->after = $after;
       }

       /**
        * Setzt das Template (respektive die Maske) für die Ausgabe eines Teasers.
        * Für die Ausgabe wird der Titel sowie die Artikelbeschreibung verwendet.
        * @param String  Template für die Asugabe des Teasers. Folgende Platzhalter
        * sind vorgesehen {title} für den Titel, {teaser} für die
        * Artikelbeschreibung, {idcat} für die Artikelkategorie sowie {idart} für
        * die Artikelidentifikation, {link} für die Artikelreferenzierung und
        * {created} für das Erstellungsdatum.
        */
       function setTeaserMask($mask) {

          $this->mask = $mask;
       }

       /**
        * Gibt die Artikelliste zurück. Die Ausgabe an den Browser muss dann über
        * ein echo oder ein print erfolgen.
        * @param String  Sortierkriterium. Zur Auswahl stehen: 'created'
        * (Erstellungsdatum), 'modified' (Aktualisierungsdatum), 'sorted'
        * (Contenido-Sortierkriterium), 'alphabetical' (alphabetisch nach Titel).
        * @param Boolean  True für aufsteigende Sortierung, false für absteigend.
        * @param Integer  Maximale Anzahl Artikel, die angezeigt werden sollen.
        * Wird 0 angegeben, werden alle Artikel ausgegeben.
        */
       function getArticleList($sortOrder, $asc, $maxArticles = 0) {

          /*
           * Ordnungsprinzip fest legen
           */
          $order = ($asc) ? ('ASC') : ('DESC');

          /*
           * Sortierkriterium fest legen
           */
          switch ($sortOrder) {
             case 'created':
                $sortCriteria = 'b.created '.$order;
                break;
             case 'modified':
                $sortCriteria = 'b.lastmodified '.$order;
                break;
             case 'sorted':
                $sortCriteria = 'b.artsort '.$order.', b.title '.$order;
                break;
             case 'alphabetical':
                $sortCriteria = 'b.title '.$order;
                break;
             default:
                $sortCriteria = 'b.title '.$order;
          }

          /*
           * Artikel aus der Datenbank lesen
           */
          $articles = $this->getArticles($this->myIdCat, $this->lang, $sortCriteria, $maxArticles);

          /*
           * Rückgabewert initialisieren
           */
          $returnValue = '';

          if (!empty($articles)) {
             $returnValue = $this->before;

             foreach ($articles as $article) {
                if ($article['online'] == 1) {
                   $mask = $this->mask;
                   if ($article['redirect'] != '0') {
                      $article['link'] = $article['redirect'];
                   }
                   foreach ($article as $part => $content) {
                      $mask = str_replace('{'.$part.'}',$content,$mask);
                   }
                   $returnValue .= $mask;
                }
             }

             $returnValue .= $this->after;
          }

          return $returnValue;
       }

       function getArticles($idcat, $idlang, $sortCriteria, $limit) {

          global $cfg;

          /*
           * Initialisierung des Rückgabewertes
           */
          $returnValue = array();

          /*
           * Setzen der Abfragelimiten
           */
          if ($limit != 0) {
             $limit = "LIMIT 0, $limit";
          } else {
             $limit = '';
          }

          /*
           * Absetzen des Queries.
           */
          $this->db->query("" .
                "SELECT " .
                "   b.idart, " .
                "   b.title, " .
                "   b.summary, " .
                "   b.created, " .
                "   b.lastmodified, " .
                "   b.artsort, " .
                "   b.redirect_url, " .
                "   b.online, " .
                "   DATE_FORMAT(b.created, '%d.%m.%y') as erstellungsdatum, " .
                "   DATE_FORMAT(b.lastmodified, '%d.%m.%y') as aktualisierungsdatum " .
                "FROM {$cfg['tab']['cat_art']} as a " .
                "LEFT JOIN {$cfg['tab']['art_lang']} as b ON a.idart = b.idart " .
                "LEFT JOIN {$cfg['tab']['cat_lang']} as c ON a.idcat = c.idcat " .
                "WHERE " .
                "   a.idcat = $idcat " .
                "   AND b.idlang = {$this->lang} " .
                "ORDER BY " .
                "   $sortCriteria " .
                "$limit" .
                "");

          global $idart; // get current idart
     
      while ($this->db->next_record()) {

         $returnValue[] = array(

            'teasertitle'=>$this->db->f('title'),
            'teaser'=>$this->db->f('summary'),
            'idcat'=>$idcat,
            'idart'=>$this->db->f('idart'),
            'link'=>'front_content.php?idcat='.$idcat.'&idart='.$this->db->f('idart'),
            'redirect'=>$this->db->f('redirect_url'),
            'online'=>$this->db->f('online'),
            'klasse'=> (($idart == $this->db->f('idart')) ? "on" : "off"),
            'created'=>$this->db->f('erstellungsdatum'));
      } 

          return $returnValue;
       }

    }

    $articleList = new articleList("CMS_VALUE[1]");
    $articleList->setBefore('');
    $articleList->setAfter('');
    $articleList->setTeaserMask('
              <a href="{link}" class="{klasse}">{teasertitle}</a><br>
    ');
    
    
    if ($articles == 0) {
    echo $articleList->getArticleList('sorted', true);}

    echo "<br><br>";
    ?>
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Modifizierte Newsliste / Nichts anzeigen wenn nur ein Ar

Beitrag von xmurrix »

Hallo saschar,

die Liste soll ausgegeben werden, wenn mindestens 2 Artikel vorhanden sind, vermutlich auch nur dann, wenn es sich hierbei um Artikel handelt, die nicht offline sind.

- Entweder erweiterst du die Funktion getArticleList, damit dieser nur Artikel zurückliefert, die online sind

- Oder du passt die Logik ab Zeile 103 an. Aus der Variable $articles alle Artikel extrahieren, die online sind. Dann die Liste generieren, wenn die Anzahl extrahierter Artikel mehr als eins ist.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Gesperrt