Seite 1 von 1

Artikelliste, mal 'ne korrigierte Version

Verfasst: Mo 25. Aug 2003, 19:17
von HerrB
Aufgrund der vielen Fragen zur Artikelliste hier mal eine korrigierte Version mit Anmerkungen...

Grundlage ist der Code des Beispiel-Mandanten (der übrigens etliche Fehler enthält). Das Modul bei contenido-module.de sieht ähnlich aus, enthält aber mehr Funktionen. Angegeben ist der Output/Ausgabebereich-Code:

Code: Alles auswählen

<?php
$selcat = "CMS_VALUE[0]"; // selected category

if($selcat!="0" && $selcat!=""){
// select all articles in category
$query = "SELECT ARTLANG.idart, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".
          $cfg["tab"]["art_lang"]." AS ARTLANG ".
         "WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' AND ".
         "ARTLANG.online = '1' ORDER BY CATART.idart DESC";

// execute query
$db->query($query);

unset($articleID); 
unset($linkID);

// get id's of sub articles
while ($db->next_record()) {
  $articleID[] = $db->f("idartlang");
  $linkID[] = $db->f("idart");
} // end while

// Table header
echo '
<table width="165" border="0" cellspacing="0" cellpadding="0">
<tr><td height="30" colspan="2" ></td></tr>
<tr><td height="21" width="22" style="border: 0px; border-top:1px; border-bottom:1px; border-color: #F7C473; border-style: solid; background-color: #FCF2D5"><img src="images/wuerfel.gif" width="22" height="21" border="0"></td>
<td width="143" style="border: 1px; border-left:0px; border-color: #F7C473; border-style: dashed; background-color: #FCF2D5; padding-left:10px" class="punkte">CMS_VALUE[2]</td></tr>';

// Loop through articles
if (is_array($articleID)) {
    foreach ($articleID as $key => $value) {

          // select all CMS variables of the article
          $sql = "SELECT * FROM ".$cfg["tab"]["content"]." WHERE idartlang = '$value' AND idtype = '1' AND typeid = '1'";
          $db->query($sql);
          $db->next_record();
          $headline = urldecode($db->f("value"));

          if (strlen($headline) > CMS_VALUE[3]) { 
            $headline = substr($headline, 0, CMS_VALUE[3]);
            $headline .= '..';
          }

          // link
          $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$selcat&idart=$linkID[$key]&m=$m&s=$s");
          
          echo '<tr><td colspan="2" class="text" height="22" style="border: 1px; border-top:0px; border-color: #F7C473; border-style: dashed; background-color: #FCF2D5; padding-left:10px"><a href="'.$link.'">'.$headline.'</a></td></tr>';
          
    } // end while
        unset($headline);
    } // end foreach
} // end if (is_array)
echo '</table><br>';
?>
Im Gegensatz zum Kommentar im Beispiel-Mandanten werden alle Artikel angezeigt, inkl. Startartikel.

Wer das nicht möchte, muss die erste Abfrage in

Code: Alles auswählen

$query = "SELECT ARTLANG.idart, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".
          $cfg["tab"]["art_lang"]." AS ARTLANG ".
         "WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' AND CATART.is_start = '0' AND ".
         "ARTLANG.online = '1' ORDER BY CATART.idart DESC";
ändern (CATART.is_start = '0').

Natürlich geht es auch kürzer:

Code: Alles auswählen

<?php
$selcat = "CMS_VALUE[0]"; // selected category

if($selcat!="0" && $selcat!=""){
   // select all articles in category without start article
   $query = "SELECT CONTENT.value AS headline, ARTLANG.idart AS id FROM ".
             $cfg["tab"]["cat_art"]." AS CATART, ".
             $cfg["tab"]["art_lang"]." AS ARTLANG, ".
             $cfg["tab"]["content"]." AS CONTENT ".
            "WHERE CATART.idcat = '$selcat' AND CATART.is_start = '0' ".
            "AND CONTENT.idartlang = ARTLANG.idartlang AND CONTENT.idtype = '1' AND CONTENT.typeid = '1' ".
            "AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' ".
            "AND ARTLANG.online = '1' ORDER BY CATART.idart DESC";

   // execute query
   $db->query($query);

   if ($db->num_rows() > 0) {

      // Table header
      echo '<table width="165" border="0" cellspacing="0" cellpadding="0">';
      echo '<tr><td height="30" colspan="2" ></td></tr>';
      echo '<tr><td height="21" width="22" style="border: 0px; border-top:1px; border-bottom:1px; border-color: #F7C473; border-style: solid; background-color: #FCF2D5"><img src="images/wuerfel.gif" width="22" height="21" border="0"></td>';
      echo '<td width="143" style="border: 1px; border-left:0px; border-color: #F7C473; border-style: dashed; background-color: #FCF2D5; padding-left:10px" class="punkte">CMS_VALUE[2]</td></tr>';

      while ($db->next_record()) {
 
         $headline = urldecode($db->f("headline"));
         if (strlen($headline) > CMS_VALUE[3]) { 
            $headline = substr($headline, 0, CMS_VALUE[3]);
            $headline .= '..';
         }

         // link
         $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$selcat&idart=".$db->f("id")."&m=$m&s=$s");
          
         echo '<tr><td colspan="2" class="text" height="22" style="border: 1px; border-top:0px; border-color: #F7C473; border-style: dashed; background-color: #FCF2D5; padding-left:10px"><a href="'.$link.'">'.$headline.'</a></td></tr>';
      }
      unset($headline);
      echo '</table><br>';
   } // end while
} // end if
?>
Viel Erfolg.
HerrB

Re: Artikelliste, mal 'ne korrigierte Version

Verfasst: Fr 29. Aug 2003, 10:40
von AlexG
Hi HerrB,

ich hab diesen code mal ausprobiert, im backend sind die pluszeichen bei mir in den newsartikeln tatsächlich weg. aber leider bekomm ich im frontend nur noch ne leere seite angezeigt. desweiteren kann ich leider auch keine artikel mehr editieren, da diese nicht angezeigt werden.
habe ich noch was zu beachten, oder gibts nen tip

alex
contenido 4.3.2b

Verfasst: Fr 29. Aug 2003, 18:05
von Marten
Also, bei MIR scheint der erste, der "lange" Code zu funktionieren. :-)
Der andere, wie HerrB meint, gekürzte, allerdings nicht ...

Trotzdem: Danke für den Einsatz! 8-)

Marten

Verfasst: Fr 29. Aug 2003, 23:58
von AlexG
Kompliment an HerrB,

der lange Code funktioniert wirklich, solange man sich an den Standart hält.

A...l...karte für mich
erst testen dann jammern, funktioniert nicht bei meinen versuchen mit der zweigeteilten navigation.(wäre auch zu schön gewesen) evt. bin ich auch einfach zu dusselig.

gruss alex

Verfasst: Sa 30. Aug 2003, 09:57
von HerrB
Ich werde es mir nochmal angucken.

Gruß
HerrB

geht doch

Verfasst: Mo 1. Sep 2003, 12:43
von gulli0815
@ alex,
ich hab die navigation auch zweigeteilt und das klappt ganz hervorragend.
ich musste allerdings bei allen seiten das template neu zuweisen, vorher hatte ich im frontend auch nur weiße seiten ...

gruß gulli

Verfasst: Mi 22. Okt 2003, 12:22
von HerrB
Bei dem SQL-Befehl für "ohne" Startartikel fehlte ein "AND". Ich bitte dies zu entschuldigen. Der oben gepostete Code wurde korrigiert.

Gruß
HerrB

Verfasst: Mi 22. Okt 2003, 12:45
von emergence
vorschlag: noch ne verbesserungsmöglichkeit
wenn möglich definier doch im input bereich ob der startartikel mit angezeigt werden soll.

dann gibts net dauernt unterschiedlich versionen von artikelliste mit ohne startartikel.

weitere ausbaustufe vielleicht - sortierreihenfolge bei den news artikel -
zB nach datum anzeigen , alphabetisch, sortierschlüssel, name...

eventuell noch wieviele news maximal etc...

dann würde dein modul so ziemlich alle anforderungen erfüllen, die innerhalb der foren bis jetzt aufgetaucht sind.

lg

Verfasst: Sa 24. Apr 2004, 14:36
von HerrB
Ich habe den Thread ein bisschen aus den Augen verloren (bin in V4.4.4...) - ich setze mich nun aber an eine Erweiterung.

Neue Version wird unter Module V4.4 gepostet, ich hinterlasse hier dann aber einen Verweis.

Gruß
HerrB

Verfasst: Fr 21. Mai 2004, 17:28
von neu@cidnet.de
war falsch hier :(

Verfasst: So 6. Feb 2005, 16:29
von HerrB
Das Thema ist ja schon antik, aber da darauf verwiesen wird: Eine überarbeitete Version der Standardartikelliste, die für V4.4.3, V4.4.4 und V4.4.5 geeignet ist, gibt es hier: http://www.contenido.org/forum/viewtopic.php?t=7175

Gruß
HerrB