2 artikellisten im template - problem beim blättern

Gesperrt
feiger_abweichler
Beiträge: 40
Registriert: Do 20. Nov 2003, 16:01
Wohnort: Deutscher Meister 2004 ;-)
Kontaktdaten:

2 artikellisten im template - problem beim blättern

Beitrag 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
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

bitte immer den Link zum Modul/zu den Modulen mit posten!
i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag 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.
feiger_abweichler
Beiträge: 40
Registriert: Do 20. Nov 2003, 16:01
Wohnort: Deutscher Meister 2004 ;-)
Kontaktdaten:

Beitrag 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
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag 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.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
feiger_abweichler
Beiträge: 40
Registriert: Do 20. Nov 2003, 16:01
Wohnort: Deutscher Meister 2004 ;-)
Kontaktdaten:

Beitrag 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>'; 
    } 

?>
prinzkafka
Beiträge: 10
Registriert: Mi 14. Jan 2004, 14:36
Wohnort: Dresden
Kontaktdaten:

2 Artikellisten sind kein Problem

Beitrag 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
++Frieden nur ein Wort, Krieg nur ein Befehl++
Karin Dähne
Beiträge: 140
Registriert: Fr 20. Feb 2004, 17:48
Wohnort: Braunschweig
Kontaktdaten:

Beitrag 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.
Gesperrt