Seite 1 von 3
News-Modul mit flexiblem "mehr" - gelöst
Verfasst: Fr 16. Dez 2005, 22:05
von kloevekorn
Liebe Gemeinde,
ich möchte die Artikelliste des News-Modul soweit abändern, dass "mehr"-Link zum eigentlichen Artikel nur ausgegeben wird, wenn der Artikel auch tatsächlich länger ist, als die eingestellte Zeichenanzahl für den Teaser.
Prinzipiell ist die Vorgehensweise klar, aber weil das ganze mit der teaser_standard.html läuft komme ich nicht weiter.
Versuch 1, bei den Template-Anweisungen anfangen (Ausschnitt aus News-OUTPUT, $textlaenge ist nur ein simples strlen($teasertext)):
Code: Alles auswählen
$teasertext = $teasertext." ";
$tpl->set('d', 'HEADLINE', $teaserheadline);
$tpl->set('d', 'TEXT', $teasertext);
$tpl->set('d', 'HREF', $href);
$tpl->set('d', 'IMG', $teaser_img);
/* hier der Versuch:
if ($textlaenge >= $mxtext) {
$tpl->set('d', 'MORE', mi18n("mehr"));
}*/
$tpl->next();
Leider wird dann der Platzhalter {MORE} aus der teaser_standard.html ausgegeben.
Versuch 2:
PHP-Code in der teaser_standard.html ausprobiert, um dort eine Überprüfung zu machen, ob für "{MORE}" ein Wert existiert um im Bedarfsfall den MORE-Part auskommentieren zu können.
PHP wird aber in den HTML-Templates ignoriert.
Habt ihr ne Idee, wie man das MORE flexibel handhaben kann (ohne das Modul ohne Verwendung des HTML-Templates komplett neu zu schreiben - das finde ich ja gerade so gut.)
jan
Re: News-Modul mit flexiblem "mehr"
Verfasst: Fr 16. Dez 2005, 22:07
von mvf
da komme ich nicht ganz mit, wenn du dort einen teasertext ausgibst sind das doch eh nur die ersten x zeichen des textes.
ist dein text denn sooft wirklich kürzer als der teasertext x?
Re: News-Modul mit flexiblem "mehr"
Verfasst: Fr 16. Dez 2005, 22:17
von kloevekorn
mvf hat geschrieben:da komme ich nicht ganz mit, wenn du dort einen teasertext ausgibst sind das doch eh nur die ersten x zeichen des textes.
ist dein text denn sooft wirklich kürzer als der teasertext x?
Ja, es geht um eine Mitteilungsseite und da gibt es ganz kurze Inhalte und welche, die länger sind.
Ich finds blöd, wenn bei den kurzen, die komplett angezeigt werden auch ein "mehr"-Link ist. Ist halt unsauber, und wenn man draufklickt, ärgert man sich.
Re: News-Modul mit flexiblem "mehr"
Verfasst: Fr 16. Dez 2005, 22:22
von mvf
verstehe, da der phpcode im template nicht abgearbeitet wird, muss das dann wohl im modul passieren.

Verfasst: Fr 16. Dez 2005, 22:29
von mvf
sorry falsches modul
Verfasst: Fr 16. Dez 2005, 22:33
von mvf
oh mann sorry aber heute geht hier alles schief.
newsmodul
ich bin die ganze zeit beim multiple article teaser
sorry alles retour
Verfasst: Fr 16. Dez 2005, 22:37
von mvf
Code: Alles auswählen
if (strlen(trim($teasertext)) == 0) {
$teasertext = strip_tags($article->getContent('CMS_HTML', 1));
$teasertext2 = $teasertext;
$teasertext = capiStrTrimAfterWord($teasertext, $mxtext);
if ($teasertext!=$teasertext2) {
$teasertext.= '...';
}
hier muss man die längenabfrage bearbeiten denke ich

Verfasst: Fr 16. Dez 2005, 22:37
von kloevekorn
mvf hat geschrieben:sorry falsches modul
gerade wollte ich fragen

- ich meine das mitgelieferte News aus der 4.6.2.
super-danke, dass du hier noch am start bist.
Verfasst: Fr 16. Dez 2005, 22:37
von kloevekorn
korrektur: 4.6.4
Verfasst: Fr 16. Dez 2005, 22:41
von mvf
Code: Alles auswählen
if (strlen(trim($teasertext)) == 0) {
$teasertext = strip_tags($article->getContent('CMS_HTML', 1));
$teasertext2 = $teasertext;
$teasertext = capiStrTrimAfterWord($teasertext, $mxtext);
if ($teasertext!=$teasertext2) {
$teasertext.= '...';
}
bin ja selber php noob aber
Code: Alles auswählen
if ($teasertext!=$teasertext2) {
$teasertext.= '...';
}
checked ob $teasertext länger ist als der wirkliche text, und setzt dann ...
da muss man doch jetzt auch irgendiwe abfragen können wenn der $teasertext <= $teasertext2 dann keine ... und unten dann noch kein more
Verfasst: Fr 16. Dez 2005, 22:42
von kloevekorn
Code:
if (strlen(trim($teasertext)) == 0) {
$teasertext = strip_tags($article->getContent('CMS_HTML', 1));
$teasertext2 = $teasertext;
$teasertext = capiStrTrimAfterWord($teasertext, $mxtext);
if ($teasertext!=$teasertext2) {
$teasertext.= '...';
}
hier muss man die längenabfrage bearbeiten denke ich Confused
_________________
Ich bin leider nicht so schnell beim Durchblicken hier. Die Längenabfrage klappt ja. Aber das eigentliche Problem besteht doch, dass am Ende des Moduls immer More generiert wird. Und wenn man es weglässt, kommt eben der Platzhalter aus dem html-Template.
Eigentlich müsste man dort eingreifen. Gibt es nicht doch einen Trick, dort php zum laufen zu kriegen?
Verfasst: Fr 16. Dez 2005, 22:45
von kloevekorn
Bzw. man kann den kritischen Teil ja direkt aus dem Modul aufrufen, also nicht im html-template generieren.
Aber das würde ja nicht für jeden Artikel einzeln gehen, weil die ganze Seite erst ganz zum Schluss zusammengebastelt wird.
So wie ich das verstehe, jedenfalls.

Verfasst: Fr 16. Dez 2005, 22:46
von mvf
pronier mal zu nächst nur die 3 ounkte weg zu bekommen wenn der text kürzer ist mit
Code: Alles auswählen
if (strlen(trim($teasertext)) == 0) {
$teasertext = strip_tags($article->getContent('CMS_HTML', 1));
$teasertext2 = $teasertext;
$teasertext = capiStrTrimAfterWord($teasertext, $mxtext);
if ($teasertext <= $teasertext2) {
$teasertext.= '';
} else {
$teasertext.= '...';
}
check mal ob dann die punkte bei kürzeren texten wegfallen
Verfasst: Fr 16. Dez 2005, 22:49
von kloevekorn
punkte weg
sind tatsächlich weg.
Verfasst: Fr 16. Dez 2005, 22:52
von kloevekorn
habe für den zweiten teil gerade einen php-fehler und finde ihn nicht so schnell - bin dran.