Joomla

Kategorie: Joomla

3. September 2016 // Ingenious fools

Murphy sagt in Gesetz 11:

It is impossible to make something foolproof because fools are ingenious (Es ist unmöglich, etwas narrensicher zu machen, denn Narren sind erfinderisch).

Mit Content-Management Systemen (CMS) ist das so eine Sache; theoretisch ein wunderbarer Gedanke, dass verschiedene Leute von überall in der Welt Texte ändern und Inhalte einpflegen können.

In der Praxis sieht das leider ganz anders aus, wie ich in den letzten Monaten (mal wieder) feststellen musste.

Unwissenheit

Denn um sich innerhalb eines CMS zu bewegen, Texte zu ändern und Bilder einzusetzen setzt voraus, dass man zumindest Grundkenntnisse in Textverarbeitung, Bildbearbeitung und der Bedienung des CMS hat bzw. sich aneignet und dazulernen möchte.

Keiner ist allwissend auf die Welt gekommen. Auch ich würde mir wünschen, dass Computer und Software noch leichter oder sogar intuitiv zu bedienen sind; dem ist aber nicht so und solange es keine besseren Lösungen gibt, muss man sich diese Dinge leider mühsam aneignen.

Ist dafür keine Zeit oder hat man einfach keine Lust dazu, sollte man es besser gleich ganz lassen und die Pflege dem Webdesigner (oder sonstwen) übertragen. Andernfalls ist man schnell einer der anfangs erwähnten „Fools“, also ein Narr, der trotz guter Absicht durch Unwissenheit mehr Schaden anrichtet als Nutzen einbringt. Weiterlesen

6. August 2016 // Joomla Update Horror

Sogut Joomla als Content Management System auch sein mag, es hat einen großen Nachteil: der Update-Vorgang ist seit Jahren ein einziger Horror. Es gleicht einem Glücksspiel, ob die automatische Aktualisierung durchläuft oder – was bei den von mir betreuten Installationen leider auch passiert – der Vorgang mit einer nicht besonders aussagekräftigen Fehlermeldung abgebrochen wird.

Russisches Roulett

Die Ursachen hierfür sind zahlreich, bei mir oft in der Rechteverwaltung des Linux-Servers zu suchen, auf dem der Auftritt gespeichert („gehostet“) wird. Ein von meinen Kunden gebuchter Provider hat beispielsweise die unangenehme Eigenschaft, für FTP und PHP verschiedene Benutzer zu verwenden, was dann später beim Joomla-Update Probleme macht, wenn der Benutzer PHP versucht, eine durch den Benutzer FTP geänderte / hochgeladene Datei zu ersetzen.

Der Update-Vorgang bricht ab („Cannot open file xyz for writing“) und hinterlässt das System in einem undefinierten Zustand, da nur Teile des Updates aufgespielt sind. Dann hat man den Salat.

Eine zweite Möglichkeit, das Update über den „Extension Manager“, scheidet meist auch aus. Hier liegt das Problem in den Dateigrößen der Update-Datei und der ggf. nicht vorhandene Möglichkeit, bei gemietetem Webspace mittels php.ini die upload_max_filesize zu beeinflussen. Und auch hier kann es zu den oben beschriebenen Rechte-Problemen kommen. Weiterlesen

5. März 2016 // Externe Session-Daten in Joomla

Während der Bearbeitung eines neuen Projektes ergab sich einmal mehr eine knifflige Aufgabenstellung:

  • Auf Daten eines externen PHP-Systems soll innerhalb von Joomla zugegriffen werden, abhängig vom Zustand eingeloggt ja/nein, welcher in separaten Session-Daten vorgehalten wird.
  • Da Joomla seine eigene Session-Verwaltung betreibt sind die externen Session-Daten in Joomla (wohl auch aus Sicherheitsgründen) nicht direkt erreichbar.
  • Die Umprogrammierung des externen Systems hin zur Zusammenarbeit mit Joomla scheidet leider aus.

Nach einigen Überlegungen entwickelte ich die folgende Javascript / Ajax-Lösung, welche ich heute einmal kurz vorstellen möchte:

Schritt 1

Innerhalb des Joomla wird eine Markierung gesetzt, an der später der extern generierte HTML-Code eingefügt wird:

<div id="results"></div>

Das war ja noch einfach.

Schritt 2

Aufruf der verarbeitung.php per Javascript / jQuery über Ajax: Weiterlesen

29. August 2015 // Zugriff auf die Joomla-Datenbank

Nutzt man Joomla als Content-Management-System bietet es sich an, anstatt mühsam eine eigene MySQL-Datenbank zu verwalten seine Daten einfach in einer eigenen Tabelle der Joomla-Datenbank abzulegen. In einem aktuellen Projekt habe ich dies getan, daher hier einige vielleicht nützliche Beispiele für den Zugriff als PHP-Sourcecode.

Vorbemerkungen

Der Zugriff auf die Joomla-Datenbank ist eigentlich recht gut dokumentiert, die zuständige PHP-Klasse nennt sich „JDatabase“. Die folgenden zwei Seiten waren Grundlage für den (modifizierten) Code:

■ Lesen: https://docs.joomla.org/Selecting_data_using_JDatabase
■ Schreiben, Updaten und Löschen: https://docs.joomla.org/Inserting,_Updating_and_Removing_data_using_JDatabase

Für das Verständnis dieses Artikels wäre es weiter gut, wenn Sie in PHP fit sind und ein paar Grundkenntnisse zu MySQL mitbringen.

Definitionen

Der Übersichtlichkeit halber definiere ich vorab zentral den Namen meiner Tabelle in der Datenbank:

 define( "KARLMAY", "#__karlmay" );

Die Tabelle heißt also <irgendwas>__karlmay, das ‚#‘ respektive <irgendwas> steht für den Tabellenvorsatz, der bei der Installation von Joomla gewählt wurde

Z.B. könnte der vollständige Tabellenname später, wenn Sie per phyMyAdmin nachschauen, ‚qkw__karlmay‘ lauten. Den Tabellennamen „fest zu verdrahten“ wäre natürlich auch möglich, mit ‚#‘ als Platzhalter ist es aber einfacher und schöner. Weiterlesen

18. Juli 2015 // Sessions in Joomla

Neue Projekte, neue Herausforderungen. Für die Kostenberechnung innerhalb eines Auftritts, welche sich über mehrere Seiten erstreckt, benötigte ich die Funktion, dass gewählte Einstellungen der einzelnen Seiten zwischengespeichert werden.

Diese Daten sollen a) später bei Neuaufruf der Seiten geändert werden können und b) anschließend für die endgültige Berechnung zur Verfügung stehen.
Joomla Session Handling
Üblicherweise macht man sowas mit sogenannten „Sessions“, über PHP und eine Session-ID sind die abgespeicherten Daten dann zugänglich. Session-Programmierung in PHP ist nichts Neues und es gibt im Netz hunderttausende gute (und schlechte) Anleitungen dazu.

In meinem ersten HTML-Entwurf der Seite funktionierte auch alles soweit ganz gut, mal abgesehen davon, dass bei abgeschalteten Cookies, in denen die Sesssion-ID abgelegt wird, wie erwartet nichts mehr lief.

Kollision

Bei der Übertragung des Entwurfes hin zu Joomla stand ich jedoch vor dem Phänomen, dass die vorab programmierte Session-Verwaltung nicht arbeiten wollte, es wurden einfach keine Daten abgespeichert, egal, was ich probierte.

Wieder einmal war es eine Recherche im Netz, die mich darauf brachte, dass die nativen PHP-Sessions mit der in Joomla eingebauten Session-Verwaltung kollidieren können. Ich erfuhr weiter, dass Joomla eine eingebaute Session-Verwaltung besitzt, die sich nutzen lässt. Dieses Vorgehen hat die folgenden Vorteile: Weiterlesen

31. Januar 2015 // Joomla, Module und Komponenten

Für ein neues Projekt habe ich mir heute den Tag mit dem Thema „Programmierung von Modulen und Komponenten für Joomla“ um die Ohren geschlagen, ist ja auch mal schön.

Für besagtes Projekt ist eine gewisse Programmierung unabdingbar, da die geplante Seite später Produkte als Liste anzeigt, wobei die Produktdaten dann vom Inhaber selbstständig erstellt, gepflegt und auch wieder gelöscht werden sollen. Das ginge zwar theoretisch auch „händisch“ im Joomla-Backend, wäre aber zu viel kompliziert für den Anwender.

Definition

Ein Joomla-Modul ermöglicht es, an einer bestimmten Position („Modulposition“) innerhalb des Layouts etwas auszugeben. Beispiel: ein Menü ist in Joomla immer ein Modul, in diesem Falle wird die grundlegende Funktionalität mitgeliefert, kann aber überschrieben werden. Module greifen auf die Datenbank idR nur lesend zu.

Eine Joomla-Komponente geht weiter, das CMS wird hierdurch um neue Funktionen erweitert. Beispiel: Forum, eine Bildergalerie oder Newsletter-System. Komponenten können innerhalb gewisser Grenzen die Datenbank auslesen als auch Einträge ändern oder löschen. Weiterlesen