Benni: Zu lange Ausgabe durch ... darstellen

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&auml;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

  1. Hallo

    <h3>Letzte Eintr&auml;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/)
    
    1. Danke, es hat geklappt! Ich kann einfach in die Zeile noch ein

        
        
      {$recentpost->getTopic()|truncate:150:"..."}
      

      hinzufügen und schon funktioniet es :)

      1. 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

        --
        Am Ende wird alles gut.
      2. @@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

        --
        Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)
      3. [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

        --
        Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
        selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
  2. @@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

    --
    Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)
    1. 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!