Zu lange Ausgabe durch ... darstellen
Benni
- php
0 Auge0 Benni0 Joachim0 Gunnar Bittersmann0 Kai345
2 Gunnar Bittersmann- css
0 Benni
Hallo zusammen!
Ich habe gestern ein Blog auf meinem Webspace installiert und habe nun folgendes Problem: In der Seitenleiste werden die Überschriften der letzten Einträge angezeigt, wobei manche einfach zu lang für das kleine Feld sind. (hier ist der Link: http://nooster.no.funpic.de/lifetype-1.2.8/ )
Der Code an der Stelle lautet:
<h3>Letzte Einträge</h3>
<ul>
{foreach from=$recentposts item=recentpost}
<li><a title="{$recentpost->getText()|truncate:150:"..."|strip_tags|escape}" href="{$url->postLink($recentpost)}">{$recentpost->getTopic()}</a></li>
{/foreach}
</ul>
Jetzt möchte ich, dass das {$recentpost->getTopic()}
auf 15 Buchstaben begrenzt wird und für den Fall dass eine Überschrift länger ist sollen drei Punkte erscheinen.
Könnt ihr mir weiterhelfen?
Wäre echt prima!
Gruß, Benni
Hallo
<h3>Letzte Einträge</h3>
<ul>
{foreach from=$recentposts item=recentpost}
<li><a title="{$recentpost->getText()|truncate:150:"..."|strip_tags|escape}" href="{$url->postLink($recentpost)}">{$recentpost->getTopic()}</a></li>
{/foreach}
</ul>
>
> Jetzt möchte ich, dass das `{$recentpost->getTopic()}`{:.language-php} auf 15 Buchstaben begrenzt wird und für den Fall dass eine Überschrift länger ist sollen drei Punkte erscheinen.
Schau in die Doku des Blogs, ob es für getTopic die gleichen Möglichkeiten gibt, wie für getText. Der Text, der im title-Attribut des Links ausgegeben wird, wird nämlich offensichtlich nach 150 Zeichen abgeschnitten und es wird "..." drangehängt (... `->getText()|truncate:150:"..."|`{:.language-php} ...).
Tschö, Auge
--
Die deutschen Interessen werden am Liechtenstein verteidigt.
[Veranstaltungsdatenbank Vdb 0.2](http://termindbase.auge8472.de/)
Danke, es hat geklappt! Ich kann einfach in die Zeile noch ein
{$recentpost->getTopic()|truncate:150:"..."}
hinzufügen und schon funktioniet es :)
Hi
{$recentpost->getTopic()|truncate:150:"..."}[/code]
hinzufügen und schon funktioniet es :)
mehr zu den Optionen von Smarty und truncate (sieht zumindestens nach Smarty aus...)
Gruesse, Joachim
@@Benni:
Danke, es hat geklappt! Ich kann einfach in die Zeile noch ein
{$recentpost->getTopic()|truncate:150:"..."}[/code]
hinzufügen und schon funktioniet es :)
Nachdem du das hinzugefügt hast, kannst du das ganze 'truncate
'-Gelumpe gleich wieder entfernen. Mit CSS funktioniert es besser.
Live long and prosper,
Gunnar
[latex]Mae govannen![/latex]
{$recentpost->getTopic()|truncate:150:"..."}[/code]
hinzufügen und schon funktioniet es :)
Nur noch eine Nebenbemerkung:
Korrekter wäre es, statt "..." das Zeichen …(horizontale Ellipse) zu benutzen. Leider ist dieses nicht in allen Schriftarten so gut erkennbar wie ...
Cü,
Kai
@@Benni:
[…] wobei manche einfach zu lang für das kleine Feld sind. […]
Jetzt möchte ich, dass das{$recentpost->getTopic()}
auf 15 Buchstaben begrenzt wird und für den Fall dass eine Überschrift länger ist sollen drei Punkte erscheinen.
Das serverseitige Abschneiden ist keine gute Idee:
(1) Man weiß _nichts_ über die beim Nutzer tatsächlich verwendete Schriftart und -größe.
(2) Man kennt die von Nutzern eingegebenen Texte nicht. 15 Ms könnten schon zu breit sein, während das Abschneiden nach 15 Is ziemlich blöd aussieht.
Das serverseitige Abschneiden ist (bei einzeiligem Text) auch überhaupt nicht notwendig. Alle aktuell gängigen Browser beherrschen das mit CSS:
IEs und Webkits kennen die 'text-overflow'-Eigenschaft. Opera kennt sie als '-o-text-overflow'. Im Firefox 3.0 erreicht man dies mit '-moz-binding'. [http://forum.de.selfhtml.org/archiv/2008/11/t179692/#m1186540]
Testseite | Stylesheet | Binding für Firefox
Live long and prosper,
Gunnar
Danke, das ist natürlich eine sehr elegante Lösung! Das ist auch insofern besser, weil es nicht nach ganzen Wörtern, sondern auch nach Buchstaben kürzt. Das sieht besser aus finde ich. Danke für den Post!