Dieser Beitrag soll als Wegweiser durch die Strukturen hinter den Kulissen von Joomla dienen und die Geheimnisse der Joomla Datenbank lüften.
Installation der Joomla Datenbank
Bereits bei der Installation von Joomla! wird eine Datenbank für den Installationsvorgang benötigt. Ohne eine angelegte Datenbank ist es nicht möglich, Joomla! zu installieren.
Die Datenbank ist der Dreh- und Angelpunkt in jedem Content-Management-System. Hier werden die Einstellungen, die man im Backend vornimmt, gespeichert und an einer anderen Stelle wieder abgerufen. Die Beiträge, die man verfasst, die Kategorisierung, jeder Zusammenhang zwischen Beiträgen und Menüpunkten – all das wird in der Joomla Datenbank gespeichert.
Beim Installationsvorgang von Joomla müssen Sie eine Joomla Datenbankverbindung angeben. Die Zugangsdaten variieren zwischen den Providern. In der Regel wird dazu eine MySQL Datenbank verwendet, die man mit PHPMyAdmin auf einer - für Menschen lesbaren Oberfläche – auch manuell verwalten kann.
Wenn man auf "Installieren" klickt, erfolgt im Hintergrund nichts anderes, als dass die leere Datenbank mit Grundinformationen gefüllt wird und alle für den Joomla! Core benötigten Datenbanktabellen gefüllt werden.
Bestandteile der Joomla! Datenbank
Zur Basisinstallation gehören aktuell folgende Tabellen, auf die in dieser Beitragsreihe im Einzelnen eingegangen wird.
Die Joomla Datenbank teilt sich inhaltlich in zwei verschiedene Bereiche auf
Inhaltlich kann man die Joomla Datenbank in zwei Bereiche aufteilen. Der erste Teil sind Joomla eigene Komponenten, wie z.B. COM_CONTENT, in welcher der Inhalt der Beiträge gespeichert wird. Der zweite Teil besteht aus übergreifenden Tabellen, wie z.B. Assets und Extensions, in welchen alle installierten Komponenten und Plugins usw. aufgelistet sind.
Im Folgenden wird die Joomla Datenbank in ihre Tabellen aufgeschlüsselt. Das vorangestellte #_ im Tabellennamen ist ein Platzhalter für das sogenannte Tabellenpräfix, welches in jeder Joomla! Datenbank anders lauten kann. Durch verschiedene Präfixe wäre es z.B. möglich mehrere Joomla! Installationen innerhalb einer Datenbank zu führen.
#__assets
Mit #_assets kommt man in der Praxis am wenigsten in Berührung. Hier werden alle Zugriffsrechte der einzelnen Komponenten und Modules gespeichert. Wenn man innerhalb einer Komponente im Backend auf die Optionen klickt, kommt man auf diese Zugangsberechtigungen.
#__associations
Hier wird die Beziehung zum Kontext hergestellt. Ist der Beitrag ein Menüpunkt oder nicht.
#__banners, #__banner_clients, #__banner_tracks
Die Joomla! native Bannerkomponente ist hier zu Hause. Jede Zeile dieser Tabelle in der Joomla! Datenbank steht für einen Banner. Die Kategorisierung der Banner erfolgt über die Spalte ### . Die zugehörigen Kategorien selbst findet man wie in jeder Joomla! Kategorisierung in com_categories. An welcher Stelle die Banner im Template ausgegeben werden, wird über module geregelt. Es muss im Backend ein Modul dazu erstellt werden, welches in der Datenbanktabelle #__modules hinterlegt wird.
Die Bannerkomponente kann auch Kunden verwalten, die „Anzeigen“ schalten können. Diese Kunden sind in #__banner_clients hinterlegt.
In #__banner_tracks werden die Klicks auf die Banner verzeichnet. Immer wenn ein Besucher einen Banner anklickt, wird die Zahl aktualisiert.
#__categories
In der Tabelle #__categories wird die Joomla! native Kategorisierung gemanaged. Nicht nur die Beiträge von Joomla sind hier zu finden. Jeder Komponente steht es frei, die Joomla Kategoriesierung zu nutzen. Die Spalten "extension" regelt dann die Zuweisung zur jeweiligen Komponente
#__contact_details
Die Joomla! eigenen Kontakt-Profile.
#__content
Der Dreh- und Angelpunkt der Joomla! Datenbank. Hier werden alle Joomla! Beiträge gespeichert. Über intro_text und full_text wird gesteuert, ob ein Beitrag einen Weiterlesen-Button besitzt oder nicht.
#__contentitem_tag_map, #__content_frontpage, #__content_types
Die Sortierung der Beiträge und die Möglichkeit verschiedene Content Typen zu definieren findet man in diesen Joomla! Tabellen.
#__content_rating
Das Joomla! native Bewertungssystem für Beiträge ist hier aufgeführt. Standardmäßig ist diese Funktion deaktiviert (zu finden in den Beitragsoptionen im Backend)
#__core_log_searches
Hier kann man bei Aktivierung im Backend, die Suchanfragen indexieren lassen
#__extensions
In der Joomla! Datenbank installierte Erweiterungen und ebenso die Core-Erweiterungen vom Joomla! Installer haben ihren Platz hier.
#__finder_filters, #__finder_links, #__finder_links_terms (0-9), #__finder_links_terms (a-f), #__finder_taxonomy, #__finder_taxonomy_map
#__finder_terms, #__finder_terms_common, #__finder_tokens, #__finder_tokens_aggregate, #__finder_types
Die Finder-Tabellen sind alle Bestandteil der Joomla! Komponente "Suchindex".
#__languages
Hier werden die installierten Sprachen der Joomla Installation gelistet.
#__menu, #__menu_types
Verschiedene Menüs und ihre Typenbezeichnung (Menüname, Typ, etc.) werden in diesen beiden Tabellen erstellt.
#__messages, #__messages_cfg
Das Joomla interne Nachrichten System für Administratoren.
#__modules, #__modules_menu
Alle angelegten Frontend und Backend Module - zu finden in "Erweiterungen" -> Module
#__newsfeed
Newsfeeds werden gerne für RSS-Reader angeboten. Wenn die zugehörige Komponente aktiviert ist, werden die Feeds hier erzeugt.
#__overrider
In Joomla ist es möglich, Sprachvariablen nach Belieben zu überschreiben. Angenommen "Weiterlesen" soll durch "Mehr" ersetzt werden, kann dies im Backend unter Erweiterungen->Sprachen->Overrides geändert werden. Diese Overrides werden in der Joomla! Datenbank unter der Tabelle #__overrider gespeichert.
#__postinstall_messages
Nachinstallationshinweise von Joomla! Updates werden hier gelistet.
#__redirect_links
Hier kann man seit einiger Zeit sogenannte Redirects aus dem Backend setzen. Wenn man das zugehörige Plugin aktiviert, werden Fehlerseiten dokumentiert und können durch Zuweisung einer neuen URL überschrieben werden.
#__schemas
Hier werden Versionsnummern verschiedener Extensions gesammelt.
#__session
Hier werden Session IDs verwaltet, wenn die Speicherung im Backend auf "Datenbank" gestellt ist.
#__tags
Das interne Tagging System in Joomla.
#__template_styles
Verschiedene Templates können verschiedene Stile vorgeben, die die Benutzer aussuchen können. Die Stile eines Joomla Templates werden hier gespeichert.
#__ucm_base, #__ucm_content, #__ucm_history
UCM Tabellen speichern die Versionen eines Joomla Beitrags, wenn diese Funktion aktiviert ist.
#__updates, #__update_sites, #__update_sites_extensions
Hier werden die Update-Server verschiedener Extensions gespeichert. Seit Joomla! 3.4 kann man diese auch im Backend deaktivieren (Erweiterungen->Updateserver).
#__usergroups, #__users, #__user_keys, #__user_notes, #__user_profiles, #__user_usergroup_map
Die umfangreiche Benutzerverwaltung in Joomla. Jeder registrierte Benutzer wird in der Joomla Datenbank in der Tabelle #__users gespeichert. Ob dieser ein Super-User, Administrator, Redakteur oder Gast ist, wird über a) die #__usergroups geregelt und b) über die #__user_usergroup_map zugewiesen. Eine 8 in der Usergroupmap steht beispielsweise standardmäßig für den Super User.
#__viewlevels
Hier werden zu guter Letzt die Zugriffsebenen der jeweiligen Benutzergruppen gespeichert.