Contao-Camp 2024
Ergebnis 1 bis 12 von 12

Thema: news_short kürzt Nachricht nicht ab?

  1. #1
    Contao-Nutzer
    Registriert seit
    05.01.2016.
    Beiträge
    93

    Standard news_short kürzt Nachricht nicht ab?

    Hallo,
    ich verwende das news_short Template, leider werden die Nachreichten trotzdem in voller Länge angezeigt. Was kann ich machen damit die Nachricht nur verkürzt angezeigt wird?

    Viele Grüße und lieben Dank im Vorraus

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

    Standard

    Das default news_short Template kürzt den Teaser nicht: https://github.com/contao/core/blob/...ws_short.html5
    Das musst du wenn dann selbst machen (mit \StringUtil::substr oder \StringUtil::substrHtml, je nachdem).

  3. #3
    Contao-Nutzer
    Registriert seit
    05.01.2016.
    Beiträge
    93

    Standard

    Danke aber sorry aber wie muss ich das wo machen

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

    Standard

    Du musst in deinem entsprechenden News template
    PHP-Code:
    <?= $this->teaser ?>
    ersetzen mit
    PHP-Code:
    <?= \StringUtil::substr($this->teaser100?>
    oder
    PHP-Code:
    <?= \StringUtil::substrHtml($this->teaser100?>
    wenn du die HTML tags erhalten möchtest. Die Zahl '100' ersetzt du natürlich mit deiner gewünschten Zahl.

  5. #5
    Contao-Nutzer
    Registriert seit
    05.01.2016.
    Beiträge
    93

    Standard

    Wow danke für die schnelle Hilfe!

  6. #6
    Contao-Nutzer
    Registriert seit
    05.01.2016.
    Beiträge
    93

    Standard

    Sorry wie mache ich das jetzt das es nach anklicken von reade more ... nicht mehr abgekürzt wird?

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

    Standard

    Du könntest dir den Teaser zwei mal ausgeben, einmal gekürzt, einmal ungekürzt, den ungekürzten per CSS verstecken und dann per JavaScript den gekürzten verstecken und den ungekürzten anzeigen lassen. (Eine von vielen Möglichkeiten.)

  8. #8
    Contao-Nutzer Avatar von marq
    Registriert seit
    20.03.2010.
    Ort
    Göttingen
    Beiträge
    195
    User beschenken
    Wunschliste

    Standard

    Oder du nimmst eine tuncate funktion um halt zu verhinden, das der string dannach bissel komsich aussieht..

    PHP-Code:
    public function truncate($text$length$options = array()) {
        
            
    $default = array(
                
    'ending' => '...''exact' => true'html' => true
            
    );
            
    $options array_merge($default$options);
            
    extract($options);

            if (
    $html) {
                if (
    mb_strlen(preg_replace('/<.*?>/'''$text)) <= $length) {
                    return 
    $text;
                }
                
    $totalLength mb_strlen(strip_tags($ending));
                
    $openTags = array();
                
    $truncate '';
                
    preg_match_all('/(<\/?([\w+]+)[^>]*>)?([^<>]*)/'$text$tagsPREG_SET_ORDER);
                foreach (
    $tags as $tag) {
                    if (!
    preg_match('/img|br|input|hr|area|base|basefont|col|frame|isindex|link|meta|param/s'$tag[2])) {
                        if (
    preg_match('/<[\w]+[^>]*>/s'$tag[0])) {
                            
    array_unshift($openTags$tag[2]);
                        } else if (
    preg_match('/<\/([\w]+)[^>]*>/s'$tag[0], $closeTag)) {
                            
    $pos array_search($closeTag[1], $openTags);
                            if (
    $pos !== false) {
                                
    array_splice($openTags$pos1);
                            }
                        }
                    }
                    
    $truncate .= $tag[1];
                    
    $contentLength mb_strlen(preg_replace('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i'' '$tag[3]));
                    if (
    $contentLength $totalLength $length) {
                        
    $left $length $totalLength;
                        
    $entitiesLength 0;
                        if (
    preg_match_all('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i'$tag[3], $entitiesPREG_OFFSET_CAPTURE)) {
                            foreach (
    $entities[0] as $entity) {
                                if (
    $entity[1] + $entitiesLength <= $left) {
                                    
    $left--;
                                    
    $entitiesLength += mb_strlen($entity[0]);
                                } else {
                                    break;
                                }
                            }
                        }
                        
    $truncate .= mb_substr($tag[3], $left $entitiesLength);
                        break;
                    } else {
                        
    $truncate .= $tag[3];
                        
    $totalLength += $contentLength;
                    }
                    if (
    $totalLength >= $length) {
                        break;
                    }
                }
            } else {
                if (
    mb_strlen($text) <= $length) {
                    return 
    $text;
                } else {
                    
    $truncate mb_substr($text0$length mb_strlen($ending));
                }
            }
            if (!
    $exact) {
                
    $spacepos mb_strrpos($truncate' ');
                if (isset(
    $spacepos)) {
                    if (
    $html) {
                        
    $bits mb_substr($truncate$spacepos);
                        
    preg_match_all('/<\/([a-z]+)>/'$bits$droppedTagsPREG_SET_ORDER);
                        if (!empty(
    $droppedTags)) {
                            foreach (
    $droppedTags as $closingTag) {
                                if (!
    in_array($closingTag[1], $openTags)) {
                                    
    array_unshift($openTags$closingTag[1]);
                                }
                            }
                        }
                    }
                    
    $truncate mb_substr($truncate0$spacepos);
                }
            }
            
    $truncate .= $ending;
            if (
    $html) {
                foreach (
    $openTags as $tag) {
                    
    $truncate .= '</'.$tag.'>';
                }
            }
            return 
    $truncate;
        } 

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

    Standard

    Äh, das macht doch \StringUtil::substrHtml schon

  10. #10
    Contao-Nutzer
    Registriert seit
    05.01.2016.
    Beiträge
    93

    Standard

    Das klingt irgendwie kompliziert? Wie kann ich denn aus "read more" "mehr lesen" machen?

  11. #11
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.076
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hast du deinen Browser auf Englisch gestellt bei den bevorzugten Sprachen? Normalerweise sollte da "Weiterlesen..." kommen.
    Wie dem auch sei, die Bezeichnung kannst du ändern, indem du in der system/config/langconfig.php unterhalb des Kommentars einträgst:

    PHP-Code:
    $GLOBALS['TL_LANG']['MSC']['more'] = 'mehr lesen'
    Oder, wenn du es nur für eine Sprache ändern willst.

    PHP-Code:
    if ($GLOBALS['TL_LANGUAGE'] == 'de')
    {
        
    $GLOBALS['TL_LANG']['MSC']['more'] = 'mehr lesen';


  12. #12
    Contao-Nutzer
    Registriert seit
    05.01.2016.
    Beiträge
    93

    Standard

    Vielen Dank!

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
  •