Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

Teaser nach bestimmter Anzahl an WÖRTERN abschneiden

Eingetragen von drupaler3000 (78)
am 16.08.2008 - 12:13 Uhr in
  • Allgemeines zu Drupal
  • Drupal 5.x oder neuer

Drupal erstellt den Teaser automatisch bis zur maximal eingestellten Länge.
Bei mir ist es aber leider so, dass wenn ein User 2 aufeinanderfolgende Absätze erstellt, und der zweite Absatz ist zu lang um noch reinzupassen, nur der erste Absatz in den Teaser kommt.

Beispiel:

Full Node:

Curabitur arcu. Phasellus faucibus vulputate orci.
Donec blandit tempor dolor. Nullam felis lacus, hendrerit at, elementum at, interdum et, ante. Morbi aliquam pellentesque urna. Aliquam quis velit sed tellus eleifend tristique. Nullam tincidunt pede vel massa. Vivamus purus sapien, semper a, feugiat vitae, lacinia ut, nibh. Aliquam eu leo. Aliquam lacinia scelerisque purus. Suspendisse potenti. Vestibulum in eros. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aliquam facilisis eleifend erat. Vivamus auctor felis ullamcorper orci sollicitudin egestas. Fusce faucibus lacus eget nulla. Duis dui.

Teaser:

Curabitur arcu. Phasellus faucibus vulputate orci.

Wie ihr seht ergibt das einen unschönen Teaser.

Gibt es eine Möglichkeit die Teaser so zu gestalten, dass eine bestimmte anzahl an Wörtern mit in den Teaser kommen, und danach dann das bekannte ... ? Im Moment kann ich in den Beitragseinsellungen lediglich zwischen 200 Zeichen und 400 Zeichen wählen...

Man könnte natürlich manuell den Teaser mit <!--Break--> und so weiter verändern. Aber es würde viel Arbeit erfordern jeden einzelnen Node separat zu ändern. Außerdem würde der User gleich nach dem Erstellen des Nodes oft einen unschönen Teaser sehen...

P.S.: Muss man die Anzahl der Zeichen zählen und danach als letzte Zeichen das ... hinzufügen?

‹ Drupal lässt sich nicht installieren Fehlermeldung /is/htdocs/user_tmp/xxxxxx.js (Erledigt) ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

mit contemplate und einem kleinen Eingriff in die template.php

Eingetragen von jonas28@drupal.org (96)
am 16.08.2008 - 12:26 Uhr

Den folgenden Code habe ich der Datei template.php hinzugefügt.

/**
* TEASER optimieren Start
*/
function srtstr($str, $length, $id) {
    $str = str_replace("<br />", "", $str); // Vorhandene Zeilenumbrüche löschen
    $str = str_replace("<li>", "&bull;&nbsp;", $str); // Listen Elemente in Listenpunkte umwandeln
    $str = strip_tags($str); // HTML und PHP Elemente aus String entfernen
    $str = nl2br($str); // Normale Zeilenumbrüche wieder in <br />'s umwandeln
    $str = str_replace("<br />", "<br/>", $str); // <br /> in <br/> ändern, um vorläufig Leerzeichen zu entfernen
    $str = explode(" ", $str); // Alle vorhandenen Wörter im String als Array machen
    if($length >= (count($str))-4) {
// Wenn die Länge der angegebenen Wörter größer ist, als die Wörter Anzahl minus 4, dann kompletten Text anzeigen
        for($i = 0; $i < count($str); $i++) {
            $str = str_replace("<br/>", "<br />", $str); // <br/>'s wieder in normale <br />'s umwandeln
            echo $str[$i]." "; // Ausgabe aller Wörter mit einem Leerzeichen dahinter
        }
    } else {
// Wenn die Länge der angegebenen Wörter nicht größer ist, als die Wörter Anzahl minus 4, dann gekürzten Text anzeigen
        for($j = 0; $j < $length; $j++) {
            $str = str_replace("<br/>", "<br />", $str); // <br/>'s wieder in normale <br />'s umwandeln
            echo $str[$j]." "; // Ausgabe aller Wörter mit einem Leerzeichen dahinter
        }
        echo ' &hellip; <a href="'.$path.'">[Weiter]</a>'; // Ausgabe des Links zum gesamten Artikel
    }
}

/**
* TEASER optimieren Ende
*/

Über das Modul Contemple gestalte ich die Teaser der jeweiligen Inhaltstypen.

Beispiel:
Ich setze im Feld "Affect teaser output" des Inhaltstypes "blogbweitrag" den folgenden Code ein:
In diesem Beispiel werden die ersten 30 Worte aus dem Body für den Teaser verwendet.

<?php srtstr($node->content['body']['#value'], 30, $node->nid);
?>

So wird auf die obengenannte Funktion in der Template.php zurückgegriffen.

Gruß Jonas

  • Anmelden oder Registrieren um Kommentare zu schreiben

Klasse! Jedoch funktionieren

Eingetragen von drupaler3000 (78)
am 16.08.2008 - 13:17 Uhr

Klasse! Jedoch funktionieren dadurch auch keine Eingabeformate mehr, wie BBCode usw. Kann man das noch ändern? Wenn ich die Zeile

$str = strip_tags($str); // HTML und PHP Elemente aus String entfernen

auskommentiere macht der text komische Zeilenabstände...

In den Teasern hätte ich es gerne schon genau so, aber im Full Node View funktioniert der BBCode dann auch nicht mehr...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das

Eingetragen von Tobias Bähr (4019)
am 16.08.2008 - 13:28 Uhr

Das http://drupal.org/project/ed_readmore macht dein ... oder mehr.

----------------------------------------
Alle Angaben ohne Gewähr!!:D
http://www.tobiasbaehr.de/

  • Anmelden oder Registrieren um Kommentare zu schreiben

drupaler3000

Eingetragen von drupaler3000 (78)
am 19.08.2008 - 21:12 Uhr
drupaler3000 schrieb

Klasse! Jedoch funktionieren dadurch auch keine Eingabeformate mehr, wie BBCode usw. Kann man das noch ändern? Wenn ich die Zeile

$str = strip_tags($str); // HTML und PHP Elemente aus String entfernen

auskommentiere macht der text komische Zeilenabstände...

In den Teasern hätte ich es gerne schon genau so, aber im Full Node View funktioniert der BBCode dann auch nicht mehr...

Ich nehme es wieder zurück! Irgendwie funktioniert jetzt wieder alles! ich weiß nicht warum, aber nachdem ich jeden einzelnen node noch mal bearbeitet(ohne änderungen) und neu abgespeichert habe, sind die formate wieder da!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 6 Tagen
  • Hey danke
    vor 2 Wochen 10 Stunden
  • Update: jetzt gibt's ein
    vor 2 Wochen 1 Tag
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 5 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 2 Tagen
  • In der entsprechenden View
    vor 3 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 2 Tagen
  • gelöst
    vor 5 Wochen 6 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 10 Stunden

Statistik

Beiträge im Forum: 250233
Registrierte User: 20451

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 28 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association