Template Anpassung Text kürzen

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • mschindler
    Contao-Nutzer
    • 25.08.2011
    • 228

    #1

    Template Anpassung Text kürzen

    Hallo zusammen,
    ich möchte euch für die Templateausgabe einen Tipp geben, in dem der Text um eine bestimmte Anzahl an Zeichen abgeschnitten wird, aber nicht im Wort.
    Zugleich werden noch die Umbrüche aus der Eingabe als BR eingefügt. Von hier übernommen: http://de.contaowiki.org/Catalog_Tem...plate_ausgeben

    Die Funktion könnt ihr euch in euer TPL oben einfügen.

    PHP-Code:
    
    function kuerzen($str, $length, $minword = 3)
    {
        $sub = '';
        $len = 0;
    
        foreach (explode(' ', $str) as $word)
        {
            $part = (($sub != '') ? ' ' : '') . $word;
            $sub .= $part;
            $len += strlen($part);
    
            if (strlen($word) > $minword && strlen($sub) >= $length)
            {
                break;
            }
        }
    
        return $sub . (($len < strlen($str)) ? '...' : '');
    } 
    

    Die Ausgabe des Textes.
    Die Stelle funpark_info müsst ihr durch eurer Textfeld aus dem Catalog tauschen.

    PHP-Code:
    
            //echo kuerzen($entry['data']['funpark_info']['value'], 222);
    
            echo $entry['data']['funpark_info']['value'] =  str_replace("\xa", "<br/>",  kuerzen($entry['data']['funpark_info']['value'], 352)); 
    

    !!! Wenn man was verbessern kann, dann bitte her damit. !!!

    Sonst könnte man das doch in's WiKi mit aufnehmen!

    Viele Grüße

    Markus
    Offizieller Contao Premium Partner seit 2016
    codesache.de
    ---
    Mitglied der Contao Community Bayern
    Aktuelle Termine zur Contao Community Bayern: contao-bayern.de
  • the_scrat
    Contao-Urgestein
    • 24.02.2010
    • 2055

    #2
    Hi, du bekommst jedoch ein Problem, wenn du, warum auch immer 2x das Template hast (2 Leser, 2 Listen) etc. dann wird die Funktion 2x geladen und es sollte zu einem Fehler kommen.

    Contao bietet schon eine Core-funktion, diese sollte man direkt im Template ebenfalls anwenden können.

    edit: Der Code der hier stand war nicht korrekt, siehe Beitrag von Andreas unterhalb von diesem....
    Zuletzt geändert von the_scrat; 29.05.2012, 07:41.
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

    Kommentar

    • Andreas
      Contao-Urgestein
      • 19.06.2009
      • 7709

      #3
      Er möchte doch den Text abschneiden aber nicht im Wort. Das macht man mit der Contao-Methode substrHtml() aus String.php.
      PHP-Code:
      $this->import('String');
      
      $myString = $entry['data']['funpark_info']['value'];
      
      $myString = $this->String->substrHtml($myString, 66); 
      
      ps Achtung: import schreibt man klein
      Bitte!
      Vor Anfragen im Forum HTML validieren.
      Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

      Vielen Dank an alle Wunschlistenerfüller
      Andreas Burg, Web Solutions

      Kommentar

      • the_scrat
        Contao-Urgestein
        • 24.02.2010
        • 2055

        #4
        Hi Andreas,

        tatsache, danke für die Korrektur. Hab den Code oben rausgenommen, damit zukünftige User dort nicht hängenbleiben und den falschen Code übernehmen, sondern deinen.
        Programmers don't comment their code. It was hard to write, it should be hard to understand...

        Kommentar

        • Tim G
          Contao-Urgestein
          • 13.02.2010
          • 2212

          #5
          Das Kürzen geht vielleicht hiermit besser:

          http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

          Kommentar

          • the_scrat
            Contao-Urgestein
            • 24.02.2010
            • 2055

            #6
            Es gibt allerdings 2 Unterschiede

            1. Der Originalwert bleibt nicht in voller Länge in der DB, da die Kürzung ja im Feld gespeichert wird
            2. Trennt deine Erweiterung nach einer festen Anzahl Zeichen ohne ganze Wörter zu berücksichtigen.
            Programmers don't comment their code. It was hard to write, it should be hard to understand...

            Kommentar

            • Tim G
              Contao-Urgestein
              • 13.02.2010
              • 2212

              #7
              Zitat von the_scrat Beitrag anzeigen
              Es gibt allerdings 2 Unterschiede

              1. Der Originalwert bleibt nicht in voller Länge in der DB, da die Kürzung ja im Feld gespeichert wird
              2. Trennt deine Erweiterung nach einer festen Anzahl Zeichen ohne ganze Wörter zu berücksichtigen.
              Ja, trennt fest. Es ist wirklich die Trennung nach einer bestimmten Anzahl. Alles andere wäre viel zu verwirrend. Das ist hier mehr wie eine SMS auf 160 Zeichen begrenzt.
              Auch wenn der volle Text in der DB landen soll, geht es nur via Template. Nach einer Logik trennen ist auch im Template besser aufgehoben.

              Grüße,
              Tim
              http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

              Kommentar

              • mschindler
                Contao-Nutzer
                • 25.08.2011
                • 228

                #8
                Hallo Andreas,
                das ist natürlich der kürzere Weg um einen Text zu kürzen.

                Vielen Dank

                Markus

                Zitat von Andreas Beitrag anzeigen
                Er möchte doch den Text abschneiden aber nicht im Wort. Das macht man mit der Contao-Methode substrHtml() aus String.php.
                PHP-Code:
                $this->import('String');
                
                $myString = $entry['data']['funpark_info']['value'];
                
                $myString = $this->String->substrHtml($myString, 66); 
                
                ps Achtung: import schreibt man klein
                Offizieller Contao Premium Partner seit 2016
                codesache.de
                ---
                Mitglied der Contao Community Bayern
                Aktuelle Termine zur Contao Community Bayern: contao-bayern.de

                Kommentar

                Lädt...