Artikelliste und aktiven Link kennzeichnen

Gesperrt
senghufu
Beiträge: 11
Registriert: Do 18. Mai 2006, 10:49
Kontaktdaten:

Artikelliste und aktiven Link kennzeichnen

Beitrag von senghufu »

Hallo zusammen,
ich nutze eine Artikelliste als Navigation.
Ich möchte gerne dass der Link der momentan aktiven Seite anders gekennzeichnet ist als die anderen Links.

Könnte mir bitte jemand helfen?
Danke im voraus

Hier der Output des verwendeten Moduls:

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 = $myIdCat;

      $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" .
            "");

      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'),
            '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>

');
echo $articleList->getArticleList('sorted', true);
?>
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Re: Artikelliste und aktiven Link kennzeichnen

Beitrag von emergence »

denke das es so gehen sollte...
ist eine möglichkeit... zwar keine saubere lösung, aber naja...

Code: Alles auswählen

      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'), 
            'created'=>$this->db->f('erstellungsdatum')); 
      } 
ersetzen durch

Code: Alles auswählen

      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')); 
      } 
nicht getestet...
*** make your own tools (wishlist :: thx)
senghufu
Beiträge: 11
Registriert: Do 18. Mai 2006, 10:49
Kontaktdaten:

Beitrag von senghufu »

Ja, super - klappt.
Vielen Dank
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von stefkey »

Hallo senghuhu,

bei mir wird kein output erzeugt. Sollte das Modul auch mit 4.8.8 laufen?

Grüße,
stefkey
Gesperrt