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

Diskussionen zur Smarty-Template-Engine
Locked
User avatar
jeff1980
Forum Members
Forum Members
Posts: 210
Joined: Mon Apr 30, 2007 1:46 pm
Location: Dortmund

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

Post 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
Last edited by jeff1980 on Mon Nov 01, 2010 8:05 am, edited 1 time in total.
uniqu3

Re: Tags nach "truncate" schließen

Post by uniqu3 »

Könnte so funktioneren.

Code: Select all

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

Re: Tags nach "truncate" schließen

Post by NaN »

Wo hast Du denn dieses CloseTag gefunden?
cyberman

Re: Tags nach "truncate" schließen

Post 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/
klenkes
Power Poster
Power Poster
Posts: 307
Joined: Mon Sep 08, 2008 9:43 am

Re: Tags nach "truncate" schließen

Post 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
User avatar
jeff1980
Forum Members
Forum Members
Posts: 210
Joined: Mon Apr 30, 2007 1:46 pm
Location: Dortmund

Re: Tags nach "truncate" schließen

Post 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
nockenfell
Power Poster
Power Poster
Posts: 751
Joined: Fri Sep 12, 2008 2:34 pm
Location: Schweiz / Switzerland

Re: Tags nach "truncate" schließen

Post 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.
[this message is written with 100% recycled bits]
cyberman

Re: Tags nach "truncate" schließen

Post 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" ...
nockenfell
Power Poster
Power Poster
Posts: 751
Joined: Fri Sep 12, 2008 2:34 pm
Location: Schweiz / Switzerland

Re: Tags nach "truncate" schließen

Post 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
[this message is written with 100% recycled bits]
cyberman

Re: Tags nach "truncate" schließen

Post by cyberman »

Das PHP-Snippet bringt uns da nicht weiter, weil genau das truncate bereits macht ;).
User avatar
jeff1980
Forum Members
Forum Members
Posts: 210
Joined: Mon Apr 30, 2007 1:46 pm
Location: Dortmund

Re: Tags nach "truncate" schließen

Post 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
nicmare
Power Poster
Power Poster
Posts: 1150
Joined: Sat Aug 25, 2007 9:55 am
Location: Berlin

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

Post 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.
cyberman

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

Post 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.
Locked

Return to “Smarty-Tipps und -Tricks”