Ankündigung

Einklappen
Keine Ankündigung bisher.

substring für Teaser

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • substring für Teaser

    Hallo,
    ich möchte einen automatischen Teasertext generieren lassen, der sich auf die ersten 100 Zeichen des Artikeltextes bezieht. Kann ich dies irgendwie per substring innerhalb des CCs machen?
    Danke im Voraus für ein Feedback hierzu.
    VG Frank

  • #2
    Versuchs mal damit. Schneidet erst nach Zeilenumbruch ab.
    Die Frage ist, welche Rolle hier CC dabei spielen soll..
    Hier dann die entsprechenden CC-Values verwenden...

    PHP-Code:
    <?php 
    $teasertext 
    $this->replaceInsertTags('{{article_teaser::id}}')
    if(
    strlen($teasertext) => 100) {
    $teasertext=wordrap($teasertext,100); // nach 100 Zeichen Zeilenumbruch
    $teasertext substr($teasertext,0,strpos($teasertext,"\n")).'...'//Teaserext abschneiden
    }
    ?>

    Kommentar


    • #3
      Hallo,
      vielen Dank erst einmal für Dein Feedback hierzu.
      Da ich ehrlich gesagt erst angefangen habe mich mit PHP & Co. zu beschäftigen, kann ich dies nicht in den CC Kontext setzen.
      Im Template habe ich folgenden Eintrag zur Ausgabe des Teasertextes, allerdings würde ich mich gerne auf den Value "artikeltext" beziehen und diesen dann entsprechend "abschneiden". Dann spare ich mir ja das Feld für den Teaser und im FE sieht es einheitlicher aus. Hast Du ggf. noch einen Hinweis für mich? Danke im Voraus!
      VG Frank

      <?php if($entry->field('teasertext')->value()): ?><div class="short_description"><?php echo $entry->field('teasertext')->value(); ?></div><?php endif; ?>

      Kommentar


      • #4
        Verstehe, es hörte sich so an, dass du einen "normalen" Contao Artikel Teaser verwenden wolltest.
        Nachdem du in deinem CC offenbar ein Feld "teasertext" hast, versuche mal dies:

        PHP-Code:
        <?php if($entry->field('teasertext')->value()): ?>
        <div class="short_description">
        <?php 
            $teasertext 
        $entry->field('teasertext')->html();
            if(
        strlen($teasertext) => 100) {
            
        $teasertext=wordwrap($teasertext,100); // nach 100 Zeichen Zeilenumbruch
            
        $teasertext substr($teasertext,0,strpos($teasertext,"\n")).'...'//Teaserext abschneinden
            
        }
        ?>
        </div><?php endif; ?>
        Wichtig ist hier nur, dass html-Eingaben im Textfeld erlaubt sind-> zwecks Zeilenumbruch.
        Wenn du damit leben kannst, dass der Teasertext mitten im Wort gekappt wird, wäre der wordwrap Umweg nicht notwendig.
        Alles innerhalb der foreach-entry schleife...




        Kommentar


        • #5
          Erst einmal vielen Dank für Deine Hilfe. Ich habe den Code mal in das Listentemplates des CC kopiert, aber leider bekam ich erst einen Fehler: syntax error, unexpected '=>' (T_DOUBLE_ARROW)
          Das habe ich durch Umstellung auf '>=' fixen können, aber es erfolgt keine Ausgabe im FE...ist sicherlich recht "Basic", aber fehlt hier nicht irgendwo ein echo?
          VG Frank

          Kommentar


          • #6
            Habe den Code wie folgt geändert und nun funktioniert es:

            Code:
            <?php if($entry->field('artikeltext')->value()): ?>
            <div class="short_description">
            <?php
            $teasertext = $entry->field('artikeltext')->value();
            if(strlen($teasertext) >= 250) {
            $teasertext = wordwrap($teasertext,250);
            $teasertext = substr($teasertext,0,strpos($teasertext,"\n")).'.. .';
            echo $teasertext;
            }
            ?>
            </div><?php endif; ?>

            Beispiel: http://www.myastro.de/magazin-kinder-familie.html

            Danke nochmals!

            Kommentar


            • #7
              Ich empfehle Contao \StringUtil::substrHtml(); Methode für solche Dinge. Diese trennt einmal html-konform und trennt auch nicht strikt innerhalb von Wörtern (es kann zu längeren Strings kommen, oder kürzeren als der Wert, aber sinniger)
              http://www.premium-contao-themes.com

              Kommentar

              Lädt...
              X