Joomla: Codes. Erweiterungen, Wissenswertes (Schnipsel)
Wenn Komponente com_xy, spezifischen robots-Tag setzen
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...
Template-Stil für Joomla-Offline-Modus umswitchen
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.
Joomla: Backendtemplate Atum, Hintergrundfarbe 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.
Benutzer sollen Accountdaten nicht ändern und mehr
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.
Fußzeile im Frontend, z.B. Copyright- und Kontakt-Infos
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...
Scroll-to-top-Button in Backend und/oder Frontend
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.
Modul-Aufbau neu ab Joomla 4.3. Rudimentäres Beispiel.
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?
Joomla 4+: Erleichterte Datenbankabfrage für "WHERE IN"
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.
Joomla-Logger einrichten. Logs in Datei schreiben.
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.
Joomla-Template-Editor. Neuen Ordner und Datei anlegen.
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.
Schnipsel: Beiträge-Accordion mit Joomla-4-Hausmitteln
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".
JFactory::getDbo()-Ersatz ab Joomla 4
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:
Joomla-Registrierungs-Formular. Felder umsortieren.
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!
Ein "mod_custom" ohne Editor und Textfilterung
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.
Joomla 4: Einleitungs-, Beitragsbild. Komische Pfade.
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?
modChrome-Nerverl. Modulstile sind ab Joomla 4 JLayouts
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.
Joomla-Modul-Override für Einbinden beliebiger Codes
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.
Joomla-Registry-Objekte "mergen". Objekt wird Array?
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-Modul: Auch in Joomla 3 Namespacing verwenden
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.
Joomla: JHtml- vs. HTMLHelper-Methoden. Unterschiede?!?
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.


















