Joomla
Joomla Performance bei Seiten mit hohem Besucheraufkommen(traffic)
Der Erfolg unserer Webseiten in den letzten Jahren machte wieder eine Bilanz in Sachen Ressourcenverbrauch nötig,
da wir die Artikelkosten, Kosten für Server, Wartung usw. im Budget der einzelnen Domains berücksichtigt müssen.
Da fiel leider negativ auf, dass die Projekte, die mit Joomla betrieben werden, am meisten Kapazität beanspruchen.
Da langsam auch die Performance nachlässt, könnten wir entweder wieder einmal die Server upgraden oder
billiger: die Projekte mit
Joomla aufräumen und optimieren
Joomla 3.5
Am 9. März wurde Joomla 3.5 stable veröffentlicht.
Wie schon gewohnt ist das "one click" update über das backend verfügbar, doch Vorsicht!
Ich habe die 3.5 vorerst nur auf einer Testdomain installiert um die ersten Bugs und Sicherheitslücken abzuwarten:-)
Canonical Bug wieder da (bei Nutzung des internen SEF-plugins)update auf Joomla 3.5.1 behebt das Problem wieder
Erstmals in Joomla 3.0 eingeführt, funktioniert das Canonical tag in Joomla 3.5 noch immer nicht.
Grundsätzlich sollte das rel="canonical"
eindeutige urls angeben,
wenn z.B. ein Artikel über verschiedene URLs erreichbar ist.(Ein "Problem" mit den Artikel IDs,
das eigentlich keines ist - das bedeutet, um einen Artikel in Joomla aufzurufen, genügt es die ID in der URL anzugeben,
der Rest der URL kann aus sinnlosen Zeichen bestehen.)Google ist sich der Eigenheit bewusst und rankt die "richtige" URL.
Duplicate Content (innerhalb einer Domain) ist auch nur ein Mythos der
SEO-Steinzeit,
den man auf vielen "Spezialisten" Seiten findet.
Beispiel des Canonical-Problems in Joomla:
domain.org/kategorie/1-irgendein-titel
ist auch über
domain.org/irgendwas/1
oder etwa
domain.org/1
erreichbar.
Ein canonical-plugin sollte nun im code jeder dieser "falschen" urls
<link rel="canonical" href="http://domain.org/kategorie/1-irgendein-titel" />
einfügen.
macht das Joomla SEF-plugin aber nicht, bzw. macht es falsch
Lösung
Es gibt 3 Lösungsmöglichkeit, die mir bekannt sind:
- Core Hack - schlecht, da bei jedem update überschrieben
- Override in der index.php des templates - möglich aber sinnlose PHP Abfrage bei jedem Seitenaufbau
- Besser:
- Joomla backend: Plugins: System - SEF/Site Domain eintragen
- Obwohl der tooltip was anderes sagt:
- ("If your site can be accessed through more than one domain enter the canonical one here."), sollte hier die Domain, auf der die Joomla Seite liegt, angegeben werden.
- Canonical wird dann nicht verwendet, und sollte es irgendwann "richtig" funktionieren, einfach das Feld leer lassen!

Filter löscht Scripte in Joomla
Aus Sicherheitsgründen filtert Joomla jeglichen möglichen Code, um Schaden bzw. Hacks zu vermeiden.
Das ist gut so und sollte nur für vertrauenswürdige Administratoren/Autoren geändert werden!
Möchte man aber eigene Scripte einbinden, muss man für den entsprechenden Benutzer die Filterung von Code aufheben:
Die folgenden Punkte gelten für PHP wie Javascript gleichermaßen, wobei für Javascript kein zusätzliches Plugin mehr nötig ist.
1) Filter zum einfügen von PHP im Joomla Editor deaktivieren (JCE Editor)

Natürlich muss man aufpassen, dass nur ausgewählte Benutzer irgendwelchen Code in die Seite einfügen können!
Dafür hat man im JCE verschiedene Profile die den jeweiligen Benutzergruppen zugewiesen werden können.
denn nicht jeder Autor, oder gar registrierte User soll Skripte einfügen dürfen!
2) Filter zum einfügen von PHP in Joomla selbst deaktivieren

müssen auch die Filtereinstellungen in Joomla selbst angepasst werden.
Globale Einstellungen von Joomla /Text Filter - hier können seitens der Joomla Benutzergruppensteuerung noch Filter betreffend Code gesetzt werden. (Erklärung zu den Filtern direkt darunter im Backend)
Nun sollte dem Einbinden von Code oder Skripten in Joomla nichts mehr im Wege stehen:-)
Beim JCE muss man erst "toggle editor" klicken, um in die Codeansicht zu wechseln, dann erst funktioniert der betreffende Code im Frontend.
Funktioniert in der aktuellen Joomla Version nurmehr mit Javascript/HTML!
Um PHP Code auszuführen, wird ein Plugin wie Sourcerer oder DirectPHP benötigt, das gilt für Artikel wie auch Module!
JavaScripte in Joomla einbinden
Sind alle Filter im Editor bzw Joomla Benutzermanagement deaktiviert (wie im Absatz darüber beschrieben), kann man JavaScripte an beliebiger Stelle einbinden.
Php in Joomla einbinden
Da Joomla ohnehin PHP verwendet, liegt es nahe, eigene PHP-Sripts oder Code-snippets im Content zu verwenden.
Aus Sicherheitsgründen ist in Joomla aber standardmäßig das einfügen von Code/Skripts deaktiviert.
In diesem Artikel fasse ich die Ergebnisse meiner Versuche und der verwendeten Erweiterungen kurz zusammen.
Oft will man nicht für jede Funktion ein eigenes Plugin bzw. eine Extension installieren, nur um ein paar Zeilen PHP-code zu realisieren.
Da Jommla sowieso PHP verwendet, wieso also nicht gleich ein gewünschtes Codeschnipsel direkt in Artikeln verwenden?
Da sich hierbei unzählige Sicherheitslücken auftun können, ist die Verwendung/Ausführung von Skriptsprachen unter Joomla natürlich stark eingeschränkt.
Skripte aus Sicherheitsgründen deaktiviert "Joomla Skript verschwindet", "Skript verschwindet beim Speichern"
Erste Hürde beim Einfügen von Skripts, meist schon beim AdSense Code usw. sind die Editoren, die man in Joomla verwendet.
Je nach verwendetem Editor (Tiny, JCE,...) sollte man zuerst dessen Optionen/Einstellungen überprüfen, ob hier Filter gesetzt sind
oder Skriptsprachen komplett deaktiviert wurden.
Ich verwende am liebsten den JCE, hier kann man verschiedene Profile mit unterschiedlichen Einschränkungen für die diversen Benutzer(gruppen) anlegen:
Der erste Schritt, um eigene Scripte, PHP Code in Jommla einzubinden
Php Code in content/Artikel einbinden
Möchte man einfach ein Codeschnipsel/ein paar Zeilen code in einen Artikel in Joomla einbinden bieten sich einige Extensions/Plugins an.
Zum Test verwende ich hier "DirectPHP_v2.5" (mittlerweile ist Version 3.0 für Joomla 3 verfügbar) um als einfaches Beispiel die Serverzeit automatisch von PHP anzeigen zu lassen. (Alternativ gäbe es z.B. noch "Sourcerer")
update 26.11.2016
Sourcerer in der Version 6.3.6 wurde kürzlich aktualisiert und steht für Joomla 3.6.x zur Verfügung, andere Plugins teste ich nicht mehr, da sie schon lange nicht mehr aktualisiert wurden.
Hier findet ihr das Sourcerer Plugin
Egal ob Artikel oder Modul (custom htm), man bindet einfach den gewünschten Code umgeben von
{source}{/source}
ein.
(die Source-tags dienen dem Sourcerer-Plugin zur Erkennung des Codes, der eingebunden und ausgeführt werden soll)
vollständiges Codebeispiel:
{source}
<?php
setlocale (LC_TIME, "de_DE");
echo strftime("%c");
?>
{/source}
Als Ergebnis liefert die Funktion strftime die aktuelle Serverzeit.
So 07 Mär 2021 17:22:33 UTC
In diesem Beispiel hab ich nur vorher mit "setlocale" die Lokalisierung auf Deutschland gestellt.
Zum Nachlesen:php-Grundlagen.
Php Code in einem Modul einbinden
Um php-Code in ein Modul einzubinden, geht man gleich vor.
Hier bietet Joomla aber noch eine Möglichkeit, zwar mit dem "wrapper" Modul.
Mittels wrapper bindet man eine externe Seite oder eine eigene Datei mit include ein.
Wer schon mit php include gearbeitet hat, bzw ausgelagerte Skripte verwenden möchte, wird diese Methode wahrscheinlich vorziehen:
Man erzeugt ein neues Modul "wrapper", dort gibt man die URL oder den Pfad der Datei an, die man einbinden möchte.
Ich habe hier als Beispiel die Datei "includetest.php" mit dem php-Code eingebunden.

bietet sich das wrapper Modul an
Das Wrapper Modul ist dafür gedacht "externe" Webseiten, Frames
includes usw. einzubinden
und eignet sich daher optimal für die Einbindung von PHP in Joomla!
Man legt einfach eine Datei mit dem Script irgendwo am eigenen Server ab, meist möchte man aber ohnehin externe Quellen einbinden (Werbung wie AdSense,...)
und daher gibt man im Wrapper Modul einfach die URL des Skriptes an.