Die Shop-Verbindung einrichten
Die Verbindung richten Sie einmalig unter System → Plugins im Eintrag System - JTL Source ein. Die Einstellungen liegen in zwei Reitern: JTL Shop Datenbank und Plugin-Optionen.
Zuerst: einen eigenen Datenbankbenutzer anlegen
Verwenden Sie nicht den Datenbankbenutzer des Shops. Legen Sie im Shop-Datenbankserver einen eigenen Benutzer an, der ausschließlich lesen darf. Die Erweiterung schreibt nie — ein Benutzer mit Schreibrechten wäre also ein Risiko ohne Gegenwert.
Ein Beispiel für MySQL. Ersetzen Sie Schemanamen, Benutzernamen, Passwort und die Adresse, von der aus zugegriffen wird:
CREATE USER 'joomla_lesen'@'203.0.113.10' IDENTIFIED BY 'ein-langes-passwort';
GRANT SELECT ON jtlshop.tartikel TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tartikelmerkmal TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tartikelsprache TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tartikelpict TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tartikelsichtbarkeit TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tattribut TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tattributsprache TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaft TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaftkombiwert TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaftsichtbarkeit TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaftsprache TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaftwert TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaftwertaufpreis TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaftwertpict TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaftwertsichtbarkeit TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaftwertsprache TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.thersteller TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tkategorie TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tkategorieartikel TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tmerkmal TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tmerkmalwert TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tmerkmalwertsprache TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tpreis TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tpreisdetail TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tsprache TO 'joomla_lesen'@'203.0.113.10';
FLUSH PRIVILEGES;
Ab Version 1.12.0 stehen hier andere Tabellen als vorher. Die Liste nannte
bis 1.11.0 zwei Namen, die es im JTL Shop nicht gibt — die Erweiterung fragte sie ab, und die
Felder Attribute und Varianten blieben deshalb immer leer. Wer die Rechte
einzeln vergeben hat, vergibt die neuen bitte nach. Wer GRANT SELECT ON jtlshop.*
benutzt hat, muss nichts tun.
Ab Version 1.13.0 kommt teigenschaftkombiwert hinzu. Daraus
liest die Erweiterung Lagerbestand und Artikelnummer der Varianten von Artikeln mit
Variantenkombinationen. Fehlt das Recht, funktioniert alles wie bisher — nur bleiben diese
beiden Angaben bei solchen Artikeln leer.
Das t am Anfang der Tabellennamen ist das übliche JTL-Präfix. Weicht Ihres ab,
passen Sie die Namen an — und tragen Sie es unten im Feld Tabellen-Präfix ein.
Wer es einfacher haben will, vergibt GRANT SELECT ON jtlshop.* . Das ist
großzügiger als nötig, aber immer noch deutlich besser als ein Benutzer mit Schreibrechten.
Reiter „JTL Shop Datenbank“
| Datenbank-Host | Adresse des Datenbankservers. Liegt der Shop auf demselben Server, meist localhost. |
| Datenbankname | Name des Schemas, etwa jtlshop. |
| Datenbank-Benutzer | Der eben angelegte Lesebenutzer. |
| Datenbank-Passwort | Ein gespeichertes Passwort wird nicht angezeigt und nicht an den Browser geschickt; das Feld trägt dann nur den Hinweis, dass eines gespeichert ist. Lassen Sie es leer, bleibt das Passwort erhalten. Passwort entfernen löscht es beim Speichern. Zur Speicherung siehe unten. |
| Tabellen-Präfix | Vorgabe t. |
| Datenbank-Port | Vorgabe 3306. |
| Verschlüsselung (TLS) | Vorgabe Aus. Siehe „Verbindung von außen“ weiter unten. |
| CA-Datei | Nur bei eingeschalteter Verschlüsselung und nur, wenn das Zertifikat des Datenbankservers nicht von einer allgemein anerkannten Stelle stammt: der vollständige Pfad zur CA-Datei auf dem Joomla-Server. |
Host oder Port ändern: Passwort neu eingeben. Das gespeicherte Passwort gilt nur für den Server, für den es gespeichert wurde. Ändern Sie Host oder Port und lassen das Passwortfeld leer, lehnt das Formular das Speichern mit einem Hinweis ab. So kann niemand das Passwort an einen anderen Server umleiten.
Die Verbindung prüfen
Über dem ersten Feld liegt die Schaltfläche Datenbankverbindung testen. Sie prüft, ohne zu speichern:
- ob die Verbindung mit diesen Daten zustande kommt,
- welche MySQL-Version antwortet,
- wie viele Tabellen mit Ihrem Präfix vorhanden sind,
- und ob eine der neun Tabellen fehlt, ohne die eine Anbindung sinnlos wäre.

Werden fehlende Tabellen gemeldet, stimmt in aller Regel das Präfix nicht. Fehlt nur
tartikelsichtbarkeit, fehlt meist das Leserecht darauf; dann zeigen die Produktlisten
in der Vorgabe keine Produkte (siehe Wenn die Sichtbarkeit nicht geprüft werden kann
unten).
Bleibt das Passwortfeld leer, testet die Prüfung mit dem gespeicherten Passwort, aber nur gegen den gespeicherten Host und Port. Für einen anderen Server verlangt sie die Eingabe.
Die Prüfung ist nur für angemeldete Benutzer mit dem Recht ACL & Optionen konfigurieren für die Plugins erreichbar; in der Joomla-Vorgabe sind das Administratoren und Super User. Alle anderen sehen statt der Schaltfläche einen Hinweis. Bis Version 1.14.0 reichte das Recht, Erweiterungen zu verwalten. Bis Version 1.9.8 war sie ohne Anmeldung aufrufbar — ein weiterer Grund, auf 1.10.0 zu aktualisieren.
Reiter „Plugin-Optionen“
| Shop Basis-URL | Adresse des Shops, etwa https://shop.example.de. Daraus werden die Bild- und Artikeladressen zusammengesetzt. Bleibt das Feld leer, wird die Adresse der Joomla-Website verwendet — und die Bilder gehen ins Leere. |
| Standard-Währung | Währungskürzel für die Preisausgabe, Vorgabe EUR. |
| Standardsprache | ISO-Kürzel der Sprache, in der die Artikeldaten geführt werden, Vorgabe ger. Steuert, welche übersetzten Attributnamen gelesen werden. Bei einem englischsprachigen Shop etwa eng. |
| Kundengruppe | Aus Sicht dieser Kundengruppe liest die Website den Shop, Vorgabe 1. Sie bestimmt zweierlei: welcher Preis ausgegeben wird und welche Produkte als sichtbar gelten. In den meisten Shops ist 1 die Standardgruppe — welche es bei Ihnen ist, sehen Sie im Shop-Backend unter Kunden → Kundengruppen. |
| Wenn die Sichtbarkeit nicht geprüft werden kann | Gilt, wenn tartikelsichtbarkeit fehlt oder das Lesekonto sie nicht lesen darf. Dann ist unbekannt, welche Produkte im Shop gesperrt sind. Vorgabe Keine Produkte zeigen; Alle Produkte zeigen, auch gesperrte ist das Verhalten bis Version 1.14.0. |

Wo das Passwort landet
Joomla speichert Plugin-Einstellungen unverschlüsselt in der eigenen Datenbank. Das gilt auch für dieses Passwort — Joomla bietet für Plugin-Parameter nichts anderes an, und keine Erweiterung kann daran etwas ändern.
Daraus folgt die Empfehlung oben: ein eigener Benutzer, der ausschließlich lesen darf. Dann ist der Schaden begrenzt, falls jemand an die Joomla-Datenbank kommt.
Verbindung von außen
Liegen Shop und Website auf verschiedenen Servern, muss der MySQL-Server des Shops Verbindungen von außen annehmen. Grenzen Sie das so weit wie möglich ein:
- Den Benutzer an die IP-Adresse Ihres Joomla-Servers binden — genau das bewirkt der Teil
@'203.0.113.10'oben. - Port 3306 in der Firewall nur für diese eine Adresse öffnen.
- Die Verbindung verschlüsseln: mit der Einstellung Verschlüsselung (TLS), oder über ein VPN oder einen SSH-Tunnel statt über das offene Netz.
Ohne Verschlüsselung laufen alle Daten zwischen Website und Shop-Datenbank lesbar durchs Netz. Die Einstellung Verschlüsselung (TLS) kennt drei Werte:
| Aus | Keine Verschlüsselung, die Vorgabe. Passt, wenn Shop und Website auf demselben Server oder in einem geschützten Netz liegen. |
| Verschlüsseln und Zertifikat prüfen | Die sichere Wahl. Stammt das Zertifikat des Datenbankservers nicht von einer allgemein anerkannten Stelle, tragen Sie die CA-Datei ein. Der Name im Zertifikat muss zum eingetragenen Host passen. |
| Verschlüsseln, Zertifikat nicht prüfen | Verschlüsselt, schützt aber nicht davor, dass sich jemand als Ihr Datenbankserver ausgibt. Eine Notlösung für Server, deren Zertifikat sich nicht prüfen lässt. |
Bietet der Datenbankserver kein TLS an, kommt mit eingeschalteter Verschlüsselung keine Verbindung zustande; die Erweiterung fällt dann nicht auf eine unverschlüsselte Verbindung zurück. Probieren Sie es mit Datenbankverbindung testen aus, bevor Sie speichern.
Gilt für Version 1.15.0.