Page 1 of 1

[Gelöst] Tags nach "truncate" schließen

Posted: Sun Oct 24, 2010 2:41 pm
by jeff1980
Hallo,

stehe vor einem kleinen Problem.
Bei unserem Projekt www.festtagsgedichte.de findet sich auf der Startseite ein kleiner Slider, der immer die 5 zuletzt erstellten Texte anzeigt.
Realisiert habe ich es mit dem ContentDump-Plugin und der Code sieht so aus:

Code: Select all

{content_dump limit_count="5" first_sort="created" first_sort_order="down" do_smarty="strip"}

<ul id="slide">
{foreach from=$dump item=dump}
<li>
<p><strong>{$dump->content->title}</strong></p>
{$dump->content->data|truncate:150}</p>
<p><a href="http://www.festtagsgedichte.de/{$dump->content->alias}.htm" title="{$dump->content->title}">[weiterlesen]</a></p>
<p><span class="copyright">© Heidrun-Auro Brenjo<br />
www.festtagsgedichte.de</span></p>
</li>
{/foreach}
</ul>
Damit nicht immer der komplette Text sondern nur 4-5 Zeilen angezeigt werden, habe ich "truncate:150" verwendet. Es klappt auch prima. Allerdings werden so auch die HTML-Tags der entsprechenden Texte nicht geschlossen oder gar zerschnitten, was den HTML-Code einigermaßen zerschießt.
Ich habe nun den Befehl "|CloseTag" für Smarty gefunden, der dieses Problem beheben soll. Allerdings erhalte ich dann folgende Fehlermeldung:

Code: Select all

string(129) "Smarty error: [in globalcontent:slide line 40]: [plugin] modifier 'CloseTag' is not implemented (core.load_plugins.php, line 124)" 
Für mich sieht es so aus, als ob dieser Befehl nicht implementiert ist. Stimmt das so? Und wenn ja, warum? Und was kann ich tun?

Bin wie immer für jeden Tipp dankbar...

Jan

Re: Tags nach "truncate" schließen

Posted: Sun Oct 24, 2010 5:10 pm
by uniqu3
Könnte so funktioneren.

Code: Select all

{$dump->content->data|truncate:150|strip_tags}
Das entfernt die html tags.

Re: Tags nach "truncate" schließen

Posted: Sun Oct 24, 2010 7:09 pm
by NaN
Wo hast Du denn dieses CloseTag gefunden?

Re: Tags nach "truncate" schließen

Posted: Mon Oct 25, 2010 10:15 am
by cyberman
Der Modifikator CloseTags ist im Standardlieferumfang von CMSms nicht enthalten.

http://smarty.incutio.com/?page=CloseTags

Das heißt, du musst ihn separat nach /lib/smarty/plugins kopieren. Eine verbesserte Variante des Tags gibt es hier

http://www.gunnart.de/tipps-und-tricks/ ... tten-wird/

Re: Tags nach "truncate" schließen

Posted: Mon Oct 25, 2010 10:42 am
by klenkes
Warum machst du es nicht andersrum?

Code: Select all

{$dump->content->data|strip_tags|truncate:150}
Damit werden zuerst die Tags entfernt und dann gekürzt.
Danach kannst du den Text ja wieder in setzen.

Nur so ne Idee...

Bernd

Re: Tags nach "truncate" schließen

Posted: Mon Oct 25, 2010 1:42 pm
by jeff1980
Hi,

strip_tags hilft mir leider nicht viel weiter, da auch Zeilenumbrüche in den Texte sind, die sein müssen (es handelt sich um Gedichte).
genau dadurch bin ich darauf gekommen  :).
Ich hätte aber gedacht, dass er implementiert ist - wusste noch nicht, dass er separat hochgeladen werden muss. Das hab ich grad mal nachgeholt, aber so wirklich hilft es leider auch nicht.
Das Problem ist, dass die Tags in den Texten manchmal einfach zerschnitten werden, was für ein ziemliches Chaos sorgt. Zum Beispiel:

Code: Select all

<p>Mit seinem saftigen Gewand<br />Lag der Sommer im Land<br />Doch wie über Nacht<br />Verlor er an Pracht<br />Der Herbst frisst sein Licht<br...</p>
Der Break wird einfach nicht geschlossen (egal ob mit oder ohne CloseTags).
Kann man das irgendwie lösen? Irgendeinen Weg muss es da doch geben...?

Danke auf jeden Fall schon mal für Eure Gedanken dazu.

Jan

Re: Tags nach "truncate" schließen

Posted: Mon Oct 25, 2010 7:52 pm
by nockenfell
Wenn es mit Smarty nicht klappt, könntest du es auch mit einem UDT probieren. Ich denke für PHP wirst du einfacher ein Snipplet finden als für Smarty.

Re: Tags nach "truncate" schließen

Posted: Tue Oct 26, 2010 10:46 am
by cyberman
Das Problem scheint zu sein, dass der br-Tag nicht auf und wieder zu gemacht wird, sondern für sich allein steht.

Für diese Anwendung würde ich daher auf einen zusätzlichen Modifikator setzen, der die Existenz von <, <b, <br usw. am Ende des Strings prüft und ggf. diesen durch einen vollständigen br-Tag ersetzt. Modifikatoren kannst du ja wie bereits oben gezeigt in größerem Umfang aneinander "koppeln" ...

Re: Tags nach "truncate" schließen

Posted: Tue Oct 26, 2010 11:47 am
by nockenfell
Um das ganze mit PHP zu lösen könnte dies hier ein Anstoss sein:
http://www.mediengestalter.info/forum/1 ... 518-1.html

Re: Tags nach "truncate" schließen

Posted: Fri Oct 29, 2010 10:59 am
by cyberman
Das PHP-Snippet bringt uns da nicht weiter, weil genau das truncate bereits macht ;).

Re: Tags nach "truncate" schließen

Posted: Mon Nov 01, 2010 8:05 am
by jeff1980
Hi,

habe jetzt eine Lösung gefunden. Eher durch Zufall (keine Ahnung mehr wie) bin ich auf den UDT "truncate_better" gestoßen (http://dev.cmsmadesimple.org/projects/truncate_better).
Mit diesem habe ich es jetzt hinbekommen, dass alle Tags geschlossen werden und keine Fehler mehr produziert werden. Das komplette Ergebnis sieht jetzt so aus:

Code: Select all

{content_dump limit_count="5" first_sort="created" first_sort_order="down" do_smarty="strip"}

<ul id="slide">
{foreach from=$dump item=dump}
<li>
<p><strong>{$dump->content->title}</strong></p>
{truncate_better text=$dump->content->data truncate='150' add=' . . . '}
<p><a href="http://www.festtagsgedichte.de/{$dump->content->alias}.htm" title="{$dump->content->title}">[weiterlesen]</a></p>
<p><span class="copyright">© Heidrun-Auro Brenjo<br />
www.festtagsgedichte.de</span></p>
</li>
{/foreach}
</ul>
Den entsprechenden UDT findet Ihr ja unter o.a. Link.
Erst hatte ich Bedenken, dass es zusammen mit dem content_dump PlugIn hinhaut, aber es hat auf Anhieb funktioniert.
Ich denke, ich werden den Tag noch ein wenig anpassen, da ich die Links selber generieren und platzieren will und zur Zeit noch leere a-Tags erstellt werden. Aber erst mal läuft es.

Danke noch mal für alle Denkanstöße!

Jan

Re: [Gelöst] Tags nach "truncate" schließen

Posted: Mon Nov 22, 2010 10:13 am
by nicmare
durch diesen thread bin ich auf dieses truncate_better aufmerksam geworden. ist ne feine sache! aber ich meine einen bug gefunden zu haben.
und zwar habe ich hier mal zwei beispiele vom ursprungstext und von der ausgabe nach truncate_better:

Code: Select all

<p>Marike Venter, senior lecturer at LISOF, presented a paper at the Global Marketing Conference 2010: Marketing in a Turbulent Environment, held from the 9th to the 12th of September 2010, Tokyo, Japan.</p>
<p>The conference, hosted by the Korean Academy of Marketing Science addressed how a dynamic globalised world comprising different cultures and cross-cultural business practices affects both domestic, and international marketing strategies.</p><p>und so weiter…</p>
Ausgabe:
Marike Venter, senior lecturer at LISOF, presented a paper at the Global Marketing Conference 2010: Marketing in a Turbulent Environment, held from the 9th to the 12th of September 2010, Tokyo, Japan...read more

Code: Select all

Marike Venter, senior lecturer at LISOF, presented a paper at the Global Marketing Conference 2010: Marketing in a Turbulent Environment, held from the 9th to the 12th of September 2010, Tokyo, Japan.<br/><br/>
The conference, hosted by the Korean Academy of Marketing Science addressed how a dynamic globalised world comprising different cultures and cross-cultural business practices affects both domestic, and international marketing strategies.<br/><br/>und so weiter…
falsche Ausgabe:
Marike Venter, senior lecturer at LISOF, presented a paper at the Global Marketing Conference 2010: Marketing in a Turbulent Environment, held from the 9th to the 12th of September 2010, Tokyo, Japan

Mir ist völlig klar dass man statt für Absätze nehmen soll aber ihr kennt ja die Kundschaft! Drum wäre es mir lieber wenn das tag auch bei korrekt kürzt. Er kürzt den Text zwar allerdings fehlt da komplett der "read more" button! Ich bin leider nicht so php fachkundig, um zu wissen woran es liegt. Aber wenn ich die s mit ersetze, gehts!! Es soll aber auch in der zweiten Variante (also mit s) seinen Dienst vollrichten.

Re: [Gelöst] Tags nach "truncate" schließen

Posted: Wed Dec 08, 2010 7:13 pm
by cyberman
Tja, wie gesagt
cyberman wrote: Das Problem scheint zu sein, dass der br-Tag nicht auf und wieder zu gemacht wird, sondern für sich allein steht.