it-swarm.com.de

Joomla! CMS-Komponente mit Joomla! Rahmen?

Ich bin neugierig darauf, CMS-Komponenten auf der Joomla! Framework hauptsächlich, weil ich möchte, dass meine Komponenten als eigenständige Anwendungen fungieren.

Ist das ohne Hacks machbar? Wenn nicht, gibt es einen bevorzugten Weg, dies zu erreichen?

7
Nestor Ledon

Diese Frage lässt sich nicht abschließend beantworten, aber ich denke, dass es sich lohnt, einige der gebräuchlichsten Teile zu probieren, über die Sie beim Portieren von Code stolpern könnten (und es wird einige geben).

Bevor Sie sich mit Einzelheiten befassen, kann dies je nach Ihrer Sichtweise als Hack betrachtet werden. Das CMS und das Framework unterscheiden sich stark vom Standpunkt einer Komponente. Das CMS definiert die genaue zu verwendende Struktur. Mit dem Framework können Sie die Ausführung und Interaktion Ihrer Anwendung anpassen. Das Framework kann definitiv so entworfen werden, dass es Komponenten aus dem CMS ausführt. Ab einem bestimmten Punkt erstellen Sie jedoch nur das CMS neu, was sinnlos erscheint.

Zunächst die superkurze und einfache Antwort: Jede Art und Weise, in der Ihre Komponente mit dem CMS interagiert, muss überarbeitet werden. Dazu müssen Sie einen Router und wahrscheinlich Namespaces oder einen neuen Autoloader hinzufügen.

Beginnen wir mit der zweiten Hälfte. Es steht zu vermuten, dass Sie composer mit dem Joomla Framework verwenden, sodass Sie sich darauf verlassen können, dass der Autoloader des Composers die Klassen nach Bedarf lädt. Damit Ihre Komponente nicht automatisch geladen wird. (Ich vermute, dass dies der Fall ist. Wenn es also einen besseren Weg gibt, kommentieren Sie ihn bitte.) Dies bedeutet, dass Sie entweder Ihren eigenen Autoloader für die MVC-Klassen hinzufügen oder diese in einem Namespace neu schreiben müssen .

Zweitens müssen Sie der Anwendung Ihre eigene Router-Datei hinzufügen. Da Sie den Menü-Manager nicht mehr haben, müssen Sie diesen mithilfe der Router-Klasse neu erstellen. Dies ist eigentlich ziemlich einfach, um URLs einem Controller zuzuordnen, aber Sie müssen sicherstellen, dass dies in der Anwendung vorhanden ist.

Schließlich müssen Sie alle CMS-Funktionen unterstützen, die Sie in der Komponente verwenden. Das größte, das mir in den Sinn kommt, ist JFactory. Alle Skripte, die diese Klasse aufrufen, um die Sitzung, die Datenbank oder das Dokument abzurufen, funktionieren nicht. (Es sei denn, Sie portieren diese Klasse und definieren ihre Hooks entsprechend Ihrer Anwendung neu.

Rufen Sie JComponentHelper irgendwo an? Dafür müssten Sie Unterstützung hinzufügen. Rufen Sie einen anderen Helfer für eine Core-Erweiterung wie com_content oder com_users an? Das geht auch nicht mehr.

Auf dem Framework können problemlos einige einfache Erweiterungen ausgeführt werden. Diejenigen, die sich auf vielfältige Weise in das CMS einbinden, müssen möglicherweise das CMS grundlegend neu aufbauen, um alle Aufgaben zu erledigen. Dieser Teil hängt wirklich von der Erweiterung ab.


Abschließend wird es in dieser Phase höchstwahrscheinlich eine Art von Hacking oder Kopieren/Einfügen von Code aus dem CMS in das von Ihnen benötigte Framework geben.

Ich glaube, dass das CMS der Struktur des Frameworks besser entsprechen wird (d. H. Composer verwendet, Namespaces verwendet usw.), was dies einfacher machen wird. Im Moment ist es jedoch eine ziemlich entmutigende Aufgabe.

5
David Fritsch