Artikelliste, mal 'ne korrigierte Version

Gesperrt
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Artikelliste, mal 'ne korrigierte Version

Beitrag von HerrB » Mo 25. Aug 2003, 19:17

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
Zuletzt geändert von HerrB am Mi 21. Apr 2004, 08:24, insgesamt 2-mal geändert.

AlexG
Beiträge: 37
Registriert: Do 26. Jun 2003, 13:27
Wohnort: Baiersdorf
Kontaktdaten:

Re: Artikelliste, mal 'ne korrigierte Version

Beitrag von AlexG » Fr 29. Aug 2003, 10:40

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

Marten
Beiträge: 86
Registriert: Di 15. Jul 2003, 19:43
Kontaktdaten:

Beitrag von Marten » Fr 29. Aug 2003, 18:05

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

AlexG
Beiträge: 37
Registriert: Do 26. Jun 2003, 13:27
Wohnort: Baiersdorf
Kontaktdaten:

Beitrag von AlexG » Fr 29. Aug 2003, 23:58

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

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Sa 30. Aug 2003, 09:57

Ich werde es mir nochmal angucken.

Gruß
HerrB

gulli0815
Beiträge: 10
Registriert: Mi 25. Jun 2003, 19:04
Kontaktdaten:

geht doch

Beitrag von gulli0815 » Mo 1. Sep 2003, 12:43

@ 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

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mi 22. Okt 2003, 12:22

Bei dem SQL-Befehl für "ohne" Startartikel fehlte ein "AND". Ich bitte dies zu entschuldigen. Der oben gepostete Code wurde korrigiert.

Gruß
HerrB

emergence
Beiträge: 10600
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mi 22. Okt 2003, 12:45

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

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Sa 24. Apr 2004, 14:36

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

neu@cidnet.de
Beiträge: 356
Registriert: Do 15. Jan 2004, 21:32
Wohnort: Mönchengladbach
Kontaktdaten:

Beitrag von neu@cidnet.de » Fr 21. Mai 2004, 17:28

war falsch hier :(

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » So 6. Feb 2005, 16:29

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
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Gesperrt