Seite 1 von 1

2 artikellisten im template - problem beim blättern

Verfasst: So 20. Feb 2005, 10:15
von feiger_abweichler
hallo contenido-gemeinde,

ich benutze in einem template zwei verschiedene artikellisten von kummer:

- Artikelliste#3a v1.0 mit Bild
- w3concepts_alist_v1

funktioniert fast alles wunderbar. nur habe ich leider das problem, dass beim weiterblättern in einer liste auch die zweite artikelliste mit weitergeblättert wird.

habe mit der suche leider nichts gefunden, hat jemand von euch einen tipp für mich?

danke und gruß,

der abweichler

Verfasst: So 20. Feb 2005, 10:39
von Halchteranerin
bitte immer den Link zum Modul/zu den Modulen mit posten!

Verfasst: So 20. Feb 2005, 22:50
von i-fekt
Das Problem kenne ich. Ich benutze daher ein Modul von Snoopy oder SkySurfer oder so wenn es ums blättern geht.

Die Artikelliste#3 ist dann gut, wenn auf einer Einstiegsseite Artikel damit ausgegebn werden sollen aber kein Blättermodul enthalten ist.

Verfasst: Mo 21. Feb 2005, 15:16
von feiger_abweichler
hallo,

erst einmal vielen dank für die antworten. die module sind einmal von kummer und einmal eins von kummer, modifiziert von craxx


es handelt sich um folgende module:
http://www.contenido.org/forum/viewtopi ... w3concepts

und:
http://www.contenido.org/forum/viewtopi ... w3concepts

werden hier vielleicht die selben variablen oder so verwendet? bin für jede hilfe dankbar.

gruß, der abweichler

Verfasst: Mo 21. Feb 2005, 16:42
von kummer
das problem ist, dass beide die gleichen übergabeparameter verwenden. du musst eines der beiden module anpassen, damit statt des übergabeparameters einer genommen wird, der im gewählten template eindeutig ist.

Verfasst: Di 22. Feb 2005, 13:00
von feiger_abweichler
hi kummer,

vielen dank für deine antwort.

ich als php-laie: :oops:
um welche parameter handelt es sich?

würde mich um hilfe freuen.

muss ich nur im output oder auch im input etwas ändern?

was genau muss ich ändern (variabel-namen?)?

danke im voraus für deine hilfe.

der abweichler

ps:

hier der output des moduls, dass ich ändern möchte (als zweite artikelliste benutze ich die artikelliste mit anzeige der unterkategorien(http://www.contenido.org/forum/viewtopi ... w3concepts.) :

Code: Alles auswählen

<?php 

    // Manuelle Konfiguration des Moduls 
    $uploadpfad = "/cms/upload/"; // Relativ zum Root-Verzeichnis (mit Slash am Anfang und am Ende) 
    $thumbnailpfad = "/cms/upload/bilder/miniaturbilder/"; //relativ zum root-verzeichnis (mit Slash am Anfang und am Ende) 

    // Konfiguration 
    $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]"; 

    $navigationslink['previous'] = "CMS_VALUE[4]"; 
    if ($navigationslink['previous'] == '') $navigationslink['previous'] = '[:: rückwärts ]'; 

    $navigationslink['next'] = "CMS_VALUE[5]"; 
    if ($navigationslink['next'] == '') $navigationslink['next'] = '[ vorwärts ::]'; 

    $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)?(''):('AND 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 
                    $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 
                    $nurstartartikel 
                ORDER BY e.artsort 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 
                    $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 
                    $nurstartartikel 
                ORDER BY e.artsort 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 
                    $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 
                    $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); 

    // HTML am Anfang der Ausgabe 
    echo '</p><table cellpadding="0" cellspacing="0" width="100%"><tr><td>'; 

    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' 
                OR b.type = 'CMS_IMG' 
            ) 
            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")); 

        $ueberschrift = urldecode($db2->f("value")); 
        $datum = $db->f("erstellungsdatum"); 

        $db2->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_HTML' 
            ) 
            ORDER BY b.type, a.typeid ASC 
            "; 

        // NEU: Liest die zweite Headline aus. START 

        $sql3 = " 
            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($sql3); 
        $db2->next_record(); 
        $db2->next_record(); 

        $nextheadline = urldecode($db2->f("value"));

        // NEU: Liest die zweite Headline aus. ENDE 
        
        $db2->query($sql); 
        $db2->next_record(); 

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

        if ($bild_vorhanden) { 
            $width = "CMS_VALUE[7]"; 
            $width += 5; 
            $src_image_size = getimagesize($cfg['path']['frontend'].$bilddateiname); 
            echo "<span class=\"headline\">$ueberschrift</span>&nbsp;<table width=\"500\" border=\"0\" cellspacing=\"2\" cellpadding=\"0\"><tr><td valign=\"top\" width=\"100\"><a href=\"$link\"><img src=\"$bilddateiname\" alt=\"\" align=\"left\" border=\"1\"></a></td><td class=\"subheadline\" valign=\"top\">$nextheadline <a href=\"$link\"> mehr...</a></td><tr></table>"; 
        } else { 
            echo "$ueberschrift<br/>$datum<br/><br/>$newsubheadline<br/>$link<br/><br/><br/>"; 
        } 

    } 

    // HTML am Ende der Ausgabe 
    echo '</td></tr></table>'; 

    if ($limit > 0 || $anzahl_artikel > $limit + $angezeigte_anzahl) { 
        echo '<table cellpadding="0" cellspacing="0" style="width:100%"><tr>'; 
        if ($limit > 0) { 
            $displaylimit = ($limit - $angezeigte_anzahl >= 0)?($limit - $angezeigte_anzahl):(0); 
            echo "<td align=\"left\"><a href=\"".$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."\">{$navigationslink['previous']}</a></td>"; 
        } else { 
            echo '<td>&nbsp;</td>'; 
        } 
        if ($anzahl_artikel > $limit + $angezeigte_anzahl) { 
            $displaylimit = $limit + $angezeigte_anzahl; 
            echo "<td align=\"right\"><a href=\"".$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."\">{$navigationslink['next']}</a></td>"; 
        } else { 
            echo '<td>&nbsp;</td>'; 
        } 
        echo '</tr></table>'; 
    } 

?>

2 Artikellisten sind kein Problem

Verfasst: Do 12. Mai 2005, 18:16
von prinzkafka
ist kein Problem 2 mal eine Artikelliste von Kummer zu verwenden:

ändere einfach mit Find&Replace im Output ALLE

Code: Alles auswählen

displaylimit
in

Code: Alles auswählen

displaylimit2
kannst auch ne andere Zahl nehmen oder es umbenennen wie du willst, jedenfalls funktioniert das Blättern dann vernünftig, soll heißen, das zweite Modul blättert nicht mehr mit

schaust du hier, siehst du daß es funktioniert

http://biglarv.prinzkafka-studio.de/cms ... 8&idart=16

Verfasst: Do 19. Mai 2005, 11:48
von Karin Dähne
Ich stand gerade selbst vor dem Problem mit dem Einsatz mehrerer Artikellisten in einem Template.

Da ich aber nicht das Modul kopieren und unter verschiedenen Versionen einsetzen wollte hab ich Folgendes mit Erfolg versucht:

Ein alter Artikel hier im Forum, es ging um die Ermittlung der Containernummer im Template http://www.contenido.org/forum/viewtopi ... inernummer inspirierte mich zu dieser Lösung:
"$eintrag", bzw. "eintrag" ist hier mit "$displaylimit" bzw. "displaylimit" zu ersetzen.
Getestet in der Version 4.4.4

Im INPUT :

Code: Alles auswählen

//Zur Uebergabe der Templatenummer:
$mcnr = "eintrag";
$mcnr .= $cnumber;
echo '<input type="hidden" name="CMS_VAR[1000]" value="'.$mcnr.'">';
und im OUTPUT:

Code: Alles auswählen

statt 
$eintrag => $CMS_VAR[1000]
bzw. statt 
eintrag => CMS_VAR[1000]
WICHTIG: Das Template muß einmal aufgerufen und "abgeschickt" werden. Also einmal den grünen Button drücken.
Sonst wird die Nummer des Templates nicht erzeugt und an das OUTPUT übermittelt

Jetzt kann man bei getesteten 2 Artikellisten im Template munter in der oberen und unteren Navigation hin und her klicken, ohne das er sich anscheinend verhaspelt.

Was hab ich gemacht?:
Ich erzeuge im INPUT einen Variablennamen "eintrag" + der Containernummer im Template (z.B. "13") also "eintrag13".
Den übergebe ich per "hidden" an das OUTPUT.

Der Einsatz von "$CMS_VALUE[1000]" erzeugt den Variablennamen "$eintrag13".
(Das kann man erkennen, wenn man den betreffenden Eintrag in der Tabelle "con_code" ansieht.)

Ich arbeite jetzt schon etwas länger mit dem Einsatz von $CMS_VALUE[x] in der Übergabe von Werten aus Optionslisten. Es gab dabei noch nie Probleme und erspart eine Menge if-Abfragen oder switches.

Was mir aber zu denken gibt:

Es kommt je Klick (obere oder untere Artikelliste) folgendes in der Adresszeile heraus:
Der neue "Klick" wird immer an die bestehende Adresse angehängt.
Dadurch ist dann natürlich auch über die "Zurückfunktion" des Browsers jeder "Klick" wider rückgängig zu machen.

Code: Alles auswählen

Aufruf der Seite:
http://localhost/abw/front_content.php?idcat=4&client=1&lang=1&style=s

1.Klick: (unten)
http://localhost/abw/front_content.php?idcat=4&client=1&lang=1&style=s&a=view&eintrag13=6

2. Klick: (oben)
http://localhost/abw/front_content.php?idcat=4&client=1&lang=1&style=s&a=view&eintrag13=6&a=view&eintrag12=4
Ist das gesund??? ;-)
Kann es zu Problemen führen, wenn jemand zu oft hin- und her klickt und dabei eine ultralange Adresse produziert?

BTW: Das tritt aber auch ein, wenn ich zwei Artikellisten mit unterschiedlichen Variablennamen, also "$eintag" / "eintrag" und $eintag2" / "eintrag2" einsetze. Der Errorlog bleibt Eintragsfrei.


Grüße,
Karin.