w3c alist.mod6 gibt falschen Artikeltext in der Liste aus

Gesperrt
Benki
Beiträge: 93
Registriert: Mi 28. Sep 2005, 13:04
Kontaktdaten:

w3c alist.mod6 gibt falschen Artikeltext in der Liste aus

Beitrag von Benki »

Moin,

benutze die Modifikation 6 der w3concepts-artikelliste. Mein Ziel ist es, die Subheadline, das 1. Bild des Artikels und die ersten x Zeichen des Artikeltextes auszugeben.

Dies funktioniert auch so bis auf den Text. Dort erscheint bei jedem Artikel der Text des ursprünglich ersten Artikels, den ich mal zu Testzwecken eingegeben habe (obwohl dieser mittlerweile schon gelöscht ist!) UND direkt vor dem Artikeltext wird auch noch die Subhead dieses falschen Artikels angezeigt.

Ich vermute, dass ich nicht auf den richtigen Datensatz oder den richtigen Bereich des DS zeige. Der Link funktioniert dann übrigens trotzdem.

Da ich leider kaum Kenntnisse habe von SQL-Abfragen, wäre es super, wenn jemand von euch sich das anschaut. Ist bestimmt nur eine Klitzekleinigkeit.

Code: Alles auswählen

<?php 
/*********************************************** 
* CONTENIDO MODUL - OUTPUT 
* 
* Modulname   :     w3concepts.alist.mod6.v1 
* Author          :     Andreas Kummer 
* Copyright     :     mumprecht & kummer w3concepts 
* Created        :     08-07-2004 
* Modified       :     08-07-2004 
************************************************/ 

    // manuelle konfiguration des moduls 
    $uploadpfad = "/cms/upload/"; // relativ zum root-verzeichnis (mit slash am anfang und am ende) 
    $thumbnailpfad = "/cms/upload/bilder/auto_thumbnails/"; //relativ zum root-verzeichnis (mit slash am anfang und am ende) 
    $thumbnailpfadausgabe = "/cms/cms/upload/bilder/auto_thumbnails/"; //relativ zum root-verzeichnis (mit slash am anfang und am ende) 


    // modulinterne vorkonfiguration, werte können geändert werden 

    $categorie = "CMS_VALUE[0]"; 

    $angezeigte_anzahl = "CMS_VALUE[1]"; 
    if ($angezeigte_anzahl == '') $angezeigte_anzahl = 10; 

    $startartikel = "CMS_VALUE[2]"; 
    if ($startartikel == '') $startartikel = false; 

    $subheadline = "CMS_VALUE[3]"; 
    if ($subheadline == '') $subheadline = 200; 

    $navigationslink['previous'] = "CMS_VALUE[4]"; 
    if ($navigationslink['previous'] == '') $navigationslink['previous'] = '[vorherige...]'; 

    $navigationslink['next'] = "CMS_VALUE[5]"; 
    if ($navigationslink['next'] == '') $navigationslink['next'] = '[...weitere]'; 

    $ebene = "CMS_VALUE[6]"; 

    $bildbreite = "CMS_VALUE[7]"; 

    $limit = (isset($_GET['displaylimit']) && $_GET['displaylimit'] > 0)?($_GET['displaylimit']):(0); 

    $db = new DB_Contenido; 
    $db2 = new DB_Contenido; 

    // wenn startartikel true ist, werden die startartikel dargestellt, sonst nicht 
    $nurstartartikel = ($startartikel)?(''):('WHERE d.is_start = 0'); 

    // liest die anzahl betroffener artikel aus der datenbank 
    switch ($ebene) { 
        case -2: 
            $sql_1 = " 
                SELECT count(*) AS anzahl 
                FROM {$cfg['tab']['cat']} AS a, 
                     {$cfg['tab']['cat']} AS b, 
                     {$cfg['tab']['cat']} AS c 
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat 
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart 
                WHERE 
                    ( 
                        ( 
                            c.parentid = b.idcat 
                            AND b.parentid = a.idcat 
                        ) 
                        OR 
                        ( 
                            c.idcat = b.idcat 
                            AND b.parentid = a.idcat 
                        ) 
                        OR 
                        ( 
                            c.idcat = b.idcat 
                            AND b.idcat = a.idcat 
                        ) 
                    ) 
                    AND a.idcat = $categorie 
                    AND e.online = 1 
                    AND e.redirect = 0 
                    AND e.external_redirect = 0 
                    AND e.idlang = $lang 
                    AND e.artsort = 5
                    $nurstartartikel 
                "; 
            $sql_2 = " 
                SELECT c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum 
                FROM {$cfg['tab']['cat']} AS a, 
                {$cfg['tab']['cat']} AS b, 
                {$cfg['tab']['cat']} AS c 
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat 
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart 
                WHERE 
                    ( 
                        ( 
                            c.parentid = b.idcat 
                            AND b.parentid = a.idcat 
                        ) 
                        OR 
                        ( 
                            c.idcat = b.idcat 
                            AND b.parentid = a.idcat 
                        ) 
                        OR 
                        ( 
                            c.idcat = b.idcat 
                            AND b.idcat = a.idcat 
                        ) 
                    ) 
                    AND a.idcat = $categorie 
                    AND e.online = 1 
                    AND e.redirect = 0 
                    AND e.external_redirect = 0 
                    AND e.idlang = $lang
                    AND e.artsort = 5
                    $nurstartartikel 
                ORDER BY e.created DESC 
                LIMIT $limit, $angezeigte_anzahl 
                "; 
            break; 
        case -1: 
            $sql_1 = " 
                SELECT count(*) AS anzahl 
                FROM {$cfg['tab']['cat']} AS a, 
                     {$cfg['tab']['cat']} AS b, 
                     {$cfg['tab']['cat']} AS c 
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON b.idcat = d.idcat 
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart 
                WHERE 
                    ( 
                        ( 
                            c.idcat = b.idcat 
                            AND b.parentid = a.idcat 
                        ) 
                        OR 
                        ( 
                            c.idcat = b.idcat 
                            AND b.idcat = a.idcat 
                        ) 
                    ) 
                    AND a.idcat = $categorie 
                    AND e.online = 1 
                    AND e.redirect = 0 
                    AND e.external_redirect = 0 
                    AND e.idlang = $lang 
                    AND e.artsort = 5
                    $nurstartartikel 
                "; 
            $sql_2 = " 
                SELECT c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum 
                FROM {$cfg['tab']['cat']} AS a, 
                {$cfg['tab']['cat']} AS b, 
                {$cfg['tab']['cat']} AS c 
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat 
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart 
                WHERE 
                    ( 
                        ( 
                            c.idcat = b.idcat 
                            AND b.parentid = a.idcat 
                        ) 
                        OR 
                        ( 
                            c.idcat = b.idcat 
                            AND b.idcat = a.idcat 
                        ) 
                    ) 
                    AND a.idcat = $categorie 
                    AND e.online = 1 
                    AND e.redirect = 0 
                    AND e.external_redirect = 0 
                    AND e.idlang = $lang 
                    AND e.artsort = 5
                    $nurstartartikel 
                ORDER BY e.created DESC 
                LIMIT $limit, $angezeigte_anzahl 
                    "; 
            break; 
        case 0: 
            $sql_1 = " 
                SELECT count(*) AS anzahl 
                FROM {$cfg['tab']['cat']} AS a, 
                     {$cfg['tab']['cat']} AS b, 
                     {$cfg['tab']['cat']} AS c 
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON b.idcat = d.idcat 
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart 
                WHERE 
                    ( 
                        ( 
                            c.idcat = b.idcat 
                            AND b.idcat = a.idcat 
                        ) 
                    ) 
                    AND a.idcat = $categorie 
                    AND e.online = 1 
                    AND e.redirect = 0 
                    AND e.external_redirect = 0 
                    AND e.idlang = $lang 
                    AND e.artsort = 5
                    $nurstartartikel 
                "; 
            $sql_2 = " 
                SELECT c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum 
                FROM {$cfg['tab']['cat']} AS a, 
                {$cfg['tab']['cat']} AS b, 
                {$cfg['tab']['cat']} AS c 
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat 
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart 
                WHERE 
                    ( 
                        ( 
                            c.idcat = b.idcat 
                            AND b.idcat = a.idcat 
                        ) 
                    ) 
                    AND a.idcat = $categorie 
                    AND e.online = 1 
                    AND e.redirect = 0 
                    AND e.external_redirect = 0 
                    AND e.idlang = $lang 
                    AND e.artsort = 5
                    $nurstartartikel 
                ORDER BY e.created DESC 
                LIMIT $limit, $angezeigte_anzahl 
                    "; 
            break; 
    } 

    $db->query($sql_1); 
    $db->next_record(); 

    $anzahl_artikel = $db->f("anzahl"); 

    $db->query($sql_2); 

   echo '<div id=artikel> 
             <table> 
              <tr> 
               <td> 
             <table width="450" class="artlist" align="left" cellpadding="0" cellspacing="0">'; 

    while ($db->next_record()) { 

        $sql = " 
            SELECT a.value, a.typeid, b.type, c.filename, c.dirname FROM {$cfg['tab']['content']} AS a 
            LEFT JOIN {$cfg['tab']['type']} AS b ON a.idtype = b.idtype 
            LEFT JOIN {$cfg['tab']['upl']} AS c ON a.value = c.idupl 
            WHERE 
            a.idartlang = ".$db->f("idartlang")." 
            AND ( 
                b.type = 'CMS_HTMLHEAD' 
            ) 
            ORDER BY b.type, a.typeid ASC 
            "; 

        $db2->query($sql); 
        $db2->next_record(); 

        $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=".$db->f("idcat")."&idart=".$db->f("idart")); 
        //$link = $sess->url("/$client/$lang/".$db->f("idcat")."/".$db->f("idart").".html"); 

        echo " <tr><td colspan=6 height=\"10\" class=\"artlistdate\">".$db->f("erstellungsdatum")."</td></td>
               <tr><td colspan=6 height=\"10\" class=\"artlisthead\"><a href=\"$link\">".urldecode($db2->f("value"))."</a></td></tr>
               <tr><td colspan=6 height=\"10\"></td></tr> "; 

        $sql = " 
            SELECT a.value, a.typeid, b.type, c.filename, c.dirname FROM {$cfg['tab']['content']} AS a 
            LEFT JOIN {$cfg['tab']['type']} AS b ON a.idtype = b.idtype 
            LEFT JOIN {$cfg['tab']['upl']} AS c ON a.value = c.idupl 
            WHERE 
            a.idartlang = ".$db->f("idartlang")." 
            AND ( 
                b.type = 'CMS_HTML' 
            ) 
            ORDER BY b.type, a.typeid ASC 
            "; 

        $db2->query($sql); 
        $db2->next_record(); 



        // den artikel auf die gewünschte länge reduzieren (trennung nur 
        // nach bzw. vor einem ganzen wort 
        if (strlen($db2->f("value")) > $subheadline) { 
            $newsubheadline = ''; 
            $worte = explode (" ",strip_tags(urldecode($db2->f("value")))); 
            $zulang = false; 
            foreach ($worte as $wort) { 
                if (strlen($newsubheadline." ".$wort) >= $subheadline) $zulang = true; 
                $newsubheadline = (!$zulang)?($newsubheadline." ".$wort):($newsubheadline); 
            } 
            $newsubheadline .= "..."; 
        } else { 
            $newsubheadline = strip_tags(urldecode($db2->f("value"))); 
        } 

        $sql = " 
            SELECT a.value, a.typeid, b.type, c.filename, c.dirname FROM {$cfg['tab']['content']} AS a 
            LEFT JOIN {$cfg['tab']['type']} AS b ON a.idtype = b.idtype 
            LEFT JOIN {$cfg['tab']['upl']} AS c ON a.value = c.idupl 
            WHERE 
            a.idartlang = ".$db->f("idartlang")." 
            AND ( 
                b.type = 'CMS_IMG' 
            ) 
            ORDER BY b.type, a.typeid ASC 
            "; 

        $db2->query($sql); 
        $bild_vorhanden = false; 
        while ($db2->next_record()) { 
            if ($db2->f("type") == 'CMS_IMG' && $db2->f("typeid") == 1) { 
                $bilddateiname = "{$thumbnailpfad}{$bildbreite}_".$db2->f("filename").""; 
                $bilddateinameausgabe = "{$thumbnailpfadausgabe}{$bildbreite}_".$db2->f("filename").""; 
                if (!file_exists($cfg['path']['frontend'].$bilddateiname)) { 

                    $src_image_size = getimagesize($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename")); 

                    $bildhoehe = round($src_image_size[1] * $bildbreite / $src_image_size[0]); 
                    if ($bildhoehe > $bildbreite) { 
                        $bildhoehe = $bildbreite; 
                        $bildbreite = round($src_image_size[0] * $bildhoehe / $src_image_size[1]); 
                    } 

                    $dst_im = imagecreatetruecolor($bildbreite,$bildhoehe); 

                    if ($src_image_size[2] == 1) { 
                        $src_im = imagecreatefromGIF($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename")); 
                    } elseif ($src_image_size[2] == 2) { 
                        $src_im = @ImageCreateFromJPEG($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename")); 
                    } else { 
                        $src_im = imagecreatefromgd($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename")); 
                    } 

                    imagecopyresampled ($dst_im,$src_im,0,0,0,0,$bildbreite,$bildhoehe,$src_image_size[0],$src_image_size[1]); 
                    imagejpeg ($dst_im,$cfg['path']['frontend'].$bilddateiname,100); 
                } 
                $bild_vorhanden = true; 
            } 
        } 

// nachfolgend die Ausgaberoutine


        if ($bild_vorhanden) { 
            $width = "CMS_VALUE[7]"; 
            $width += 5; 
            $src_image_size = getimagesize($cfg['path']['frontend'].$bilddateiname); 
            echo "<tr> 
                      <td width=\"102\" class=\"artlistthumb\"><a href=\"$link\"><img style=\"border:solid white 1px\" src=\"$bilddateinameausgabe\" {$src_image_size[3]}/></a></td> 
                      <td width=\"10\">&nbsp;</td>
                      <td width=\"1\" bgcolor=\"#999999\"></td>
                      <td width=\"10\">&nbsp;</td>
                      <td colspan=2 width=\"327\" class=\"artlisttext\"><a href=\"$link\">".urldecode($db2->f("value"))."$newsubheadline</a></td> 
                     </tr> 
                     <tr> 
                      <td colspan=6>&nbsp;</td> 
                     </tr>
                     <tr><td colspan=6 height=\"1\" ></td></tr>
                     <tr><td colspan=6 height=\"1\" bgcolor=\"#999999\"></td></tr>
                     <tr><td colspan=6 height=\"10\"></td></tr>"; 
        } else { 
            echo "<tr> 
                      <td width=\"102\">&nbsp;</td>
                      <td width=\"10\">&nbsp;</td>
                      <td width=\"1\" bgcolor=\"#999999\"></td>
                      <td width=\"10\">&nbsp;</td>
                      <td colspan=2 width=\"327\" class=\"artlisttext\"><a href=\"$link\">".urldecode($db2->f("value"))."$newsubheadline</a></td> 
                     </tr>
                     <tr><td colspan=6 height=\"10\" ></td></tr>
                     <tr><td colspan=6 height=\"1\" bgcolor=\"#999999\"></td></tr>
                     <tr><td colspan=6 height=\"10\"></td></tr>"; 


        } 

    } 

    echo '

           </td> 
             </tr> 
             </table> 
             <tr> 
             <td> 
'; 

    if ($limit > 0 || $anzahl_artikel > $limit + $angezeigte_anzahl) { 
        echo '<table class="artlistbottom" align="left" cellpadding="0" cellspacing="0"> 
                 <tr> 
                  <td colspan=2>&nbsp;</td> 
                 </tr> 
                 <tr>'; 
        if ($limit > 0) { 
            $displaylimit = ($limit - $angezeigte_anzahl >= 0)?($limit - $angezeigte_anzahl):(0); 
            echo "<td class=\"artlistprev\"><a href=\"".$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."\">{$navigationslink['previous']}</a></td>"; 
            //echo "<td class=\"artlistprev\"><a href=\"".$sess->url("/$client/$lang/$idcat/$idart/$displaylimit.html")."\">{$navigationslink['previous']}</a></td>"; 
        } else { 
            echo '<td>&nbsp;</td>'; 
        } 
        if ($anzahl_artikel > $limit + $angezeigte_anzahl) { 
            $displaylimit = $limit + $angezeigte_anzahl; 
            echo "<td class=\"artlistnext\"><a href=\"".$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."\">{$navigationslink['next']}</a></td>"; 
            // echo "<td class=\"artlistnext\"><a href=\"".$sess->url("/$client/$lang/$idcat/$idart/$displaylimit.html")."\">{$navigationslink['next']}</a></td>"; 
        } else { 
            echo '<td>&nbsp;</td>'; 
        } 
        echo '</tr></table>'; 
    } 
        echo '</td></tr></table></div>'; 
?>
Vielen Dank vorab für eure Hilfe!

Grüße Benki
rezeptionist
Beiträge: 1536
Registriert: Fr 20. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rezeptionist »

hatte auch mal das problem

einfach mal con_code leeren (nicht löschen)
greets
Benki
Beiträge: 93
Registriert: Mi 28. Sep 2005, 13:04
Kontaktdaten:

Beitrag von Benki »

Danke für die schnelle Antwort,

leider hat das nichts gebracht. Ich vermute halt, dass es auf den falschen DS zeigt !?
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Kannst Du mal testweise meine Artikelliste Advanced einsetzen? So auf den ersten Blick sehe ich nichts (abgesehen davon, dass das Modul nur mit $cfg[start_article_compatible] = true funktionieren dürfte.

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
rezeptionist
Beiträge: 1536
Registriert: Fr 20. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rezeptionist »

zeigt es im Backend auch die falschen an ??
greets
Benki
Beiträge: 93
Registriert: Mi 28. Sep 2005, 13:04
Kontaktdaten:

Beitrag von Benki »

jap. tut es
Benki
Beiträge: 93
Registriert: Mi 28. Sep 2005, 13:04
Kontaktdaten:

Beitrag von Benki »

@ HerrB

ich hab die Startartikel extra ausgeschaltet, da ich in der Rubrik gar keine Startartikel definiert habe. Es gibt eine Rubrik Meldungen wo nur die Artikel drin stehen, die in der nächst höheren in der Artikelliste angezeigt werden.

Es funktioniert ja auch mit der Verlinkung und dann mit der Anzeige des Artikels. Halt nur in der Artikelliste steht der falsche Text.

Benki
rezeptionist
Beiträge: 1536
Registriert: Fr 20. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rezeptionist »

Was passiert den wenn du einen neuen Artikel anlegst ??
greets
Benki
Beiträge: 93
Registriert: Mi 28. Sep 2005, 13:04
Kontaktdaten:

Beitrag von Benki »

Er zeigt brav, subhead und Bild an und wieder den nicht dazugehörigen Text - also wieder den Text des falschen Artikels. Ich hab aus anderen Beiträgen den Tipp verfolgt mit 'next record' (auch mehrmals) weiter zu springen, aber dann gibt er die Inhalte der anderen Container aus, aber nie den html-Text des Artikels.

Verständnisfrage nebenbei: zeigt 'next record' auf das nächste Datenwort oder den nächsten Datensatz (wobei für mich eine Datensatz ein Artikel ist(ist das so?)) ?

Danke.

Benki
Gesperrt