Ergebnis 1 bis 33 von 33

Thema: Teasertext automatisch erzeugen

  1. #1
    Contao-Nutzer
    Registriert seit
    15.08.2009.
    Beiträge
    187

    Standard Teasertext automatisch erzeugen

    Hallo zusammen,

    ist es möglich den Teasertext automatisch aus dem Text generieren zu lassen und diesen dann nach x Zeichen zu kürzen?


    Gruss Oliver

  2. #2
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Klar, musst aber in Template machen.
    Mit strpos und nem offset geht das sehr gut.
    Damit nicht mitten im Wort oder unsinnig im Satz gekürzt wird, am besten noch das offset nach dem ersten gefundenen SatzPunkt anpassen hinter dem offset anpassen.

    Ich hab die paar Zeilen code irgendwo liegen. Kann ich morgen posten.

    Grüße Tim


    Sent from my iPhone using Tapatalk
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  3. #3
    Contao-Nutzer Avatar von Maschmo
    Registriert seit
    16.05.2011.
    Ort
    Linz (Österreich)
    Beiträge
    15

    Standard

    Wäre voll cool wenn du ein paar Zeilen posten könntest. Vielen Dank im Voraus

  4. #4
    Contao-Urgestein Avatar von tblumrich
    Registriert seit
    25.06.2009.
    Ort
    Feldberger Seenlandschaft
    Beiträge
    2.225
    Partner-ID
    7979
    User beschenken
    Wunschliste

    Standard

    Ich benutze für die News das was in diesem Thread gepostet wurde... funktioniert sehr gut.

    Gruß
    Thomas
    blucomp | Webdesign & Onlinelösungen

  5. #5
    Contao-Nutzer
    Registriert seit
    15.08.2009.
    Beiträge
    187

    Standard

    Hallo zusammen,

    vielen Dank für eure Antworten. Ich habe es soweit angepasst. Die autom. Teasererzeugung funktioniert wie gewünscht.
    Bei der Erstellung soll der Text nach dem Wortende zerschnitten werden.
    Also habe ich diese Zeile in:
    PHP-Code:
    <?php echo substr(strip_tags($this->text), 0strpos(strip_tags($this->text), " "160)).' ...'?>
    korrigiert. Nun ist alles perfekt


    Gruss Oliver
    Geändert von derolli (31.07.2011 um 18:41 Uhr)

  6. #6
    Contao-Urgestein Avatar von tblumrich
    Registriert seit
    25.06.2009.
    Ort
    Feldberger Seenlandschaft
    Beiträge
    2.225
    Partner-ID
    7979
    User beschenken
    Wunschliste

    Standard

    Hi, ich muss nochmal nachfragen, da jetzt doch ein Problem auftauchte mit der o.g. Lösung und da meine PHP Kenntnisse dafür nicht ausreichen.

    Problem: Sobald der gepostete Text kürzer ist als die Zeichenanzahl, nach der abgeschnitten wird, taucht eine Fehlermeldung auf. Das passiert zwar selten, aber kann.
    Frage: Ist es möglich das so zu modifizieren, dass bei weniger Zeichen eben der ganze Text angezeigt wird? Ich würde das auch in Auftrag geben, aber vielleicht ist das ja einfacher als ich denke.

    Gruß
    Thomas

    //edit: Falls hilfreich, hier noch der entsprechende Templatecode:
    PHP-Code:
    <div class="layout_latest block<?php echo $this->class?>">
    <?php if ($this->addImage): ?>
    <div class="image_container<?php echo $this->floatClass?>"<?php if ($this->margin || $this->float): ?> style="<?php echo trim($this->margin $this->float); ?>"<?php endif; ?>>
    <?php if ($this->href): ?>
    <a href="<?php echo $this->href?>"<?php echo $this->attributes?> title="<?php echo $this->alt?>">
    <?php endif; ?>
    <img src="<?php echo $this->src?>"<?php echo $this->imgSize?> alt="<?php echo $this->alt?>" />
    <?php if ($this->href): ?>
    </a>
    <?php endif; ?>
    <?php 
    if ($this->caption): ?>
    <div class="caption"><?php echo $this->caption?></div>
    <?php endif; ?>
    </div>
    <?php endif; ?>
    <h3><?php echo $this->newsHeadline?><br /><?php if ($this->hasMetaFields): ?>
    <span class="info"><?php echo $this->date?> <?php echo $this->author?> <?php echo $this->commentCount?></span>
    <?php endif; ?></h3>
    <?php if ($this->teaser): ?>
      <p class="teaser"><?php echo $this->teaser?></p>
    <?php else: ?>
      <p class="teaser"><?php echo substr(strip_tags($this->text), 0strpos(strip_tags($this->text), " "275)); ?>... <?php if ($this->text): ?>
    <span class="more"><a href="{{link_url::54}}">Zum Blog</a><!--<?php echo $this->more?>--></span>
    <?php endif; ?></p>
    <?php endif; ?> 

    </div>
    Geändert von tblumrich (03.11.2011 um 14:55 Uhr)
    blucomp | Webdesign & Onlinelösungen

  7. #7
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    Hallo zusammen

    Ich habe dasselbe Problem wie Thomas:
    Wenn zu wenig Text vorhanden ist, erscheint im FE folgende Fehlermeldung:
    Code:
    Warning: strpos() [function.strpos]: Offset not contained in string in /var/www/v
    Kann mir jemand helfen, dass bei zu wenig Text kein Fehler angezeigt wird?

    Besten Dank im Voraus!
    Michael
    Geändert von Michael (19.04.2012 um 14:02 Uhr)
    Contao ist echt !

  8. #8
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    Habe den Fehler wie folgt behoben:

    PHP-Code:
    <div class="teaser">
      
      <? 
    $text= $this->text;
    if (strlen($text) >= 120){
        echo strip_tags(substr($text, 0, strpos($text," ",160)))."..."; 
    } else {
        echo $text;
    }
    ?> 
      
    <p class="more"><?php echo $this->more?></p>
      </div>
    Contao ist echt !

  9. #9
    Contao-Nutzer
    Registriert seit
    04.11.2009.
    Beiträge
    121

    Standard

    Hallo,

    Danke Michael, habe auch Deinen Code genommen und alles supi!!!

    Jetzt wäre es doch sinnvoll "Weiterlesen..." auszublenden wenn der Text eben weniger als die gewünschten Zeichen hat!
    Hat dafür jemand schon eine Idee oder eine Lösung? Wäre sicher sinnvoll.

    Danke!

    Irgendwie habe ich die Code-Schnipsel selber hinbekommen:

    Also der "Teaser" wird automatisch aus dem Text generiert und wird am Wortende abgeschnitten.
    Wenn weniger als 299 Zeichen, wird kein "Weiterlesen..." generiert.

    HTML-Code:
    <div class="teaser"> 
      <?
        $text= $this->text; 
    if (strlen($text) >= 299){ 
        echo strip_tags(substr($text, 0, strpos($text," ",300))).". . .";  
    } else { 
        echo $text; 
    } 
    ?>  
    </div>
      <?php if (strlen($text) >= 299): ?>
    <p class="more"><?php echo $this->more; ?></p>
    <?php endif; ?>
    Übrigens bei mir im modifizierten Template "news_latest.html5"
    Hier komplett:
    HTML-Code:
    <div class="layout_latest block<?php echo $this->class; ?>">
    <?php if ($this->hasMetaFields): ?>
    <p class="info"><time datetime="<?php echo $this->datetime; ?>"><?php echo $this->parseDate("d.m.Y", $this->timestamp); ?></time> <?php echo $this->author; ?> <?php echo $this->commentCount; ?></p>
    <?php endif; ?>
    <?php if ($this->addImage): ?>
    <figure class="image_container<?php echo $this->floatClass; ?>"<?php if ($this->margin || $this->float): ?> style="<?php echo trim($this->margin . $this->float); ?>"<?php endif; ?>>
    <?php if ($this->href): ?>
    <a href="<?php echo $this->href; ?>"<?php echo $this->attributes; ?> title="<?php echo $this->alt; ?>">
    <?php endif; ?>
    <img src="<?php echo $this->src; ?>"<?php echo $this->imgSize; ?> alt="<?php echo $this->alt; ?>">
    <?php if ($this->href): ?>
    </a>
    <?php endif; ?>
    <?php if ($this->caption): ?>
    <figcaption class="caption" style="width:<?php echo $this->arrSize[0]; ?>px"><?php echo $this->caption; ?></figcaption>
    <?php endif; ?>
    </figure>
    <?php endif; ?>
    <h2><?php echo $this->text ? $this->linkHeadline : $this->newsHeadline; ?></h2>
    <div class="teaser"> 
      <?
        $text= $this->text; 
    if (strlen($text) >= 299){ 
        echo strip_tags(substr($text, 0, strpos($text," ",300))).". . .";  
    } else { 
        echo $text; 
    } 
    ?>  
    </div>
      <?php if (strlen($text) >= 299): ?>
    <p class="more"><?php echo $this->more; ?></p>
    <?php endif; ?>
    </div>
    Geändert von okni (19.07.2012 um 21:28 Uhr)

  10. #10
    Contao-Nutzer
    Registriert seit
    29.07.2009.
    Ort
    Düsseldorf
    Beiträge
    82

    Standard Optische Feinheiten

    Hallo an Alle,

    da ich grad mit diesem Code hantiere hier eine kleine optische Optimierung.

    Im Original werden 3 einzelne Punkte ausgegeben:

    Zitat Zitat von okni Beitrag anzeigen
    echo strip_tags(substr($text, 0, strpos($text," ",300))).". . .";
    schöner und typografisch richtiger ist aber das hier: Das Auslassungszeichen (&hellip, davor ein Leerzeichen:

    Code:
    echo strip_tags(substr($text, 0, strpos($text," ",300)))."&nbsp;&hellip;";
    Danke aber für den Ursprungscode, ich habe den in ein Template eingebaut und er funktionierte auf Anhieb!

    Gruß
    Typo

  11. #11
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    Habe gerade probiert das Template news_latest unter Contao 3.1.3 anzupassen.
    Leider erscheint kein Text mehr, nur noch "... weiterlesen"
    Finde leider den Fehler nicht.

    Zitat Zitat von Michael Beitrag anzeigen
    Habe den Fehler wie folgt behoben:

    PHP-Code:
    <div class="teaser">
      
      <? 
    $text= $this->text;
    if (strlen($text) >= 120){
        echo strip_tags(substr($text, 0, strpos($text," ",160)))."..."; 
    } else {
        echo $text;
    }
    ?> 
      
    <p class="more"><?php echo $this->more?></p>
      </div>
    Contao ist echt !

  12. #12
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    PHP-Code:
    <?php

    $intMaxLenght 
    120;
    $text strip_tags($this->text);

    if (
    strlen($text) >= $intMaxLenght)
    {
      echo 
    substr($text0$intMaxLenght).'...';
    }
    else
    {
      echo 
    $this->text;
    }

    ?>
    Besser, wenn du eine Methode von Contao benutzt. substr() od. substrHtml(), siehe core-3.1.3\system\modules\core\library\Contao\String.ph p
    Dann müsste das hier reichen
    PHP-Code:
    <?php

    #echo \String::substrHtml($this->text, 120);
    echo \String::substr($this->text120);

    ?>
    Neuere Contao Versionen
    PHP-Code:
    <?php

    echo \StringUtil::substrHtml($this->text120);
    // oder
    echo \StringUtil::substr($this->text120);

    ?>
    Geändert von Andreas (29.01.2018 um 14:58 Uhr)
    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

  13. #13
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    @andreas:
    Besten Dank! Funktioniert tiptop!
    Contao ist echt !

  14. #14
    Contao-Nutzer
    Registriert seit
    11.05.2013.
    Beiträge
    7

    Standard

    Das Template ist super!! Gibt es eine Möglichkeit auch das erste Bild aus dem Beitrag anzeigen zu lassen? Da stehe ich gerade etwas auf dem Schlauch...

  15. #15
    Contao-Nutzer
    Registriert seit
    09.04.2013.
    Beiträge
    1

    Standard

    Zitat Zitat von Pantos Beitrag anzeigen
    Das Template ist super!! Gibt es eine Möglichkeit auch das erste Bild aus dem Beitrag anzeigen zu lassen? Da stehe ich gerade etwas auf dem Schlauch...
    Hi!
    Ja, ich habe das gleiche Problem. Die Bilder werden nicht aus dem News-Eintrag ausgelesen. Bilder, die dem Teaser zugefügt wurden, werden aber angezeigt.
    Außerdem klappt es bei mir nicht, dass der Weiterlesen-Link nur angezeigt wird, falls mehr als die definierte Zeichenzahl im Text steht.

    PHP-Code:
    <div class="layout_latest arc_<?php echo $this->archive->id?> block<?php echo $this->class?>">
      <?php if ($this->hasMetaFields): ?>
        <p class="info"> </p>
      <?php endif; ?>
      <div class="newslist_teaser">
        <?php if ($this->addImage): ?> 
        <figure class="image_container_news<?php echo $this->floatClass?>"<?php if ($this->margin): ?> style="<?php echo $this->margin?>"<?php endif; ?>>
          <?php if ($this->href): ?>
            <a href="<?php echo $this->href?>"<?php echo $this->attributes?> title="<?php echo $this->alt?>">
          <?php endif; ?>
          <?php $this->insert('picture_default'$this->picture); ?>
          <?php if ($this->href): ?>
            </a>
          <?php endif; ?>
          <?php if ($this->caption): ?>
            <figcaption class="caption"><?php echo $this->caption?></figcaption>
          <?php endif; ?>
        </figure>
        <?php endif; ?>
        <div class="newslist_teasertext">
          <h2><?php echo $this->text $this->linkHeadline $this->newsHeadline?>
          </h2>
          <?php if ($this->teaser): ?>
            <p class="teaser"><?php echo $this->teaser?>
              <?php else: ?>
              <?php echo String::substr($this->text300); ?>
            </p>
          <?php endif; ?>
          <?php if (strlen($this->text) >= 301): ?>
            <p class="more"><?php echo $this->more?></p>
          <?php endif; ?>
        </div>
      </div>
    </div>
    Ich kenne mich mit php leider nicht wirklich aus und bastle mir die Templates immer etwas zusammen... Das ganze soll auf Contao 3.4.4 laufen.
    Vielen Dank schonmal für die Hilfe!
    Geändert von Isabel_Htkp (05.04.2015 um 18:33 Uhr)

  16. #16
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Mit diesem Code kannst du die Variablen, welche im Template ankommen im FE ausgeben.
    PHP-Code:
    <?php $this->showTemplateVars(); ?>
    Oder so in eine Datei system/logs/debug.log schreiben
    PHP-Code:
    <?php 
    $debug  
    "\n\n".'file: '.__FILE__.' (line '.__LINE__.')'."\n\n";
    $debug .= print_r($this->arrDatatrue);
    log_message($debug'debug.log');
    ?>
    Das hier
    PHP-Code:
    <?php if($farbe == 'blau'): ?>  
      <p>Blau</p>
    <?php endif; ?>
    Ist das gleiche wie
    PHP-Code:
    <?php
    if($farbe == 'blau')
    {
      echo 
    '<p>Blau</p>';
    }
    ?>
    Oft wird es übersichtlicher, wenn man die 2. Variante benutzt. Wenn du das nicht so gut kannst, dann kannst du das Temlplate erstmal ganz leeren und Stück für Stück aufbauen, dabei lernst du es dann.
    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

  17. #17
    Contao-Nutzer Avatar von Eva
    Registriert seit
    03.07.2013.
    Beiträge
    149

    Standard

    Hallo zusammen

    Ich habe die Lösung von Andreas im News-Template eingebaut.
    Besser, wenn du eine Methode von Contao benutzt. substr() od. substrHtml(), siehe core-3.1.3\system\modules\core\library\Contao\String.ph p
    Dann müsste das hier reichen
    HTML-Code:
    <?php 
    
    echo String::substr($this->text, 120); 
    
    ?>
    Leider verschwindet dabei bei der Ausgabe der Absatz. Eigentlich ist der Preis ein <p> und der Text danach ein <p>, aber nun wird alles zusammengeschrieben, ohne Absatz.

    Im Text sieht das dann so aus:
    Bildschirmfoto 2016-06-16 um 06.56.29.png

    Im Quelltext so:
    Bildschirmfoto 2016-06-16 um 06.56.48.png

    Ich habe die Ausgabe des normalen Teasers auskommentiert, da sieht man die eigentliche HTML-Struktur.

    Gibt es dafür eine Lösung oder verschwinden da alle HTML-Zeichen? Notfalls löse ich es mit der subheadline... wäre jedoch toll, wenn es eine andere Lösung für das fehlende HTML gäbe.

    Liebe Grüsse
    Eva
    Geändert von Eva (16.06.2016 um 06:37 Uhr)

  18. #18
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.109
    Partner-ID
    10107

    Standard

    Nimm
    PHP-Code:
    \StringUtil::substrHtml 

  19. #19
    Contao-Nutzer Avatar von Eva
    Registriert seit
    03.07.2013.
    Beiträge
    149

    Standard

    Vielen Dank! Perfekt!

  20. #20
    Contao-Nutzer
    Registriert seit
    15.10.2013.
    Beiträge
    16

    Standard

    Servus Leude,

    hab das jetzt mal so übernommen und an und für sich tut's was es soll - sprich Teasertext wird gekürzt auf 120 zeichen - allerdings ist jetzt kurioserweise bei einem der Einträge statt dem Teasertext einfach nur eine "1" und sonst nix. Zu erwähnen sei an der Stelle ggf. das sich der Nachrichteneintrag insofern von den anderen unterscheidet, als dass es sich hierbei nur um eine Weiterleitung zu einem Youtube Video handelt, d.h. zwar ein Teasertext im Container, aber kein Inhalt an sich hinterlegt ist.

    Weiß einer woran das liegen könnte?

    www.dr-carl-partner.de (Gleich auf der Startseite)

  21. #21
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.109
    Partner-ID
    10107

    Standard

    Poste dein News Template.

  22. #22
    Contao-Nutzer
    Registriert seit
    15.10.2013.
    Beiträge
    16

    Standard

    Zitat Zitat von Farbenfeuer Beitrag anzeigen
    Servus Leude,

    hab das jetzt mal so übernommen und an und für sich tut's was es soll - sprich Teasertext wird gekürzt auf 120 zeichen - allerdings ist jetzt kurioserweise bei einem der Einträge statt dem Teasertext einfach nur eine "1" und sonst nix. Zu erwähnen sei an der Stelle ggf. das sich der Nachrichteneintrag insofern von den anderen unterscheidet, als dass es sich hierbei nur um eine Weiterleitung zu einem Youtube Video handelt, d.h. zwar ein Teasertext im Container, aber kein Inhalt an sich hinterlegt ist.

    Weiß einer woran das liegen könnte?

    www.dr-carl-partner.de (Gleich auf der Startseite)
    Jo hat sich erledigt, habs selber gemerkt warum. Falls es wen interessiert: Normalerweise steht im Template
    Code:
    <?php echo $this->teaser ?>
    und der Vorschlag ist
    Code:
    <?php echo \StringUtil::substr($this->text, 120);   ?>
    sprich ich hab verpennt das "text" wieder zu "teaser" zu ändern, was zur Folge hat, dass er den Inhaltstext nimmt und nicht den Teasertext vom Container der Nachricht.

  23. #23
    Contao-Nutzer
    Registriert seit
    23.10.2017.
    Beiträge
    114

    Standard

    Hallo,

    ich bin auch auf der Suche nach einer Möglichkeit, den Teaser automatisch generieren zu lassen. Hat es schon jemand unter Contao 4 am Laufen und könnte ggf. einfach das ganze Template posten, also mit den Original-Zeilen oder mir zumindest mitteilen, wo welcher Teil rein muss?

    Gruß

    Tefracky

  24. #24
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wie hier oben in #12 https://community.contao.org/de/show...l=1#post290588 beschrieben (letzter Block - für neuere Contao Versionen).

    Einfach deinen Teaser-String durch die Funktion laufen lassen.
    PHP-Code:
    $myString      'foo';
    $myShortString = \StringUtil::substrHtml($myString120); 
    oder direkt da wo dein String ausgegeben wird
    PHP-Code:
    vorher
    <?= $myString ?>

    nachher
    <?= \StringUtil::substrHtml($myString120?>
    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

  25. #25
    Contao-Nutzer
    Registriert seit
    23.10.2017.
    Beiträge
    114

    Standard

    Alles klar, jetzt verstehe ich es auch, danke! Allerdings gibt es immer noch ein Problemchen. Ich benutze den RSS Feed, um dann über IFTTT das Ganze noch auf Facebook zu posten. Doch leider erscheint dort immer noch kein Teaser. Ich vermute, es liegt daran, dass der Teasertext auch nicht angezeigt wird, wenn ich den Newsbeitrag km BE auswähle.
    Dazu hätte ich gerne am Ende des Teasertextes noch 3 Punkte, da es ja kein angeschlossener Satz ist.

    Wie könnte man das noch optimieren?
    Geändert von tefracky (29.01.2018 um 21:50 Uhr)

  26. #26
    Contao-Fan
    Registriert seit
    16.11.2012.
    Ort
    Freiburg
    Beiträge
    539

    Standard

    Zitat Zitat von tefracky Beitrag anzeigen
    Dazu hätte ich gerne am Ende des Teasertextes noch 3 Punkte, da es ja kein angeschlossener Satz ist.
    Zb.
    PHP-Code:
    <?= $variable ?>...
    Grüße
    Alex

  27. #27
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wenn man \StringUtil:substr() benutzt, dann ist die Ellipsis schon mit dabei (kann auch verändert werden - 3. Parameter angeben) https://github.com/contao/core/blob/...ngUtil.php#L40

    Bei \StringUtil:substrHtml() https://github.com/contao/core/blob/...gUtil.php#L101 gibt es diese Möglichkeit leider noch nicht. Evtl. mal als Feature Request einstellen.

    Bei substrHtml() könnte man auch sowas hier machen (ungetestet)
    PHP-Code:
    <?php

    $targetLength 
    120;
    $sourceLength strlen(trim(strip_tags($this->teaser)));

    if(
    $sourceLength $targetLength)
    {
      
    $this->teaser '<div class="shortened_string">'.\StringUtil::substrHtml($this->teaser$targetLength).'</div>';
    }

    ?>
    CSS:
    PHP-Code:
    .shortened_string:after {
      
    content"…";

    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

  28. #28
    Contao-Nutzer
    Registriert seit
    23.10.2017.
    Beiträge
    114

    Standard

    Hallo,

    ich habe einfach das substrHtml durch substr ersetzt und jetzt funktioniert alles einwandfrei.

    Allerdings wird es nicht in die Datenbank geschrieben und ist daher auch nicht im RSS Feed sichtbar. Gibt es dafür auch eine Lösung?

    Was passiert eigentlich mit News, die schon existieren, werden die dann überschrieben? Wenn ja, kann man das verhindern?

    Gruß

    Tefracky
    Geändert von tefracky (31.01.2018 um 20:02 Uhr)

  29. #29
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Nein, über Code, welcher in den Ausgabetemplates steht, werden keine Einträge in der DB modifiziert, es sei denn du programmierst dies explizit in dem Template, dass beim Aufruf des Templates irgendetwas in der DB verändert werden soll.

    Dieser Code ist ja nur für die Templates gedacht. D.h. nur für die Ausgabe. Der Wert in der DB bleibt dabei original, das sollte ja auch so sein. Du musst also nach deinem Template suchen, welches dir das RSS erstellt und den Code dort anwenden.
    Geändert von Andreas (01.02.2018 um 16:50 Uhr)
    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

  30. #30
    Contao-Nutzer
    Registriert seit
    23.10.2017.
    Beiträge
    114

    Standard

    Wenn du das sagst, dann klingt das alles immer so einfach... Aber ich weiß was du meinst, es ist ja auch naheliegend.
    Bei RSS habe ich die Auswahl zwischen "rss_default.html5" und "rss_items_only.html5". Da ich nur die Teasertexte exportieren möchte, würde ich jetzt das "items_only" bearbeiten, was folgendermaßen aussieht:

    PHP-Code:
    <?php $this->extend('block_unsearchable'); ?> <?php $this->block('content'); ?> <?php foreach ($this->items as $item): ?> <div class="rss_items_only<?= $item['class'?>"> <h2><a href="<?= $item['link'?>" target="_blank" rel="noopener"><?= $item['title'?></a></h2> <div class="description"><?= $itEm['description'?></div> </div> <?php endforeach; ?> <?= $this->pagination ?> <?php $this->endblock(); ?>
    Ich müsste jetzt ja irgendwie das "<div class="description"><?= $item['description'] ?>" ersetzen, oder? Aber mit was? Irgendwie ist da die Struktur etwas anders als bei dem News Template.

    Hier noch zum Vergleich das default Template:

    PHP-Code:
    <?php $this->extend('block_unsearchable'); ?> <?php $this->block('content'); ?> <div class="rss_default_header"> <h1><a href="<?= $this->link ?>" target="_blank" rel="noopener"><?= $this->title ?></a></h1> <?php if ($this->image): ?> <a href="<?= $this->href ?>" title="<?= $this->alt ?>"><img src="<?= $this->src ?>" alt="<?= $this->alt ?>"></a> <?php endif; ?> <?php if ($this->description): ?> <div class="description"><?= $this->description ?></div> <?php endif; ?> </div> <?php foreach ($this->items as $item): ?> <div class="rss_default<?= $item['class'?>"> <h2><a href="<?= $item['link'?>" target="_blank" rel="noopener"><?= $item['title'?></a></h2> <div class="description"><?= $item['description'?></div> </div> <?php endforeach; ?> <?= $this->pagination ?> <?php $this->endblock(); ?>
    Gruß

  31. #31
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Originale Templates brauchst du hier nicht zu posten, da reicht ein Link auf Github
    https://github.com/contao/core/blob/..._default.html5
    https://github.com/contao/core/blob/...ems_only.html5

    Diese Templates sind nur für den RSS-Reader, mit welchem du RSS-Feeds auf deiner Website als HTML darstellen kannst. Da kannst du dann ->description modifizieren.

    Den Text in der XML-Datei zu modifizieren ist schwer, da es da kein Template und keinen Hook für gibt. Ich benutze dies sehr selten, habe aber mal was davon mitbekommen, dass da etwas eingerichtet werden soll, da auch andere Entwickler die Ausgabe der XML-Dateien steuern möchten. Suche mal auf Github im Ticketsystem danach.
    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

  32. #32
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.109
    Partner-ID
    10107

  33. #33
    Contao-Fan Avatar von designpilot
    Registriert seit
    16.06.2013.
    Ort
    9532 Rickenbach bei Wil
    Beiträge
    272
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von tblumrich Beitrag anzeigen
    Ich benutze für die News das was in diesem Thread gepostet wurde... funktioniert sehr gut.

    Gruß
    Thomas
    Fehler für den Link:
    Die Seite konnte nicht gefunden werden


    Gesendet von iPhone mit Tapatalk Pro

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •