Webseiten und Zubehör Programmierung Umsetzung Pflege Backups Betreuung Joomla!®-Spezialist
Konfigurationsfelder des Joomla-Plugins "System - Robots Tag On Url"

In einem Forum kam der Wunsch auf, bei einer bestimmten Komponente automatisch einen robots-Tag im <HEAD> der Seite einsetzen zu lassen. In diesem Fall, um Suchmaschinen mit einem noindex,nofollow von Unterseiten auszuschließen, die zu einer Flut von redundanten Seiten im Suchindex der Suchmaschine führten. Da diese Anforderung umzusetzen simpel ist, dies Plugin, was genau das macht und kein Fitzelchen mehr; wie fast...

Offlinemodus der Seite in Joomla5-Konfiguration aktivieren und anpassen

Ist im Joomla-Backend der Wartungsmodus ("Website offline") aktiv, sehen Besucher die so genannte Offline-Seite. Sie hat eine Anmeldmaske. Man kann ein eigenes Bild anzeigen lassen, sowie einen Text, was man in der Joomla-Konfiguration anpassen kann. Bei manchen Templates ist die Offline-Seite "etwas schräg" oder muss "blöd extra" konfiguriert werden. Leiten wir sie doch z.B. auf das Cassiopeia-Template um.

Mal so richtig roter Atum-Header?

Von fast allen Joomla-Seiten, die ich in der Mache habe, erstelle ich im Laufe des Workouts mehrere Installationen. Beispielsweise ein Demo für Kunden, eine Arbeitsseite für mich, eine 1:1-Kopie der Originalseite, eine "Spielwiese" für Kunden usw. usf. Wenn ich nun zwischen den Seiten wechsele, habe ich gerne den Kopfbereich unterschiedlich deutlich gefärbt, weil man gerne mal durcheinander kommt.

Fehlermeldung bei nicht erlaubtem Speichern von durch Plugin blockierten Nutzern

Zwar kann man in Joomla in den globalen Benutzeroptionen das Ändern des Benutzernamens unterbinden, aber nicht das Ändern des Kennworts. Nachdem die Frage regelmäßig in Foren auftaucht, mir viele Lösungen viel zu aufwendig oder "radikal" erscheinen, entstand dieses Plugin, das mittlerweile etwas mehr kann, aber nicht zu viel.

Das Modul mod_footerghsvs auf einer Joomla-Seite im Einsatz

Man kann streiten, ob dieses Modul zum Anzeigen einer Fußzeile im Template überhaupt nötig ist, weil letztlich kann man ja auch einfach so eine Copyright-Zeile in einem Modul vom Typ "Eigenes Modul" eingeben. Mir egal. Ich verwende es seit Jahren auf diversen Seiten; nicht zuletzt, weil ich mir schon passendes CSS zusammengebastelt habe, das ich meist wiederverwenden kann. Schließlich ist man ja auch ein...

Das Plugin SlScrolltotopGhsvs im Joomla Backend im Einsatz

In einem Joomla-Forum kam die Frage auf, ob es denn für Joomla 4 eine Erweiterung gibt, die im Backend(!) einen "Nach-oben-scrollen"-Knopf dem Atum-Template hinzufügt. Weil vermutlich nein, habe ich dieses Plugin aufgesetzt, das im Original nur für Joomla 3 verfügbar ist. Für mich war es eher als Übung gedacht; für die neue Plugin-Struktur, die man ab Joomla 4.3 verwenden sollte.

Man muss ja nicht! Aber man kann Module ab Joomla 4.3 mit einer "moderneren" Grundstruktur aufsetzen. So fallen seit vielen Jahren übliche Dateien raus und neue kommen dazu; inklusive neuen Ordnern. Als Autodidaktdummdudler bin ich gar nicht in der Lage, alles wissenschaftlich korrekt zu beschreiben. Aber vielleicht ja gar nicht schlecht, wenn ich mich in meinem kurzen Überblick auf Wesentliches beschränke?

Bei SQL-Abfragen, bei denen man mehrere Werte, z.B. via ids, aus einer Tabelle gleichzeitig abfragen will, kann man Konstrukte wie WHERE `id` IN (18,12,33,4) verwenden. Joomla 3 und 4 haben dafür eine Datenbank-Methode where() dabei. Mit J!4 kam eine weitere Methode whereIn() dazu, die sowohl das Erstellen der Queries erleichtert als auch die Sicherheit erhöht durch automatische prepared Statements.

In der Joomla-Konfiguration findet sich ein Feld "Protokollverzeichnis". Im Normalfall wurde dieser Ordnerpfad durch ein Wunderwerk bereits gefüllt. Selten schaut der "normale" Benutzer in das Verzeichnis mal rein. Man findet darin gar nichts oder eine bis mehrere PHP-Dateien, so genannte Log-Dateien, die das Joomla oder Erweiterungen befüllen; mit unterschiedlichsten Infos, Warnungen, Fehlern und mehr.

Die wichtigsten Dateien und Ordner eines joomla-konformen Templates können im so genannten Template-Editor im Backend geändert werden. Es lassen sich auch neue Verzeichnisse und Files anlegen. Das ist nicht ganz so intuitiv zu bewerkstelligen wie man es "so gewöhnt ist". Nach jedem Klick, Speichern, Löschen oder… sollte man sich versichern, dass man noch dort ist, wo man zuvor war, z.B. im Wunsch-Ordner.

Einige Accordion-Module, die Beiträge anzeigen, haben sich mit dem Erscheinen von Joomla 4 "ausgelebt". Sie verwenden veralteten PHP-Code, Mootools, unnötigerweise JQuery… Wegen einer Anfrage so eine schon mehrfach wiederbelebte Leiche für Joomla 4 zu überarbeiten, habe ich am Ende nur einen Override für das joomla-eigene Modul "Beiträge - Kategorie" gebraucht, um den Einsatzzweck "nachzubauen".

© Jutta M. Jenning/ www.mjpics.de

In Joomla 5 werden die Zeilen $db = Factory::getDbo(); bzw. $db = JFactory::getDbo(); für das Initialisieren eines Datenbank-Objekts (= Aufbau einer Datenbankverbindung) nicht mehr funktionieren. Deshalb werden sie schrittweise aus dem Joomla-4-Core entfernt; auch, um zahlreiche Deprecated-Meldungen (= Veraltet) aus den Joomla-Logs rauszubekommen. Die empfohlene, neue Schreibweisen-Variante geht jetzt so:

Das Joomla-Registrierungsformular zeigt die Felder (Name, Benutzername usw.) immer in einer festen Reihenfolge an. Hat man zusätzlich eigene Felder definiert, erscheinen die bei der Standardausgabe immer unten drunter. Mit einem schnellen Code-Schnipsel-Beispiel zeige ich, wie man eine andere Reihenfolge festlegen kann bzw. Joomla-Felder und eigene mischen. Kein Silbertablett-Service!

Manchmal brauche ich keinen WYSIWYG-Editor und will nur einen beliebigen Code-Schnipsel in einem Joomla-Frontend-Modul ausgeben, der ohne zusätzliches HTML-Gedöns garantiert 1:1 ausgegeben wird. Und noch öfter will ich gar nichts eingeben und nur mit schnell hingehauenen Modul-Overrides arbeiten. Dafür habe ich mir das Modul MOD_CUSTOM_BLANKGHSVS ("Benutzerdefiniertes" Modul ohne Editor) geschrieben.

Mein Bild-Optimierer-Plugin meckert unter Joomla 4 plötzlich rum, dass Einleitungsbild (image_intro) und so genanntes "Komplettes Beitragsbild" (image_fulltext) nicht existieren, wenn ich sie mit dem neuen Joomla-Medienmanager in einem Beitrag auswähle. Schuld sind "komische" Anhängsel an die Bildpfade, die Joomla jetzt automatisch mitspeichert und die in meinem Fall störend sind. Wie man sie los wird?

Bisher hat man eigene Modulstile ("Modul-Chromes") in der unhandlichen und ggf. konfliktbeladenen Templatedatei html/modules.php definiert. Seit Joomla 4 wird für jeden Stil ein eigenes Layout im Ordner html/layouts/chromes/ angelegt. Die verwenden die altbekannten JLayoutHelper-Funktionalitäten. Klingt vielleicht komplizierter als es final ist. Sein Joomla-3-Template kann man auch schon vorbereiten.

Man braucht nicht unbedingt eine zusätzliche Erweiterung, um in einen Joomla-Beitrag eigenen, dynamischen PHP-Code auszugeben, vielleicht aus der Datenbank. Das geht auch mit Joomla-Hausmitteln. Mit Modul-Overrides plus Joomla-eigenem Plugin loadmodule. Der Code kann Joomla-Klassen und -Methoden ohne weiteres Zutun nutzen und der Beitrags-Editor bleibt "clean"; ohne unübersichtliche Code-Schnipsel darin.

Ein Code-Schnipsel zwischendrin. Registry-Objekte sind eine feine Joomla-Sache und können viele eigene Zeilen Code einsparen. Wie bei "normalen" PHP-Objekten kan man key-value-Paare reintun und mehrere Registry-Objekte ähnlich dem bekannten array_merge in ein einzelnes zusammenfassen. Ist einer der values allerdings ein stdClass Object, wird daraus beim unachtsamen mergen unerwünscht ein array.

Joomla 4 baut auf Namespaces beim Finden seiner Klassen bzw. Dateien sowie auf Importe/Verfügbarmachung derselben mit use-Zeilen. Eigene Erweiterungen können Namensräume automatisiert registrieren lassen. An einem kurzen Beispiel für eine Erweiterung möchte ich zeigen wie ein Modul aufgebaut sein kann, um es sowohl in Version 3 als auch 4 "genamespacet" zu verwenden. Es soll für beide kompatibel sein.

JHtml-Helper-Methoden haben Tradition in Joomla. Sie ersparen es dem Programmierer oftmals viele Zeilen Code immer wieder selbst einsetzen zu müssen, nötige Klassen zu laden und so Kram. Wenn man Joomla 3 nach dem Konstrukt JHtml::_( durchsucht, finden sich zahlreiche Anwendungs-Beispiele. In Joomla 4 jedoch nicht mehr. Da sind es jetzt Stellen mit HTMLHelper::_(. Nicht nur eine Namensänderung.