Einleitungstextlimit für Joomla 3 - auto readmore
Auf Seiten, die nur den Einleitungstext und das Einleitungsbild von Beiträgen anzeigen sollen (Menueintragstyp: Haupteinträge, Kategorieblog), ist oft eine konsistente Darstellung mit gleicher Textlänge erwünscht. Den "Weiterlesen Tag" im Beitrag immer manuell an gleiche Stelle zu setzen, ist unpraktisch und fehleranfällig.
Das Joomla Modul "Beiträge - Kategorie" bietet im Tab "Anzeige" die Option das Einleitungstextlimit festzulegen. Dadurch wird der Beitragstext nach gewählter Zeichen Anzahl abgeschitten (truncate) und der "Weiterlesen" Button automatisch gesetzt.
In den Menueintragstypen für Blogansicht fehlt diese praktische Möglichkeit, kann aber mit diesen Overrides nachgerüstet werden:
Neuer Menueintragstyp per Override
Ein Override wird normalerweise verwendet um die vorhandene Ansicht des Menueintragstyps zu ersetzen. Wenn ein zusätzlicher Menueintragstyp erstellt werden soll, geht man so vor:
Neuer Eintragstyp aus Beiträge -> Haupteinträge
Alle vier Dateien aus
components/com_content/views/featured/tmpl
werden kopiert nach
templates/dein-Template/html/com_content/featured
und dann umbenannt:
default.php -> featured-autoreadmore.php
default.xml -> featured-autoreadmore.xml
default_item.php -> featured-autoreadmore_item.php
default_links.php -> featured-autoreadmore_links.php
Änderungen in featured-autoreadmore.xml
In Zeile 3:
ersetzen mit:
<layout title="Haupteinträge Auto Read More" option="COM_CONTENT_FEATURED_VIEW_DEFAULT_OPTION">
Der layout title kann auch ein neuer language_tag sein, dann die Sprachdateien ergänzen.
Neues Optionsfeld
In Zeile 14 beginnt das fieldset name="advanced", irgendwo im Set diesen Tag einfügen:
Im Backend sieht das jetzt so aus:
Optionsfeld:
Änderungen in featured-autoreadmore_item.php
In ca. Zeile 71 finden wir den introtext:
Direkt davor diese php Anweisung zum Textkürzen einfügen:
$charcount = $params->get('maxtext', '500');
$introtext = strip_tags($this->item->introtext);
if(strlen($introtext) > $charcount) {
$introtext = $introtext." ";
$introtext = substr($introtext,0,$charcount);
$introtext = substr($introtext,0,strrpos($introtext,' '));
if($charcount != 0) {
$introtext = $introtext." [...]";
}
}
echo $introtext; ?>
Zusätzlich ist es möglich, den readmore link auf das Einleitungsbild oder den string [...] zu legen
Eine Anleitung für den Menueintragstyp Beiträge Kategorieblog in Englisch: cmsenergizer.com
Hier wird zusätzlich eine Methode zum Einpassen der Einleitungsbilder vorgestellt.