neues artikellistenmodul :: mit anzeige der unterkategorien

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mo 10. Mai 2004, 12:42

hyperjojo hat geschrieben:die querys habe ich nicht nochmal kopiert, die müssten ja stimmen, oder?
nein, die queries musst du auch kopieren. also den ganzen output-code. die queries sind nicht dieselben, wie beim original-modul. der input-code brauchst du nicht zu ersetzen; der ist identisch.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

hyperjojo
Beiträge: 102
Registriert: Fr 1. Nov 2002, 23:57
Kontaktdaten:

Beitrag von hyperjojo » Mo 10. Mai 2004, 13:24

hi,

ja, also den output-source hatte ich komplett so kopiert...

Code: Alles auswählen

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

    // 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]";
    if ($subheadline == '') $subheadline = 200;

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

    $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
                    $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
                    $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
                    $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
                    $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
                    $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
                    $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 '<p><table cellpadding="0" cellspacing="0" style="width:100%">';

    while ($db->next_record()) {
       
        $sql = "
            SELECT a.value, b.pagetitle FROM {$cfg['tab']['content']} as a
            LEFT JOIN {$cfg['tab']['art_lang']} as b ON a.idartlang = b.idartlang
            WHERE
            a.idartlang = ".$db->f("idartlang")."
            AND a.idtype = 1
            ORDER BY 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"));

        echo "<tr><td class=\"artlist_headline\"><a href=\"$link\" class=\"artlist_headlinelink\">".urldecode($db2->f("pagetitle"))."</a></td>";
        echo "<td class=\"artlist_date\">".$db->f("erstellungsdatum")."</td></tr>";

        $db2->next_record();

        // die subheadline 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")));
        }

        echo "<tr><td class=\"artlist_subheadline\" colspan=\"2\">$newsubheadline</td></tr>";

    }

    echo '</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 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 '</tr></table></p>';
    }
?>
noch ne idee?

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mo 10. Mai 2004, 13:59

ich würde den query mal über phpmyadmin absetzten und schauen, was du für rückgabewerte erhälst. bei mir funktioniert das nämlich einwandfrei.

ich sehe nur zwei möglichkeiten:

(1) im pagetitle steht tatsächlich nichts oder

(2) der pagetitle steht in einem anderen feld.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

hyperjojo
Beiträge: 102
Registriert: Fr 1. Nov 2002, 23:57
Kontaktdaten:

Beitrag von hyperjojo » Mo 10. Mai 2004, 15:13

hi,

nöö, hab alles probiert. hab auch nochmal das modul, template usw. neu angelegt. bringt aber nix.
ich hab auch mal pagetitle durch title ersetzt. auch das bringt das gleiche bild zum vorschein.
im errorlog steht auch nix.

in der db ist aber alles dem richtigen feld zugewiesen...

auch über

Code: Alles auswählen

<?php
$sql="select * from ".$cfg["tab"]["art_lang"]." where idart='".$idart."' and idlang='".$lang."' LIMIT 1";
$db->query($sql);
$db->next_record();
$db->p('pagetitle');
?></
bekomme ich den korrekten pagetitle ausgegeben...

was könnte es noch sein?

ciao

JoJo

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mo 10. Mai 2004, 15:22

was erhälst du denn, wenn du diesen query:

Code: Alles auswählen

$sql = " 
            SELECT a.value, b.pagetitle FROM {$cfg['tab']['content']} as a 
            LEFT JOIN {$cfg['tab']['art_lang']} as b ON a.idartlang = b.idartlang 
            WHERE 
            a.idartlang = ".$db->f("idartlang")." 
            AND a.idtype = 1 
            ORDER BY a.typeid ASC 
            "; 
mal per phpmyadmin absetzt?
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

hyperjojo
Beiträge: 102
Registriert: Fr 1. Nov 2002, 23:57
Kontaktdaten:

Beitrag von hyperjojo » Mo 10. Mai 2004, 15:40

hallo,

da hat mir phpmyadmin natürlich nur fehlermeldungen gebracht. den code umgestellt auf

Code: Alles auswählen

SELECT a.value, b.pagetitle FROM cms_content as a
            LEFT JOIN cms_art_lang as b ON a.idartlang = b.idartlang
            WHERE
            a.idartlang = 14
            AND a.idtype = 1
            ORDER BY a.typeid ASC;
brachte dann aber leider keine Ausgabe. Keine Ahnung, woran das liegen soll.
Leider kenne ich mich in OO und phplib auch nicht aus, um selbst auf fehlersuche gehen zu können...

ciao


JoJo

Alex
Beiträge: 174
Registriert: So 20. Jul 2003, 11:31
Kontaktdaten:

Beitrag von Alex » Di 11. Mai 2004, 14:08

Hallo!

Ich nutze das Modul schon seit paar Tagen. Jetzt ist mir aufgefallen, dass auch Artikel angezeigt werden, die nicht online geschaltet sind... Das ist natürlich nicht so gut... Ich habe in den Code geschaut, habe aber an mehreren Stellen gesehen, dass dort online = 1 abgefragt wird.

Wisst ihr warum?

Alex
Contenido 4.4.4 & 4.5.3-CVS

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Di 11. Mai 2004, 14:18

ich habe leider keine ahnnung. bei mir macht es genau das, was es machen soll.

bist du sicher, dass die aktualisierung in der datenbank auch wirklich erfolgt, wenn du einen artikel offline schaltest?
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

Alex
Beiträge: 174
Registriert: So 20. Jul 2003, 11:31
Kontaktdaten:

Beitrag von Alex » Di 11. Mai 2004, 15:09

Naja, eigentlich schon. Zumindest wird das Monitor-Symbol richtig angezeigt. Wo kann ich das genau kontrollieren?

Alex

PS: Ich habe gerade gesehen, dass das irgendwelche Geister-Artikel sind: Ich habe eine zweisprachige Seite. Diese drei Artikel sind eigentlich auf der englischen Seite eingefügt worden, automatisch auch in der deutschen. Wenn ich Sie in der deutschen löschen würde, würden auch die englischen Entsprechungen gelöscht werden. UND NUN?
Contenido 4.4.4 & 4.5.3-CVS

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Di 11. Mai 2004, 15:41

tja, dann dürfte es daran liegen, dass im code zwar geprüft wird, ob der artikel online ist, aber nicht ob die gewählte sprache online ist. mein site ist nur einsprachig, deshalb ist mir dieser sachverhalt noch nicht aufgefallen.

ich schaue mal über den code und gebe bescheid, sobald ich eine lösung gefunden habe. das dürfte allerdings erst morgen sein (bin schon fast im feierabend)...

gruss allerseits,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mi 12. Mai 2004, 10:31

hallo leutchen

inzwischen gibt es von dieser artikelliste vier verschiedene versionen:

(1) die erste
(2) eine, die statt der headline den seitentitel ausgibt
(3) eine, die in klammern noch die kategorie anzeigt, in der sich der artikel befindet
und
(4) eine, die - wenn vorhanden - das erste bild aus dem artikel nimmt, von diesem ein thumbnail erstellt und in der artikelliste ausgibt.

das ganze hier anzuzeigen, würde einen etwas langen thread verursachen. ich habe deshalb auf meiner site einen download-bereich eingerichtet, in dem alle versionen zum download bereit stehen:

http://w3concepts.net/cms/front_content.php?idcat=50

feedback ist immer willkommen!

grüss euch,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mi 12. Mai 2004, 10:34

das problem mit der mehrsprachigkeit sollte überigens inzwischen gelöst sein. ich habe die queries aller versionen entsprechend angepasst. ich hoffe, dass es jetzt auch in mehrsprachigen sites einwandfrei funktioniert.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

alexusofborg

Beitrag von alexusofborg » Sa 15. Mai 2004, 13:21

hi andreas.
gefällt mir echt gut dein modul. aber solche kleinen vorschaubilder wie unter www.w3concepts.net bei referenzen gehen dabei nicht, oder doch? sowas könnte ich gut gebrauchen. was für ein modul benutzt du den dafür?

vielen dank, alex

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mo 17. Mai 2004, 07:50

doch, doch. das ist mit dem selben modul gemacht. die version w3concepts.alist.mod3.v1 macht die thumbnails automatisch.

weitere infos zum modul findest du hier:
http://w3concepts.net/cms/front_content ... 1&idart=90
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

#ayshe
Beiträge: 445
Registriert: Do 25. Mär 2004, 10:04
Kontaktdaten:

Beitrag von #ayshe » Mo 17. Mai 2004, 16:52

Hallo,

ich bin mit Andreas' Modul nach wie vor sehr zufrieden :-)
Aber ich würde gerne noch ne Kleinigkeit verändern, nämlich dass die Artikel nicht nach Erstellungsdatum, sondern alphabetisch sortiert dargestellt werden. Ich hab das im Output-Code (an 3 query-Stellen) damit versucht:

Code: Alles auswählen

ORDER BY e.created DESC
ersetzt durch

Code: Alles auswählen

ORDER BY e.value DESC
oder auch

Code: Alles auswählen

ORDER BY value DESC
Funktionierte aber beides nicht. Wie sollte ich es machen?

Grüße,
#ayshe

Gesperrt