Artikelliste nur mit Bildern...

Gesperrt
saschar
Beiträge: 141
Registriert: Mo 21. Okt 2002, 14:37
Wohnort: Dornbirn, A
Kontaktdaten:

Artikelliste nur mit Bildern...

Beitrag von saschar »

Hallo.
Bräucht ein bisschen Hilfe bzw. ein paar Tipps.

Und zwar habe ich eine Artikelliste so geändert, dass ich nur Bilder und keinen Text in der Übersicht habe (Text brauche ich vorerst keinen). Jetzt habe ich aber das Problem, dass ich eigentich alle Bilder oder zumindest eine bestimmte Menge in Reihen zu 6 Stück anzeigen lassen will, d.h. Bild 1-6 in der ersten Zeile und die Bilder 7-12 in der zweiten Zeile usw.
Im Moment ist es so das 6 Bilder angezeigt sind und dann eben ein Textlink kommt mit dem ich vor oder zurück kann.

Was muss ich da im Modul einbauen?
Kann mir da jemand helfen?


Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     w3concepts_alist_v1
* Author      :     Andreas Kummer
* Copyright   :     mumprecht & kummer w3concepts
* Created     :     06-05-2004
* Modified    :     16.05.2005 -saschar
************************************************/

    // manuelle konfiguration des moduls
    $uploadpfad = "/casting/upload/"; // relativ zum root-verzeichnis (mit slash am anfang und am ende)
    $thumbnailpfad = "/casting/upload/thumbnails/"; //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;

    $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.created ASC
                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.created ASC
                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 ASC
                LIMIT $limit, $angezeigte_anzahl
                    ";
            break;
    }

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

    $db->query($sql_2);

    echo '<p><table cellpadding="0" cellspacing="0" style="width:360px"><td style="height:1px;"><td></td><td style="width:200px;"></td><td style="width:50px;"></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
            ";

        // print "<p>$sql</p>";

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

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

        $db2->next_record();

        $bild_vorhanden = false;
        while ($db2->next_record()) {
            if ($db2->f("type") == 'CMS_IMG' && $db2->f("typeid") == 1) {
                $bilddateiname = "{$thumbnailpfad}{$bildbreite}_".$db2->f("value").".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;
            echo "<td class=\"artlist_subheadline\" style=\"width:{$width}px; border:0;\"><a href=\"$link\"><img src=\"$bilddateiname\"/></a></td>";
        }

    }

    echo '</table>';

    if ($limit > 0 || $anzahl_artikel > $limit + $angezeigte_anzahl) {
        echo '<table cellpadding="0" cellspacing="0" style="width:360px">';
        if ($limit > 0) {
            $displaylimit = ($limit - $angezeigte_anzahl >= 0)?($limit - $angezeigte_anzahl):(0);
            echo "<td style=\"text-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 style=\"text-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 '</td></table></p>';
    }
?>
Danke und Gruß
Sascha
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Re: Artikelliste nur mit Bildern...

Beitrag von emergence »

saschar hat geschrieben:Was muss ich da im Modul einbauen?
im prinzip benötigst du einen zweiten zähler mit dem du weisst ob eine neue zeile beginnen soll oder nicht...

die ausgabe läuft ja so lange bis der wert $angezeigte_anzahl überschritten wird. sobald dies der fall ist wird der weiter bzw. zurück link angezeigt.

kleines php beispiel wie so etwas aussehen kann

Code: Alles auswählen

<?php

echo "<table border="1">";
$counter = 0;
$elements_each_row = 5;
for ($x = 0; $x <= 100; $x++ ) {

$elementaction = $counter % $elements_each_row;

if ($elementaction == 0) { echo "<tr>";}

echo "<td>$x<td>";

if ($elementaction == 4) { echo "</tr>\n";}

$counter++;
}
echo "</table>";

?>
gibt 100 werte, innerhalb einer tabelle mit 5 werten pro zeile, aus...

etwas entsprechendes müsstest du dir dazubauen...
*** make your own tools (wishlist :: thx)
saschar
Beiträge: 141
Registriert: Mo 21. Okt 2002, 14:37
Wohnort: Dornbirn, A
Kontaktdaten:

Danke und Frage...

Beitrag von saschar »

Hallo Emergence.
Danke für den Tipp, aber ich glaube das übersteigt meine PHP-Kenntnisse.
Könntest du mir das vielleicht noch ein bisschen einfacher erklären oder vielleicht hättest du gerade ein bisschen Zeit übrig und du könntest mir bitte das Output Script schnell (?) anpassen bzw. wüsste jetzt im Moment nicht genau, wo ich das einbauen muss oder soll.

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

Beitrag von emergence »

schnell geht momentan leider nicht...
es war nur der tipp schnell, wie so etwas ungefähr funktioniert...
eingebaut werden müsste das in der while schleife...

zum entsprechend umbauen und testen hab ich momentan leider zu wenig zeit...
*** make your own tools (wishlist :: thx)
saschar
Beiträge: 141
Registriert: Mo 21. Okt 2002, 14:37
Wohnort: Dornbirn, A
Kontaktdaten:

Nochmals Danke...

Beitrag von saschar »

Kann dich wegen der Zeit gut verstehen...
Blicke trotzdem nicht durch, aber danke nochmals für den Tipp...

Vielleicht hat noch jemand anderer eine Lösung...


Gruß
Sascha
JSommer
Beiträge: 324
Registriert: Fr 5. Sep 2003, 12:32
Wohnort: 192.168.0.11
Kontaktdaten:

Beitrag von JSommer »

Tipp hab ich keinen, aber aus Deinem Posting lese ich raus, dass die w3.concepts-Artikellisten auch unter dem 4.5er Contenido laufen? Mich interessiert speziell die w3concepts.alist.mod3 :-)
Gesperrt