Frage zur Artikelsortierung im Modul Artikelliste

Gesperrt
Christian
Beiträge: 15
Registriert: Do 19. Dez 2002, 21:08
Wohnort: Ludwigshafen
Kontaktdaten:

Frage zur Artikelsortierung im Modul Artikelliste

Beitrag von Christian » So 7. Feb 2010, 19:23

Hallo Zusammen,

ich stehe momentan auf dem Schlauch. Ich setze das o.g. Modul ein bei contenido 4.6.23. Wenn ich den Code richtig verstehe werden die Artikel der Liste nach Veränderungsdatum (lastmodified) sortiert und ausgegeben. Tatsächlich ist die Sortierung richtig, das ausgegebene Datum ist aber das Datum der Ersterstellung. Kann mir jemand von Euch auf die Sprünge helfen?

Viele Grüsse,
Christian

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* REFERENZ MODUL / ARTIKELLISTE
*
* Artikelliste mit Img 1, Head 1, Head 2
*
* Erstellt eine Liste mit allen Artikel bis
* auf den Startartikel.
*
* Author      :     Jan Lengowski
* Copyright   :     four for business AG
* Created     :     15-08-2002
* Modified    :     16-08-2002
************************************************/

// second db class instance
$db2 = new DB_Contenido;

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

 if($selcat!="0" && $selcat!=""){

// select all articles in category widthout start article
$query = "SELECT ARTLANG.idart, ARTLANG.idartlang, ARTLANG.created 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' AND CATART.is_start = '0'  ORDER BY ARTLANG.lastmodified 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

// loop through subarticles

echo '
<table width="540" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan ="2" style="border: 1px; border-left:0px; border-color: #97A4B5; border-style: solid; background-color: #B1C6D9; padding-left:10px" class="punkte">CMS_VALUE[2]</td>
</tr>
';

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();
          $head = $db->f("value");
          $lastmodified = substr(($db->f("lastmodified")),0,10);
          $lastmodified = substr($lastmodified,8,2).".".substr($lastmodified,5,2).".".substr($lastmodified,0,4);

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

          // link
          $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$selcat&idart=$linkID[$key]&m=$m&s=$s");

          echo '<tr>
<td class="text" height="22" style="border: 1px; border-top:0px; border-color: #97A4B5; border-style: solid; background-color: #FFFFFF; padding-left:10px"><a href="'.$link.'">'.urldecode($db->f("value")).'</a></td>
<td class="text" height="22" style="border: 1px; border-top:0px; border-color: #97A4B5; border-style: solid; background-color: #FFFFFF; padding-left:10px">'.$lastmodified.'</td>
</tr>';

    } // end while



          unset($headline);
        unset($text);
        
    } // end foreach
    
} // end if (is_array)

echo '</table><br>';


?>

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Frage zur Artikelsortierung im Modul Artikelliste

Beitrag von Oldperl » So 7. Feb 2010, 19:55

Hallo Christian,

*von Schlauch schieb* 8)
Da steht doch eigentlich alles drin, musst du nur das Feld nach dem sortiert wird auch mit auslesen und dementsprechend später deine Ausgabe anpassen.

Code: Alles auswählen

// select all articles in category widthout start article
$query = "SELECT ARTLANG.idart, ARTLANG.idartlang, ARTLANG.created 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' AND CATART.is_start = '0'  ORDER BY ARTLANG.lastmodified DESC";

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Christian
Beiträge: 15
Registriert: Do 19. Dez 2002, 21:08
Wohnort: Ludwigshafen
Kontaktdaten:

Re: Frage zur Artikelsortierung im Modul Artikelliste

Beitrag von Christian » So 7. Feb 2010, 20:35

Hallo Ortwin,

vielen Dank für Deine Antwort. Bin immer noch auf dem Schlauch :oops:

Eigentlich werden doch erst weiter unten im Code durch das "SELECT *" alle Felder aus der DB ausgelesen, die dann auf der Webseite ausgegeben werden, oder?
Damit müsste auch durch lastmodified das Änderungdatum gezogen werden.

Code: Alles auswählen

          // 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();
          $head = $db->f("value");
          $lastmodified = substr(($db->f("lastmodified")),0,10);
Viele Grüsse,
Christian

Christian
Beiträge: 15
Registriert: Do 19. Dez 2002, 21:08
Wohnort: Ludwigshafen
Kontaktdaten:

Re: Frage zur Artikelsortierung im Modul Artikelliste

Beitrag von Christian » So 7. Feb 2010, 21:40

Hallo nochmal,

ich glaube ich bin dem Problem auf der Spur. Kann es sein, dass in der Tabelle con_content das Datum lastmodified nicht aktualisiert wird, wenn ein Artikel geändert wird, sondern nur das lastmodified in der con_art_lang? Falls ja, weiss jemand warum das so ist, soll das so sein?

Viele Grüsse,
Christian

Gesperrt