Artikelliste 4.1 von Jan Lengowski auf 4.2 umnippeln

Pulitzer
Beiträge: 34
Registriert: Mi 18. Sep 2002, 09:15
Kontaktdaten:

Artikelliste 4.1 von Jan Lengowski auf 4.2 umnippeln

Beitrag von Pulitzer »

Jupp, eigentlich schon mein ganzes Vorhaben im Betreff zusammengefasst. Um endlich die Möglichkeit zu haben, eine Teaserliste MIT Bild verwenden zu können, bastel ich gerade o.g. Modul um. Sieht bislang auch schon alles recht gut aus - nur der Dateiname des Bildes wird offenbar noch nicht richtig aus der DB ausgelesen. Nachfolgend der von mir modifizierte Output-Teil:

Code: Alles auswählen

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

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

// bildbreite
$imgwidth = "CMS_VALUE[1]";

// bildhöhe
$imgheight = "CMS_VALUE[2]";

// anzahl der zeichen h1
$mxh[0] = "CMS_VALUE[3]";

// anzahl der zeichen h2
$mxh[1] = "CMS_VALUE[4]";

// select all articles in category widthout start article
$query = "SELECT ARTLANG.idside, ARTLANG.idsidelang FROM $cfgTab_cat_side AS CATART, $cfgTab_side_lang AS ARTLANG ".
         "WHERE CATART.idcat = '$selcat' AND ARTLANG.idside = CATART.idside AND ARTLANG.idlang = '$lang' AND ".
         "ARTLANG.online = '1' AND CATART.is_start = '0' ORDER BY CATART.idside DESC";

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

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

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

// loop through subarticles
foreach ($articleID as $key => $value) {

  // select all CMS variables of the article
  $query = "SELECT * FROM $cfgTab_content WHERE idsidelang = '$value' ORDER BY typeid";

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

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

  // loop through result and extraxt data
  while ($db->next_record()) {

    // data type
    $type = $db->f("idtype");

    if ($type == 1) { // headline
      $headline[] = $db->f("value");

    } elseif ($type == 2) { // text
      $text = $db->f("value");

    } elseif ($type == 3) { // image
      $value = $db->f("value");
      $query = "SELECT filename FROM $cfgTab_upl WHERE idupl = '$value'";
      $db2->query($query);
      $db2->next_record();
      $img = $cfgClient[3]["htmlpath"]["img"] . $db2->f("filename");

    } // end if

  } // end while

  foreach ($headline as $key => $value) {
    // headline length
    $len = strlen($headline[$key]);

    // cut headline if too long
    if ($len > $mxh[$key] && $mxh[$key] > 0) {
      $headline[$key] = substr($headline[$key],0,$mxh[$key]);
      $headline[$key] = $headline[$key] . " ...";
    } // end if

  } // end foreach

  // HTML template for one element
  echo "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">
         <tr valign=\"top\">
           <td style=\"padding:10px\">
             <img src=\"$img\" width=\"$imgwidth\" height=\"$imgheight\">
           </td>
           <td width=\"100%\" style=\"padding:10px\">
             <span class=\"head2\">$headline[0]</span><br>
             <span class=\"text\">$headline[1]</span>
           </td>
         </tr>
         <tr valign=\"bottom\" align=\"right\">
           <td colspan=\"2\">
            <table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">
            <td valign=\"middle\" align=\"right\" width=\"100%\"><a href=\"$link\" style=\"font-size:11px;color:#000000\">weiter </a></td>
           <td align=\"right\"><a href=\"$link\"><img src=\"images/arrow.gif\" border=\"0\"></a></td>
           </table></td>
         </tr>
         <tr valign=\"bottom\" bgcolor=\"#ffffff\" height=\"1\">
           <td><img src=\"images/spacer.gif\" width=\"1\" height=\"1\"></td>
         </tr>
       </table>";

  unset($headline);

} // end foreach
Der Fehler muss wohl irgendwo hier

$img = $cfgClient[3]["htmlpath"]["img"] . $db2->f("filename");

liegen (Client[3] ist richtig...). Wer weiß Rat?
Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b »

schonmal so versucht?

Code: Alles auswählen

      $query = "SELECT * FROM $cfgTab_upl WHERE idupl = '$value'"; 
      $db2->query($query); 
      $db2->next_record(); 
      $img = $db->f("dirname")."/".$db->f("filename");
lass dir doch mal die Eigenschaften des nicht angezeigten Bildes anzeigen... steht da vielleichtz nur ein falscher Pfad - oder garkeiner?
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de
Pulitzer
Beiträge: 34
Registriert: Mi 18. Sep 2002, 09:15
Kontaktdaten:

Beitrag von Pulitzer »

Hi, also mit deiner Änderung zeigt er mir nur die URL zum Root-Verzeichnis. Lass' ich's wie von mir angeführt, wird der Bildpfad korrekt bis zum IMG-Verzeichnis angezeigt - es fehlt halt nur der Dateiname des Bildes.
Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b »

dann sagt mir das eindeutig, dass das Bild nicht gefunden wird.
Also dieser Part:

Code: Alles auswählen

    } elseif ($type == 3) { // image 
      $value = $db->f("value"); 
liefert nicht die erwartete Upload-ID, die du für den Select brauchst. So richtig bin ich aber auch noch nicht hinter den Code gestiegen
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de
pulk
Beiträge: 217
Registriert: Sa 2. Nov 2002, 09:57
Kontaktdaten:

Beitrag von pulk »

auf das freu ich mich schon, hoffe du bekommst das hin :D
detlev
Beiträge: 156
Registriert: Mi 18. Sep 2002, 08:05
Wohnort: Bochum
Kontaktdaten:

Beitrag von detlev »

Hat denn der idtype aus der con_content wirklich was mit dem vorhandensein von Bildern zu tun, so dass die Abfrage, ob dieser Wert == 3 ist, sinnvoll ist?

Gruß
Detlev
Pulitzer
Beiträge: 34
Registriert: Mi 18. Sep 2002, 09:15
Kontaktdaten:

Beitrag von Pulitzer »

Gute Frage - ich habe keine Ahnung ... :roll:
Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b »

in der Datenbank con_type kannst du sehen, mit welcher idtype dein CMS_IMG verknüpft ist. Bei mir ist das nicht die 3 (das ist TEXT) sondern die 4. In dem Falle steht dann auch im Value tatsächlich die idupl, auf die ich dann wie in deinem Modul geschrieben zurückgreifen kann.

Ich würde das mal prüfen - ich habe die Standardinstallation mit Demos und da hat CMS_IMG die Nummer 4.
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de
Pulitzer
Beiträge: 34
Registriert: Mi 18. Sep 2002, 09:15
Kontaktdaten:

Beitrag von Pulitzer »

Fändest du es übertrieben, wenn ich dir jetzt einen Heiratsantrag mache? :D Da lag' der Hund begraben! Werde damit heute abend experimentieren und dann hier vorstellen.
Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b »

Fändest du es übertrieben, wenn ich dir jetzt einen Heiratsantrag mache?
Du würdest tierisch ärger mit meiner Frau bekommen :lol: :lol:
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de
Sausi
Beiträge: 53
Registriert: Do 10. Okt 2002, 11:47
Kontaktdaten:

Beitrag von Sausi »

Sven777b hat geschrieben:
Fändest du es übertrieben, wenn ich dir jetzt einen Heiratsantrag mache?
Du würdest tierisch ärger mit meiner Frau bekommen :lol: :lol:
Ich will mich nicht in Eure Heiratspläne einmischen, aber wann gibt es das besprochene Modul?

Sausi
Pulitzer
Beiträge: 34
Registriert: Mi 18. Sep 2002, 09:15
Kontaktdaten:

Beitrag von Pulitzer »

Name des Moduls: Teaser-Liste

Beschreibung: Saugt sich CMS_HEAD[1], CMS_HEAD[2] und CMS_IMG[1] aus den Artikeln einer Rubrik und bastelt daraus eine Teaserliste mit Bild. Anzahl der sichtbaren Teaser beschränkbar.

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname   : Teaserliste mit Bild
* Author      :     4fb - Jan Lengowski, modified by Marco Kitzmann
* Copyright   :     Contenido - four for business
* Created     :     15-08-2002
* Modified    :     09-11-2002
************************************************/


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

            // fetch all categorys
            $query = "SELECT A.idcat, A.level, C.name FROM $cfgTab_cat_tree AS A, ".
                     "$cfgTab_cat AS B, $cfgTab_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

              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>
          </td>
        </tr>
        <tr>
          <td>Bildbreite:</td>
          <td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\"></td>
        </tr>
        <tr>
          <td>Bildhöhe:</td>
          <td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\"></td>
        </tr>
        <tr>
          <td>Max Zeichen Head1</td>
          <td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\"></td>
        </tr>
        <tr>
          <td>Max Zeichen Head2</td>
          <td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\"></td>
        </tr>
        <tr>
          <td>Anzahl der Artikel</td>
          <td><input type=\"text\" name=\"CMS_VAR[5]\" value=\"CMS_VALUE[5]\"></td>
        </tr>

      </table>";

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   : Teaserliste mit Bild
* Author      :     4fb - Jan Lengowski, modified by Marco Kitzmann
* Copyright   :     Contenido - four for business
* Created     :     15-08-2002
* Modified    :     09-11-2002
************************************************/


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

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

// bildbreite
$imgwidth = "CMS_VALUE[1]";

// bildhöhe
$imgheight = "CMS_VALUE[2]";

// anzahl der zeichen h1
$mxh[0] = "CMS_VALUE[3]";

// anzahl der zeichen h2
$mxh[1] = "CMS_VALUE[4]";

// anzahl articles
$countart= "CMS_VALUE[5]";

// select all articles in category widthout start article
$query = "SELECT ARTLANG.idside, ARTLANG.idsidelang FROM $cfgTab_cat_side AS CATART, $cfgTab_side_lang AS ARTLANG ".
         "WHERE CATART.idcat = '$selcat' AND ARTLANG.idside = CATART.idside AND ARTLANG.idlang = '$lang' AND ".
         "ARTLANG.online = '1' AND CATART.is_start = '0' ORDER BY CATART.idside DESC LIMIT $countart";

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

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

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

// loop through subarticles
foreach ($articleID as $key => $value) {

  // select all CMS variables of the article
  $query = "SELECT * FROM $cfgTab_content WHERE idsidelang = '$value' ORDER BY typeid";

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

  // link
  $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$selcat&idside=$linkID[$key]&m=$m&s=$s");
  // loop through result and extraxt data
  while ($db->next_record()) {

    // data type
    $type = $db->f("idtype");

    if ($type == 1) { // headline
      $headline[] = $db->f("value");

    } elseif ($type == 2) { // text
      $text = $db->f("value");

    } elseif ($type == 4) { // image 
      $value = $db->f("value"); 
      $query = "SELECT filename FROM $cfgTab_upl WHERE idupl = '$value'"; 
      $db2->query($query); 
      $db2->next_record(); 
      $img = $cfgClient[3]["htmlpath"]["img"] . $db2->f("filename");

    } // end if

  } // end while


  foreach ($headline as $key => $value) {
    // headline length
    $len = strlen($headline[$key]);

    // cut headline if too long
    if ($len > $mxh[$key] && $mxh[$key] > 0) {
      $headline[$key] = substr($headline[$key],0,$mxh[$key]);
      $headline[$key] = $headline[$key] . " ...";
    } // end if

  } // end foreach

  // HTML template for one element
  echo "<table width=\"100%\" cellspacing=\"0\" cellpadding\"2\">
<tr>
 <td><a href=\"$link\"><img src=\"$img\" width=\"$imgwidth\" height=\"$imgheight\" alt=\"$headline[0]\" border=\"0\" hspace=\"5\"></a></td>
 <td width=\"100%\" valign=\"top\"><a href=\"$link\"><font size=\"2\"><b>$headline[0]</b></font></a><br>
 $headline[1]</td>
</tr>
<tr>
 <td colspan=\"2\"><p align=\"right\"><a href=\"$link\">Meldung lesen...</a></p></td>
</tr>
</table>
<hr noshade size=\"1\" width=\"100%\">";

  unset($headline);

} // end foreach
pulk
Beiträge: 217
Registriert: Sa 2. Nov 2002, 09:57
Kontaktdaten:

Beitrag von pulk »

hmm...bekomme eine fehlermeldung, der Meldung lesen link funktioniert bei einem artkel, beim anderen nicht.

Code: Alles auswählen

Warning: Invalid argument supplied for foreach() in C:\Apache2\htdocs\home\webpages\cms\front_single\front_content.php(128) : eval()'d code on line 254
http://musicloaders.dyndns.org/home/web ... &idside=13
Pulitzer
Beiträge: 34
Registriert: Mi 18. Sep 2002, 09:15
Kontaktdaten:

Beitrag von Pulitzer »

Im Artikel müssen neben dem Image-Platzhalter die Eingabefelder CMS_HEAD[1] und CMS_HEAD[2] angelegt und mit Inhalt versehen sein. Die auszugebenden Artikel dürfen keine Startartikel sein.

In

$img = $cfgClient[3]["htmlpath"]["img"] . $db2->f("filename");

den korrekten Client eintragen - am besten schmerzfrei über $cfgClient[$client]
pulk
Beiträge: 217
Registriert: Sa 2. Nov 2002, 09:57
Kontaktdaten:

Beitrag von pulk »

bahnhof ! :cry:

In

$img = $cfgClient[3]["htmlpath"]["img"] . $db2->f("filename");

den korrekten Client eintragen - am besten schmerzfrei über $cfgClient[$client]
die bilder werden im contenido hochgeladen, welchen pfad haben die dann ?
Im Artikel müssen neben dem Image-Platzhalter die Eingabefelder CMS_HEAD[1] und CMS_HEAD[2] angelegt und mit Inhalt versehen sein. Die auszugebenden Artikel dürfen keine Startartikel sein.
wie mache ich das ?
Gesperrt