Seite 1 von 2
Bild wird im Teaser nicht angezeigt?!
Verfasst: Mo 25. Aug 2008, 09:41
von sebel
Contenido-Version: 4.8.4
Ich verwende das Standard-Modul für die News, habe allerdings das Modul-Template ein wenig modifiziert:
Code: Alles auswählen
<div class="artikellliste">
<!-- BEGIN:BLOCK -->
<div class="news">
<h2><a href="{HREF}">{HEADLINE}</a></h2>
<h3>{SUBHEAD}</h3>
<p>{IMG}{TEXT} <a href="{HREF}" title="{MORE}">{MORE} ›</a></p>
</div>
<!-- END:BLOCK -->
</div>
Problem ist nun: Bilder, die ich in die News-Artikel einbaue werden nicht als Bild-Teaser auf der Artikellisten-Seite dargestellt....(auch in meinem Beispielmandanten nicht)
Normal für dieses Modul? Muss ich ein anderes verwenden? Oder mache ich was falsch?
Danke für die Antworten
Verfasst: Mo 25. Aug 2008, 12:10
von sebel
niemand?

Verfasst: Mo 25. Aug 2008, 12:20
von OliverL
Hi sebel,
ich hab das Modul leider nicht vor mir.
Kannst du mal den Output Posten.
Wenn das {IMG} überhaupt nicht ersetzt wird könnte ich mir vorstellen das der Replacer falsch ist. Sinn gemäß würde ich als Programmierer ja "{IMAGE}" schreiben aber die wege des Herrn sind ...
mfg OliverL
Verfasst: Mo 25. Aug 2008, 14:03
von sebel
hey oliver, ich dachte das standard-modul dafür wäre bekannt
hier der code:
Code: Alles auswählen
<?php
/**
* $RCSfile$
*
* Description: Newslist / ArticleList. Module "Output".
*
* @version 1.0.0
* @author Andreas Lindner
* @copyright four for business AG <www.4fb.de>
*
* {@internal
* created 2005-08-12
* }}
*
* $Id$
*/
cInclude('classes', 'class.article.php');
cInclude('includes', 'functions.api.string.php');
cInclude('includes', 'functions.api.images.php');
if (!isset($tpl) || !is_object($tpl)) {
$tpl = new Template();
}
$tpl->reset();
$sql = "SELECT
htmlpath, frontendpath
FROM
".$cfg["tab"]["clients"]."
WHERE
idclient = ".$client." ";
$db->query($sql);
if ($db->next_record()) {
$htmlpath = $db->f('htmlpath');
$frontendpath = $db->f('frontendpath');
}
// selected category
$selcat = "CMS_VALUE[1]";
$template = "teaser-standard.html";
// anzahl der zeichen text
$mxtext = 9999;
$limit = "CMS_VALUE[15]";
$cms_sort_direction = "CMS_VALUE[16]";
if ($cms_sort_direction == '') {
$cms_sort_direction = 'desc';
}
if ("CMS_VALUE[3]" == "sortdate") {
$order = 'lastmodified';
} else {
$order = 'artsort';
}
if ("CMS_VALUE[17]" != '') {
$with_start = true;
} else {
$with_start = false;
}
$newsheadline = "CMS_VALUE[4]";
$tpl->set('s', 'TITLE', $newsheadline);
if (strlen($selcat) > 0 && $selcat != '0') {
$options = array ('idcat' => $selcat, "start" => $with_start, "order" => $order, "direction" => $cms_sort_direction);
$list = new ArticleCollection($options);
$count = $list->count;
if ($count > 0) {
if (is_numeric($limit) AND strlen($limit) > 0) {
if ($limit < $list->count) {
$limit_art = $limit;
} else {
$limit_art = $list->count;
}
} else {
$limit_art = $list->count;
}
for ($i = 0; $i < $limit_art; $i ++) {
$article = $list->nextArticle();
$article_id = $article->getField('idart');
$teaser_img = '';
if ($noimg != 'true') {
$text_html = $article->getContent('CMS_HTML', 1);
$regEx = "/<img[^>]*?>.*?/i";
$match = array ();
preg_match($regEx, $text_html, $match);
$regEx = "/(src)(=)(['\"]?)([^\"']*)(['\"]?)/i";
$img = array ();
preg_match($regEx, $match[0], $img);
$img_src = preg_split("/\//", $img[0]);
$img_name = $img_src[count($img_src) - 1];
$img_name = preg_replace("/\"/", "", $img_name);
$img_split = preg_split("/\./", $img_name);
$img_type = $img_split[count($img_split) - 1];
$img_split2 = preg_split("/_/", $img_split[0]);
$name = $img_name;
if (count($img_split2) > 1) {
$img_x = $img_split2[count($img_split2) - 1];
$img_y = $img_split2[count($img_split2) - 2];
if (is_numeric($img_x) AND is_numeric($img_y)) {
$suffix = "_".$img_x."_".$img_y.".".$img_type;
$name = preg_replace("/$suffix/", "", $img_name);
$name = $name.".[a-zA-Z]{3}";
}
}
$img_teaser = '';
if (strlen($name) > 0) {
$sql = "SELECT
*
FROM
".$cfg["tab"]["upl"]."
WHERE
filename REGEXP '$name' ";
//echo "<pre>"; print_r($sql); echo "</pre>";
$db->query($sql);
if ($db->next_record()) {
$filename = $db->f('filename');
$dirname = $db->f('dirname');
}
$img_path = $cfgClient[$client]["upl"]["path"].$dirname.$filename;
$img_size = "CMS_VALUE[14]";
$img_teaser = capiImgScale($img_path, $img_size, $img_size, $crop = false, $expand = false, $cacheTime = 1000, $wantHQ = false);
} // end if strlen
if (strlen($img_teaser) > 0) {
$teaser_img = '<img src="'.$img_teaser.'" class="teaser_img">';
} else {
$teaser_img = '';
}
} // end if noimg
$headline = strip_tags($article->getContent('CMS_HTMLHEAD', 2));
$headline = str_replace($replace, " ", $headline);
$subheadline = strip_tags($article->getContent('CMS_HTMLHEAD', 3));
$subheadline = str_replace($replace, " ", $subheadline);
$teaserheadline = /*$subheadline." - ".*/
$headline;
$href = $sess->url("front_content.php?idcat=$selcat&idart=$article_id");
$teasertext = $article->getField('summary');
if (strlen(trim($teasertext)) == 0) {
$teasertext = strip_tags($article->getContent('CMS_HTML', 1));
$teasertext2 = $teasertext;
$teasertext = capiStrTrimAfterWord($teasertext, $mxtext);
if ($teasertext!=$teasertext2) {
$teasertext.= '...';
}
} // end if
$teasertext = $teasertext." ";
$tpl->set('d', 'HEADLINE', $teaserheadline);
$tpl->set('d', 'SUBHEAD', $subheadline);
$tpl->set('d', 'TEXT', $teasertext);
$tpl->set('d', 'HREF', $href);
$tpl->set('d', 'IMG', $teaser_img);
$tpl->set('d', 'MORE', mi18n("mehr"));
$tpl->next();
} // end for
$tpl->generate('templates/'.$template);
}
}
?>
Soweit ich das verstanden habe, soll das Modul ja das erste Bild aus einem News-Artikel als Teaser-Bild anzeigen...oder liege ich da falsch?
Verfasst: Mo 25. Aug 2008, 15:46
von OliverL
Hi,
Ist jetzt nur so eine Vermutung aber hast du in den Bildern die als Teaser genutzt werden sollen _ (Unterstriche) drin?
z.B: mein_name_ist_hase.jpg
wenn ja versuch mal ein Bild ohne Unterstriche.
Bisschen wild die ganzen Regex und splits.
mfg OliverL
Verfasst: Di 26. Aug 2008, 09:08
von sebel
Hallo Oliver
Nein, an den Unterstrichen liegt es nicht. Anbei mal der Link
http://www.sus-o.de/cms/cms/front_content.php?idcat=11
Wenn du nun auf "Wir gewinnen" klicktst fährt der News-Text aus und du siehst, dass er ein wenig eingerückt ist und da ein kleiner Punkt ist, wo das Bild eigentlich sein soll. Das Bild habe ich ganz normal über den Editor eingefügt als ich den Artikeltext geschrieben habe...
Wie gesagt, das Modul ist nicht von mir, sondern das vorgefertigte von Contenido. Beim Textmandanten klappt das ganze ja auch leider nicht...
Verfasst: Di 26. Aug 2008, 09:58
von OliverL
Ahhh!
Das Bild aus dem Cach wird ja benutzt und auch eingesetzt.
Also liegt es wohl an der "capiImgScale".
So!
Die Bildgröße war nicht gesetzt. Hab die mal für alle drei Listen auf 50px gesetzt

und siehe da es geht.
mfg Oliver
Verfasst: Di 26. Aug 2008, 10:15
von thoste87
verstehe nicht warum das bild immer aus dem cache geholt wird. heutzutage hat jeder eine schnelle internetverbindung und somit keine probleme auch eine seite mit vielen grafiken darzustellen. das bild sollte immer wieder neu geholt werden - denn bei manchen projekten funktioniert dieses news modul - bei andern nicht (falsches bild wird aus dem cache geholt)....
Lg
Verfasst: Di 26. Aug 2008, 10:18
von sebel
ok cool
wo kann man denn die bildgröße festlegen? damit ich das nachvollziehen und ggf. ändern kann
und vielen dank!!!!

Verfasst: Di 26. Aug 2008, 10:21
von OliverL
Hallo sebel,
Ich meine nicht den Browser-Cache sondern den Umrechnungs-Cache von Contenido.
Vorteilhaft ist es den Cache zunutzen wenn man Bildergalerien einsetzt.
Ansonsten würden eventuell 40 mal 800x600 auf 80x60 umgerechnet werden und das würde den Server sehr stark belasten.
(Und ich hab die 50pixel bei dir im System eingestellt unter Artikel-Konfigurationen)
mfg OliverL
Verfasst: Di 26. Aug 2008, 10:25
von thoste87
dann sollte das im bildergalerie modul angewandt werden und nicht in einem news modul...
Meine meinung...
Verfasst: Di 26. Aug 2008, 10:25
von sebel
Hehe ok danke danke

Verfasst: Di 26. Aug 2008, 10:28
von OliverL
uiiiii, da hab ich nicht aufgepasst.
Wilkommen thoste87!
@sebel:
beim Artikel und beim Template unter dem Reiter "Konfiguration".
Verfasst: Di 26. Aug 2008, 10:30
von sebel
yep, hab alles gefunden und kann es nachvollziehen. bin doch nicht so ganz doof wie ich dachte
so kann ich das projekt endlich zum abschluss bringen und dem kunden übergeben. merci
Verfasst: Di 26. Aug 2008, 10:32
von OliverL
@thoste87:
mmmhhhh... in der Bildergalerie soll die Funktion rein aber bei einer Newsliste nicht?
Wenn ich die Funktion hab dann kann ich sie doch überall nutzen wo ich will.
Der vorteil der Funktion ist zum ersten das die Bilder kleiner sind und nicht immer wieder umgerechnet werden müssen. und desweiteren das die Bilder qualitativ besser aussehen wenn man die capi nutzt anstelle im HTML die size einfach keiner zumachen (ausser mein Firefox3 der rechnet dann Bilder um).
mfg OliverL