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 - 13: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 - 13: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 - 14: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 - 14: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 - 22: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

  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • Rolle erstellen nicht zu finden
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
Weiter

Neue Kommentare

  • Verwende doch das Tag dafür,
    vor 6 Tagen 12 Stunden
  • Guckst du hier: step by step
    vor 6 Tagen 2 Stunden
  • Guckst du hier: step by step
    vor 6 Tagen 2 Stunden
  • Ich habe ja keine Angst vor
    vor 2 Wochen 1 Tag
  • Ist grundsätzlichmachbar – aber nichts für „einfach mal schnell“
    vor 2 Wochen 3 Tagen
  • Vielen Dank erst einmal, aber
    vor 2 Wochen 5 Tagen
  • Du hast die "Trusted host
    vor 2 Wochen 5 Tagen
  • Bitte genauer den aktuellen Lösungs-Ansatz beschreiben
    vor 4 Wochen 4 Tagen
  • Git und rsync sind die wichtigsten Werkzeuge
    vor 5 Wochen 1 Tag
  • Arrrrg. Nix Tabelle :-D /*
    vor 9 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250284
Registrierte User: 20499

Neue User:

  • Inga GuAph
  • Robertolix
  • DavidBit

» Alle User anzeigen

User nach Punkten sortiert:
wla9464
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 29 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