dank der tatkräftigen Unterstützung der Cracks hier im Forum - besonderer Dank an Andreas Kummer, Emergence und Oldperl - konnte ich eine Artikelliste soweit umbauen, dass sie Bilder aus dem Artikeltext ausliest und als Thumbnails darstellt, "Anreißtext" nicht mehr "mitten im Wort" abschneidet und den Autor und letzte Änderung anzeigt...
Den Code findet Ihr auch in diesem Thread:
http://www.contenido.org/forum/viewtopi ... 3637#53637
dort ist der Aktuelle Code hinterlegt...
Aber nun im einzelnen:
Ich wollte nicht, dass Bilder im in seperaten Bildmodulen abgelegt werden. Mit dem Editor in Contenido (tinyMCE) ist das Einfügen von Bildern in den "Fließtext" sehr gut und einfach (für den Redakteur) zu handeln... Darum habe ich auf ein Bildmodul im Layout verzichtet.
Leider arbeiten aber die meisten Artikellisten hier mit Bilder aus Bildmodulen, so dass ich hier einen "neuen Weg" gehen musste...
Gelöst habe ich das so:
zunächst lese ich aus der Tabelle "con_content" den Inhalt des Feldes "value" aus und übergeben diesen String einer Variablen.
Code: Alles auswählen
$str = "CMS_VALUE[2]";
Dann suche ich innerhalb dieses Strings nach "src" mittels
Code: Alles auswählen
$pos1 = strpos ($headline, "src");
Code: Alles auswählen
$pos2 = strpos ($headline, "\"",$pos1+6);
Code: Alles auswählen
$img = substr($headline,$pos1,$pos2-$pos1+1);
Code: Alles auswählen
<img style="float:left; padding:5px;"' .$img. ' height="75px" border="0" alt="Artiekvoransicht">
Da jeder Artikel mit mindestens einem Bild versehen klappt das auch prima - es wird immer das erste Bild eines Artikels angezeigt.
Das zum "Thumbnail" aus dem Artikeltext...
Hier nun der Code Komplett:
Eingabe:
Code: Alles auswählen
$selected = "CMS_VALUE[0]"; // selected category
echo ' <table cellspacing="0" cellpadding="10" border="0">',chr(10);
echo ' <tr valign="top">',chr(10);
echo ' <td class="text_medium">Kategorie wählen:</td>',chr(10);
echo ' <td class="text_medium"><select name="CMS_VAR[0]">',chr(10);
if ($selected != "0" && $selected != "") {
echo ' <option value="0">--- kein ---</option>',chr(10);
} else {
echo ' <option selected="selected" value="0">--- kein ---</option>',chr(10);
}
// fetch all categorys
$query = "SELECT A.idcat, A.level, C.name FROM ".$cfg["tab"]["cat_tree"]." AS A, ";
$query .= $cfg["tab"]["cat"]." AS B, ".$cfg["tab"]["cat_lang"]." AS C WHERE A.idcat=B.idcat ";
$query .= "AND B.idcat=C.idcat AND C.idlang='$lang' AND B.idclient='$client' ";
$query .= "AND C.visible=1 ORDER BY A.idtree";
// execute query
$db->query($query);
// loop result and build the options
while ($db->next_record()) {
$spaces = "|"; // indent spacer
$levels = $db->f("level"); // how many levels
for ($i = 0; $i < $levels; $i++) {
$spaces = $spaces . "--"; // add 2 spaces for every level
}
$spaces .= ">";
if ($selected == $db->f("idcat")) {
// selected category
echo '<option selected="selected" value="'. $db->f("idcat") .'">'. $spaces . $db->f("name") .'</option>',chr(10);
} else {
// category
echo '<option value="'. $db->f("idcat") .'">'. $spaces . $db->f("name") .'</option>',chr(10);
}
}
echo ' </select>',chr(10);
echo ' </td>',chr(10);
echo ' </tr>',chr(10);
echo ' <tr>',chr(10);
echo ' <td class="text_medium">Überschrift</td>',chr(10);
echo ' <td class="text_medium"><input type="text" name="CMS_VAR[2]" value="CMS_VALUE[2]"></td>',chr(10);
echo ' </tr>',chr(10);
echo ' <tr>',chr(10);
echo ' <td class="text_medium">Angezeigte Länge in Zeichen</td>',chr(10);
if (!is_numeric("CMS_VALUE[3]")) {
echo ' <td class="text_medium"><input type="text" name="CMS_VAR[3]" value="50"></td>',chr(10);
} else {
echo ' <td class="text_medium"><input type="text" name="CMS_VAR[3]" value="CMS_VALUE[3]"></td>',chr(10);
}
echo ' </tr>',chr(10);
echo ' <tr>',chr(10);
echo ' <td class="text_medium" style="vertical-align: top;">Sortiert nach:</td>',chr(10);
echo ' <td class="text_medium"><select name="CMS_VAR[4]">',chr(10);
if ("CMS_VALUE[4]" == "" || "CMS_VALUE[4]" == "CATART.idart") {
echo ' <option value="CATART.idart" selected>Artikel-ID</option>',chr(10);
} else {
echo ' <option value="CATART.idart">Artikel-ID</option>',chr(10);
}
if ("CMS_VALUE[4]" == "CONTENT.value") {
echo ' <option value="CONTENT.value" selected>Topic</option>',chr(10);
} else {
echo ' <option value="CONTENT.value">Topic</option>',chr(10);
}
if ("CMS_VALUE[4]" == "ARTLANG.created") {
echo ' <option value="ARTLANG.created" selected>Erstellungsdatum</option>',chr(10);
} else {
echo ' <option value="ARTLANG.created">Erstellungsdatum</option>',chr(10);
}
if ("CMS_VALUE[4]" == "ARTLANG.lastmodified") {
echo ' <option value="ARTLANG.lastmodified" selected>Änderungsdatum</option>',chr(10);
} else {
echo ' <option value="ARTLANG.lastmodified">Änderungssdatum</option>',chr(10);
}
if ("CMS_VALUE[4]" == "ARTLANG.title") {
echo ' <option value="ARTLANG.title" selected>Seitentitel (Backend)</option>',chr(10);
} else {
echo ' <option value="ARTLANG.title">Seitentitel (Backend)</option>',chr(10);
}
if ("CMS_VALUE[4]" == "ARTLANG.pagetitle") {
echo ' <option value="ARTLANG.pagetitle" selected>Seitentitel (Frontend)</option>',chr(10);
} else {
echo ' <option value="ARTLANG.pagetitle">Seitentitel (Frontend)</option>',chr(10);
}
if ("CMS_VALUE[4]" == "ARTLANG.summary") {
echo ' <option value="ARTLANG.summary" selected>Zusammenfassung (Backend)</option>',chr(10);
} else {
echo ' <option value="ARTLANG.summary">Zusammenfassung (Backend)</option>',chr(10);
}
if ("CMS_VALUE[4]" == "ARTLANG.artsort") {
echo ' <option value="ARTLANG.artsort" selected>Sort No.</option>',chr(10);
} else {
echo ' <option value="ARTLANG.artsort">Sort No.</option>',chr(10);
}
echo ' </select><br>',chr(10);
if ("CMS_VALUE[5]" != "DESC") {
echo ' <input type="radio" name="CMS_VAR[5]" value="ASC" checked>Aufsteigend <input type="radio" name="CMS_VAR[5]" value="DESC">Absteigend',chr(10);
} else {
echo ' <input type="radio" name="CMS_VAR[5]" value="ASC">Aufsteigend <input type="radio" name="CMS_VAR[5]" value="DESC" checked>Absteigend',chr(10);
}
echo ' </td>',chr(10);
echo ' </tr>',chr(10);
echo ' <tr>',chr(10);
echo ' <td class="text_medium" style="vertical-align: top;">Startartikel:</td>',chr(10);
if ("CMS_VALUE[6]" != "enabled") {
echo ' <td class="text_medium"><input type="checkbox" name="CMS_VAR[6]" value="enabled">Anzeigen ';
} else {
echo ' <td class="text_medium"><input type="checkbox" name="CMS_VAR[6]" value="enabled" checked>Anzeigen ';
}
if ("CMS_VALUE[7]" != "enabled") {
echo '<input type="checkbox" name="CMS_VAR[7]" value="enabled">An erster Stelle</td>',chr(10);
} else {
echo '<input type="checkbox" name="CMS_VAR[7]" value="enabled" checked>An erster Stelle</td>',chr(10);
}
echo ' </tr>',chr(10);
echo ' <tr>',chr(10);
echo ' <td class="text_medium" style="vertical-align: top;">Topic-Identifikation:</td>',chr(10);
echo ' <td class="text_medium" style="vertical-align: top;">Inhaltstyp: <select name="CMS_VAR[9]">',chr(10);
if (!is_numeric("CMS_VALUE[9]") || !in_array("CMS_VALUE[9]", array("1","2","3","9"))) {
echo ' <option value="1" selected>CMS_HTMLHEAD</option>',chr(10);
} else {
echo ' <option value="1">CMS_HTMLHEAD</option>',chr(10);
}
if ("CMS_VALUE[9]" == "2") {
echo ' <option value="2" selected>CMS_HTML</option>',chr(10);
} else {
echo ' <option value="2">CMS_HTML</option>',chr(10);
}
if ("CMS_VALUE[9]" == "3") {
echo ' <option value="3" selected>CMS_TEXT</option>',chr(10);
} else {
echo ' <option value="3">CMS_TEXT</option>',chr(10);
}
if ("CMS_VALUE[9]" == "9") {
echo ' <option value="9" selected>CMS_HEAD</option>',chr(10);
} else {
echo ' <option value="9">CMS_HEAD</option>',chr(10);
}
echo ' </select><br>',chr(10);
if (!is_numeric("CMS_VALUE[8]")) {
echo ' Typ-Nummer (z.B. 3 bei CMS_HTML[3]): <input type="text" name="CMS_VAR[8]" length="5" maxlength="10" value="1">',chr(10);
} else {
echo ' Typ-Nummer (z.B. 3 bei CMS_HTML[3]): <input type="text" name="CMS_VAR[8]" length="5" maxlength="10" value="CMS_VALUE[8]">',chr(10);
}
echo ' </td>',chr(10);
echo ' </tr>',chr(10);
echo ' <tr>',chr(10);
echo ' <td class="text_medium">Artikelanzahl (0 = keine Begrenzung):</td>',chr(10);
if (!is_numeric("CMS_VALUE[10]")) {
echo ' <td class="text_medium"><input type="text" name="CMS_VAR[10]" value="0"></td>',chr(10);
} else {
echo ' <td class="text_medium"><input type="text" name="CMS_VAR[10]" value="CMS_VALUE[10]"></td>',chr(10);
}
echo ' </tr>',chr(10);
echo ' </table>',chr(10);
Code: Alles auswählen
<?php
$selCat = "CMS_VALUE[0]"; // selected category
$maxChar = "CMS_VALUE[3]"; // Max. shown topic length
$str = "CMS_VALUE[2]";
if (!is_numeric($maxChar) || $maxChar < 1) {
$maxChar = "50";
}
if(is_numeric($selCat) && $selCat != "0") {
// select all articles in category without start article
$query = "SELECT CONTENT.value AS headline, ARTLANG.idart AS id, ARTLANG.lastmodified AS lastmodified, ARTLANG.modifiedby AS modifiedby FROM ";
$query .= $cfg["tab"]["cat_art"]." AS CATART, ";
$query .= $cfg["tab"]["art_lang"]." AS ARTLANG, ";
$query .= $cfg["tab"]["content"]." AS CONTENT ";
$query .= "WHERE CATART.idcat = '$selCat' ";
$query .= "AND ARTLANG.idart != '$idart' ";
if ("CMS_VALUE[6]" != "enabled") {
$query .= "AND CATART.is_start = '0' ";
}
$query .= "AND CONTENT.idartlang = ARTLANG.idartlang ";
// Content-Type-Number
if (!is_numeric("CMS_VALUE[8]")) {
$query .= "AND CONTENT.typeid = '1' ";
} else {
$query .= "AND CONTENT.typeid = 'CMS_VALUE[8]' ";
}
// Content-Type
if (!is_numeric("CMS_VALUE[9]")) {
$query .= "AND CONTENT.idtype = '1' ";
} else {
$query .= "AND CONTENT.idtype = 'CMS_VALUE[9]' ";
}
$query .= "AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' ";
$query .= "AND ARTLANG.online = '1' ORDER BY ";
if ("CMS_VALUE[6]" == "enabled" && "CMS_VALUE[7]" == "enabled") { // Startartikel an erster Stelle
$query .= "CATART.is_start DESC, ";
}
// Sort by
if ("CMS_VALUE[4]" == "") {
$query .= "CATART.idart ";
} else {
$query .= "CMS_VALUE[4] ";
}
// ASC/DESC
if ("CMS_VALUE[5]" == "") {
$query .= "DESC ";
} else {
$query .= "CMS_VALUE[5] ";
}
// LIMIT
if (is_numeric("CMS_VALUE[10]") && "CMS_VALUE[10]" > 0) {
$query .= "LIMIT 0, CMS_VALUE[10]";
}
// execute query
$db->query($query);
if ($db->num_rows() > 0) {
echo '<div class="article"><p class="nachricht">CMS_VALUE[2]<br>';
while ($db->next_record()) {
$headline = strip_tags ($headline);
$headline = urldecode($db->f("headline"));
$pos1 = strpos ($headline, "src");
$pos2 = strpos ($headline, "\"",$pos1+6);
$img = substr($headline,$pos1,$pos2-$pos1+1);
$erstellt = date("d.m.y",strtotime($db->f("lastmodified")));
$von = $db->f("modifiedby");
$headline = strip_tags ($headline);
if (strlen($headline) > $maxChar) {
$headline = substr($headline, 0, $maxChar);
$headline .= '...';
}
$link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$selCat&idart=".$db->f("id")."&m=$m&s=$s");
echo '<span class="text"><a style="text-decoration:none;" href="' .$link. '"><img style="float:left; padding:5px;"' .$img. ' height="75px" border="0" alt="Artiekvoransicht"></a>' .capiStrTrimAfterWord ($headline, $maxChar). '...<br>';
echo '<br>» <a style="font-size:10px;" href="'.$link.'">Diesen Artikel weiterlesen</a></span></p>';
echo '<p class="footer">Artikel aktualisiert: ' .$erstellt. ' von ' .$von. '</p>';
}
unset($headline);
echo '</div>';
} // end while
} // end if
?>
Code: Alles auswählen
/*Klasse Artikelvoransicht*/
.article {
width:290px;
height:145px;
font-size:10px;
background-color:#f5f5f5;
border:1px dashed #cccccc;
margin:2px 3px 5px 2px;
padding:3px;
float:right;
}
p.nachricht{
font-size:12px;
font-weight:bold;
color:#be0027;
}
span.text{
font-weight:normal;
font-size:10px;
color:#000;
}
p.footer{
font-style:italic;
font-size:10px;
text-align:left;
}
Außer nochmals DANKEeeeeee an alle hier im Forum für die Geduld und Hilfe - fällt mir eigentlich nicht mehr viel dazu ein.
Außer viel Spaß damit...
Ach so:
anschauen geht zur Zeit unter:
http://www.test.drk-koeln.de/kvkoeln/
Also dann
Schöne Grüße aus Köln
Jörg