Artikelliste aus Beispielmandant

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

Artikelliste aus Beispielmandant

Beitrag von feiger_abweichler » Mo 8. Dez 2003, 08:08

hallo,

und wieder mal ne frage:

kann man das modul artikelliste aus dem beispielmandanten irgendwie begrenzen, so dass es z.b. nur noch die fünf neuesten artikel einer kategorie anzeigt.

oder vielleicht gibt es für die 4.4er version ja sogar eins und ich habe es übersehen? es soll nur die artikelüberschrift anzeigen können.

kann mir jemand einen tip geben oder mir dabei helfen, das beispielmodul zu modifizieren?

tausend dank und viele grüße,

der abweichler

agon
Beiträge: 83
Registriert: Mi 29. Okt 2003, 16:01
Kontaktdaten:

Beitrag von agon » Mo 8. Dez 2003, 09:41

Hallo,

ich habe mir folgendes - zugegebenermaßen nicht sonderlich elegantes - Modul gebastelt:

Input:

Code: Alles auswählen

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
 <tr>
  <td>Überschrift</td>
  <td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\"></td>
 </tr>
</table>";
Output:

Code: Alles auswählen

<?php
$sql = "SELECT ARTLANG.idart, ARTLANG.idartlang, ARTLANG.title, CATART.idcat
 FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["art"]." AS ART
 WHERE ARTLANG.idart = CATART.idart AND CATART.idart = ART.idart AND ARTLANG.idlang = '$lang' AND ARTLANG.online = '1' AND ART.idclient='$client' AND CATART.idcat='$idcat' AND CATART.is_start='0'
 ORDER BY ARTLANG.created DESC";
$db->query($sql);
if ($db->num_rows() != 0)
{
 echo '<h2>CMS_VALUE[2]</h2>
<p class="klein">';
}
for ($i=0; $i<min($db->num_rows(),5); $i++)
{
 $db->next_record();
 $navmod_link ="front_content.php?client=$client&la"."ng=$lang&idcat=".$db->f("idcat")."&idart=".$db->f("idart")."";
 echo '<a href="'.$sess->url("$navmod_link").'" class="klein">'.$db->f("title").'</a>';
 if ($i != $db->num_rows()-1)
 {
  echo '</p><p class="klein">';
 }
}
if ($db->num_rows() != 0)
{
 echo '</p>';
}
?>
Die "5" gibt an, wie viele Artikel gelistet werden sollen (könnte man auch in den Input ziehen).
Gelistet werden die neuesten Artikel nach Erstellungsdatum (nicht letzte Änderung); der Startartikel wird ausgeschlossen.
Angezeigt werden die Titel, nicht die Überschriften.
Soll die Überschrift 1. Ordnung angezeigt werden (vorausgesetzt, diese liegt in CMS_HTMLHEAD[1]), müßte die Abfrage lauten:

Code: Alles auswählen

$sql = "SELECT ARTLANG.idart, CATART.idcat, CONTENT.value AS title
 FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".$cfg["tab"]["art_lang"]." AS ARTLANG, ".$cfg["tab"]["cat"]." AS CAT, ".$cfg["tab"]["content"]." AS CONTENT
 WHERE ARTLANG.idart = CATART.idart AND CATART.idcat = CAT.idcat AND ARTLANG.idartlang=CONTENT.idartlang 
 AND CONTENT.idtype='1' AND CONTENT.typeid='1' AND CAT.idcat='$idcat' AND ARTLANG.idlang = '$lang' AND ARTLANG.online = '1' AND CATART.is_start='0'
 ORDER BY ARTLANG.created DESC";
Sollte tun
Andreas

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

Beitrag von feiger_abweichler » Mo 8. Dez 2003, 16:12

hallo,

erst einmal vielen dank für deine hilfe.

leider zeigt das modul bei mir gar nichts an. wie kann man denn den baum festlegen, aus dem das modul die artikel anzeigen soll?

bin leider in php nicht ganz so fit...

viele grüße,

der abweichler

agon
Beiträge: 83
Registriert: Mi 29. Okt 2003, 16:01
Kontaktdaten:

Beitrag von agon » Mo 8. Dez 2003, 16:18

Hallo,

das Modul in der vorliegenden Form sollte die Artikel aus der aktuellen Kategorie nehmen; um eine andere Kategorie auswählen zu können, müßten Input und Output noch erweitert werden.
In der Form mit der Anzeige des internen Titels läuft das Modul bei mir auch unter 4.4.1.
Sind denn in der entsprechenden Kategorie Artikel außer dem Startartikel online? Und stehen in der Modulansicht die Ampeln auf "grün"?

Gruß
Andreas

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

Beitrag von feiger_abweichler » Di 9. Dez 2003, 22:43

hallo,

also bei mir sieht das modul wie folgt aus:

input:

Code: Alles auswählen

/**
* Artikelliste mit I1,H1,T1
*
* Erstellt eine Liste mit allen Artikel bis
* auf den Startartikel.
*
* INPUT
*
* Author Jan Lengowski
* Copyright four for business AG
*/

// selected category
$selected = "CMS_VALUE[0]";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
        <tr valign=\"top\">
          <td>Kategorie wählen:</td>
          <td>
            <select name=\"CMS_VAR[0]\">";
            if($selected!="0" && $selected!=""){
             echo"<option value=\"0\">--- kein ---</option>";

            }else{
            echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
            }

            // fetch all categorys
            $query = "SELECT A.idcat, A.level, C.name FROM ".$cfg["tab"]["cat_tree"]." AS A, ".
                     $cfg["tab"]["cat"]." AS B,  ".$cfg["tab"]["cat_lang"]." AS C WHERE A.idcat=B.idcat ".
                     "AND B.idcat=C.idcat AND C.idlang='$lang' AND B.idclient='$client' ".
                     "AND C.visible=1 ORDER BY A.idtree";
            // execute query
            $db->query($query);

            // loop result and build the options
            while ($db->next_record()) {

              // indent spacer
              $spaces = "|";

              // how many levels
              $levels = $db->f("level");

              for ($i = 0; $i < $levels; $i ++) {
                // add 2 spaces for every level
                $spaces = $spaces . "--";

              } // end for
              
              $spaces .= ">";


              if ($selected == $db->f("idcat")) {
                // selected category
                echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } else {
                // category
                echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } // end if

            } // end while

echo "      </select>";

echo "    </td>
        </tr>
        <tr>
          <td>Überschrift</td>
          <td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\"></td>
        </tr>
        <tr>
          <td>Angezeigte Länge in Zeichen</td>
          <td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\"></td>
        </tr>

      </table>";
Output:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* REFERENZ MODUL / ARTIKELLISTE
*
* Artikelliste mit Img 1, Head 1, Head 2
*
* Erstellt eine Liste mit allen Artikel bis
* auf den Startartikel.
*
* Author      :     Jan Lengowski
* Copyright   :     four for business AG
* Created     :     15-08-2002
* Modified    :     16-08-2002
************************************************/

// second db class instance
$db2 = new DB_Contenido;

// selected category
$selcat = "CMS_VALUE[0]";

 if($selcat!="0" && $selcat!=""){

// select all articles in category widthout start article
$query = "SELECT ARTLANG.idart, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".
          $cfg["tab"]["art_lang"]." AS ARTLANG ".
         "WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' AND ".
         "ARTLANG.online = '1' ORDER BY CATART.idart DESC";

// execute query
$db->query($query);

unset($articleID);
unset($linkID);

// get id's of sub articles
while ($db->next_record()) {
  $articleID[] = $db->f("idartlang");
  $linkID[] = $db->f("idart");
} // end while

// loop through subarticles

echo '
<table width="150" border="0" cellspacing="0" cellpadding="0">
<tr><td height="21" width="22" style="border: 0px"></td>
<td width="135" style="border: 0px; padding-left:10px" class="punkte">CMS_VALUE[2]</td></tr>
';

if (is_array($articleID)) {

    foreach ($articleID as $key => $value) {

          // select all CMS variables of the article
          $sql = "SELECT * FROM ".$cfg["tab"]["content"]." WHERE idartlang = '$value' AND idtype = '1' AND typeid = '1'";
          $db->query($sql);
          $db->next_record();
          $head = $db->f("value");

          if ( strlen($head) > "CMS_VALUE[3]") {
            $head = substr($head, 0, "CMS_VALUE[3]");
            $head .= '..';
          }

          // link
          $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$selcat&idart=$linkID[$key]&m=$m&s=$s");

          echo '<tr><td colspan="2" class="text" height="22" style="border: 0px; padding-left:20px"><a class="klein" href="'.$link.'">'.urldecode($db->f("value")).'</a><br>&nbsp;</td></tr>';

    } // end while



          unset($headline);
        unset($text);
        
    } // end foreach
    
} // end if (is_array)

echo '</table><br>';


?>

ich würde mich freuen, wenn mir jemand helfen kann, hier irgendwie einen befehl einzufügen, dass nur die fünf neuesten artikel der ausgewählten kategorie angezeigt werden.

oder noch besser:
man könnte im input auswählen, wie viele artikel angezeigt werden, also über eine variable steuern (leere variable = alle einträge)

tausend dank an alle helfer im voraus,

der abweichler

mtealc
Beiträge: 22
Registriert: Sa 29. Nov 2003, 03:22
Kontaktdaten:

Beitrag von mtealc » Di 9. Dez 2003, 23:45

beim output modul in der ersten sql anweisung

ändern in

Code: Alles auswählen

  CATART.lastmodified desc LIMIT 0 , 5  
dann müßte es gehen
keine gewähr nur so aus dem kopf


gruss micha

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

Beitrag von feiger_abweichler » Di 9. Dez 2003, 23:53

hallo,

erstmal vielen dank für die antwort.

ich bin leider contenido- und php/sql-anfänger (auch wenn ich es geschafft habe, mit dem system innerhalb von 3 tagen eine site online zu stellen: http://www.studis-gegen-gebuehren.de).

im output sehe ich, so weit reichen meine kenntnisse die erste sql-anweisung:

Code: Alles auswählen

$query = "SELECT ARTLANG.idart, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ". 
          $cfg["tab"]["art_lang"]." AS ARTLANG ". 
         "WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' AND ". 
         "ARTLANG.online = '1' ORDER BY CATART.idart DESC"; 
kannst du mir helfen, wo dort die limitierung rein müsste?

vielen dank und gruß,

thomas

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mi 10. Dez 2003, 07:43

Ans Ende.

Code: Alles auswählen

$query = "SELECT ARTLANG.idart, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ". 
          $cfg["tab"]["art_lang"]." AS ARTLANG ". 
         "WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' AND ". 
         "ARTLANG.online = '1' ORDER BY CATART.idart DESC LIMIT 0,5"; 
Gruß
HerrB

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

Beitrag von feiger_abweichler » Mi 10. Dez 2003, 09:45

hallo,

dat läuft!!!!

zu sehen unter http://www.studis-gegen-gebuehren.de

danke und viele grüße aus bremen

der abweichler

Gesperrt