Webseiten und ZubehörProgrammierung UmsetzungPflege Backups BetreuungJoomla-Spezialist

JoomlaSchnipsel

Readmore nur, wenn nötig
Readmore nur, wenn nötig

Das joomlaeigene Modul mod_articles_category zeigt einen Weiterlesenlink an, auch, wenn schon aller Text im Modul selbst angezeigt wurde und eine Ansicht des kompletten Beitrags eigentlich gar nicht mehr nötig ist. Unter bestimmten Voraussetzungen kann man aber einen simplen Override verwenden, der Weiterlesen nur anzeigt, falls nötig. Am besten gleich als so genanntes alternatives Layout. 

Vorüberlegungen - Macht der Override Sinn für mich?

Das Modul nimmt den so genannten Introtext wie im Beitrag mit Weiterlesen-Marker markiert bzw. den gesamten Text, wenn im Editor kein solcher Marker eingesetzt wurde. Danach entfernt es daraus viele der HTML-Tags wie z.B. Absätze, aber auch Bilder.

So weit, so gut, aber das Modul hat diesbezüglich seit jeher eine unangenehme Eigenschaft. Dieses Entfernen geschieht an einer Stelle, auf die wir in einem erlaubten, joomlakonformen Override keinen Einfluss haben. Diese Daten, Bilder, Formatierungen etc. sind weg und wir können im Override nicht mehr ohne größeren Programmieraufwand ermitteln, ob denn da mal ein Bild im Introtext drin war oder besondere Formatierungen, die den Weiterlesen-Link sinnvoll machen, obwohl der gesamte Textinhalt, halt unformatiert, schon angezeigt wurde.

Kurz: Dieser Override, der den Weiterlesen-Link ggf. versteckt, ist dann geeignet, wenn Ihre Intro-Texte keine Bilder u.ä. enthalten bzw. dann, wenn es egal ist, ob man den gesamten Beitrag mit Bild über das Modul öffnen kann.

Der Override als alternatives Layout

Kopieren Sie die Datei /modules/mod_articles_category/tmpl/default.php unter neuem Namen. Ich nehme mal für diese Anleitung onlyReadmoreIfNeeded.php.

Diese Datei jetzt im Override-Ordner Ihres Joomla-Templates ablegen, also in /templates/NAMEIHRESTEMPLATES/html/mod_articles_category/. Ggf. müssen Sie diesen Ordner zuvor neu anlegen (NAMEIHRESTEMPLATES heißt bei Ihnen natürlich anders).

Jetzt suchen Sie im Code nach den zwei Stellen (derzeit Zeilen 50 und 116) mit

<?php if ($params->get('show_introtext')) : ?>

und ergänzen diese um eine weitere Zeile bzw. tauschen aus gegen

<?php if ($params->get('show_introtext')) :
  $needReadmore = ($item->readmore || strcmp($item->displayIntrotext, $item->introtext) !== 0); ?>

Jeweils wenige Zeilen darunter (derzeit Zeilen 56 und 124) sehen sie

<?php if ($params->get('show_introtext')) : ?>

und erweitern diese Zeilen bzw. tauschen sie aus gegen

<?php if ($params->get('show_readmore') && !empty($needReadmore)) : ?>

Jetzt noch im Modul als alternatives Layout Ihren neuen Override auswählen

mod articles category override onlyReadmoreIfNeeded
mod articles category override onlyReadmoreIfNeeded

Wann wirkt der Override

  1. Der Beitrag enthält keinen Readmore-Marker. Selbst, wenn nach dem Marker nichts steht (in Wirklichkeit steht da immer ein leerer Absatz), interpretiert Joomla das so, als "gäbe es noch was".
  2. Der angezeigte Text ist nach oben beschriebenen Kürzungsaktionen alles, was im Introtext zu finden war.

Ist schon spät. Weiß nicht, wie besser formulieren...

PHP Joomla Frontend Override Modul