Der AddOnKey - Bedeutung und Konventionen

Der AddOnKey – der eindeutige Schlüssel eines AddOns – ist von zentraler Bedeutung.

Der Key dient erstens dazu, dass sich verschiedene AddOns nicht in die Quere kommen. Sonst könnte es passieren, dass verschieden AddOns die gleichen Verzeichnisnamen verwenden, den gleichen Präfix bei der Namensvergabe von Datenbanktabellen oder bei der Benennung von systemweiten Variablen.

Und zweitens könnte ein versehentlich identischer Key zu Konfusion führen bei der automatischen Aktualisierung, die in neueren Redaxo-Versionen möglich ist. Durch dieses automatische Update könnte ein AddOn ein anderes überschrieben, wenn hier keine Eindeutigkeit gegeben ist.

Wie erhält man einen eindeutigen AddOnKey?

Im Normalfall wird man sein AddOn hier im Downloadbereich der Allgemeinheit zur Verfügung stellen. Nachdem man sich by myREDAXO angemeldet hat, findet man im Menüpunkt “meine AddOns” den Link “Neues AddOn eintragen”.
In der dortigen Eingabemaske gibt es das Feld AddOnKey / Ordnername. Nach dem Abschicken findet bei der Registrierung des AddOns eine Prüfung auf Eindeutigkeit statt.

Gut – wir haben nun einen eindeutigen AddOnKey.

Ordnername

Zunächst sollte der Ordnername des AddOns identisch sein mit dem AddOnKey. Da der Update-Mechanismus auf den Ordnernamen zurückgreift, ist – wie schon weiter oben erwähnt – eine Eindeutigkeit des AddOn-Ordnernamens eminent wichtig.

Wie wird dieser Key im AddOn weiter verarbeitet?

Üblicherweise hinterlegt man den Key in der config-Datei eines AddOns:

$mypage = 'news';

Diesen Key kann man nun an verschiedenen Stellen innerhalb des AddOns wieder aufnehmen und weiter verarbeiten.

Hinweis
Früher wurde als Key üblicherweise die bei Anmeldung des AddOns automatisch vergebene ID verwendet. Dies ist nicht mehr aktuell.

Der ober definierte Key sollte natürlich auch bei der Namensvergabe eventueller Addon-Tabellen berücksichtigt werden. Mit folgender Zeile würde man die Voraussetzung schaffen, dass der Key im Präfix eines Tabellennamens enthalten ist:

$REX['ADDON']['dbpref'][$mypage]=$REX['TABLE_PREFIX'].$mypage.'_';

Hier wäre der Präfix also beispielsweise:
rex_news_

Wenn dieser Präfix bei der weiteren Programmierung im AddOn konsequent verwendet wird, ist sichergestellt, dass kein anderes AddOn den gleichen Tabellennamen nutzen kann – sofern der Key wirklich eindeutig definiert wurde und sich alle anderen AddOns an diese Konvention halten.
In der Listenausgabe etwa könnte der Prefix also wie folgt eingesetzt werden:

$list = new rex_list('SELECT id, datum, titel FROM '.$REX['ADDON']['dbpref'][$mypage].'meldungen order by datum', 200);

Ältere AddOns sollten – sofern sie auch über den automatischen Updatemechanismus aktualisiert werden sollen – an diese neue Konvention angepasst werden.