in diesen Thread soll demonstriert werden, wie man das Contenido Backed ansatzweise in ein MVC-Pattern umstellt.
Das MVC-Pattern (Model View Controller) ist ein Architekturmuster, mit der eine Applikation in 3 Bereiche geteilt wird.
Model: Enthält die Geschäftslogik
View: Ist für die Ausgabe zuständig
Controller: Übernimmt die Steuerung und kann das Bindeglied zwischen Model und View sein.
Weitere Details zum MVC-Muster findet ihr bei Wikipedia.
Dieses Muster kann theoretisch auch auf das Contenido-Backend angewendet werden.
Bei einer MVC-Anwendung werden in der Regel über die URL der Controller und die entsprechende Action nach dem Schema /controller/action angesprochen.
Beispiel:
Code: Alles auswählen
/user/login
Dieses Schema lässt sich auf Contenido adaptieren, dort gibt es die Parameter "area" und "action". Es wäre also damit folgendes möglich:
Code: Alles auswählen
Contenido area "con_editart" => Controller "con_editart"
Contenido action "con_edit" => Action "con_edit"
Im Anhang findet ihr ein Plugin, in dem das Contenido-Backend "ansatzweise" MVC-fiziert wurde. Der Aufbau ähnelt dem einer auf Zend-Framework basierenden Applikation, wobei ich das "ähnelt" betonen möchte. Es verwendet keine Sourcen vom Zend-Framework und die Implementierung des MVC-Pattern ist nur in ansätzen vorhanden.
- Es gibt eine Bootstrap-Datei, die noch nicht die komplette Backend-Initialisierung übernimmt
- Der Controller ist sehr einfach gehalten und kann noch nicht vollständig in das Backend integriert werden
- Die View ist eine erweiterte Variante der Template Klasse
- Bei der Umsetzung des MVC-Patterns sowie anderer Features, wurde das Zend Framework als Beispiel hergenommen
Das Beispiel beinhaltet folgende Controller:
- Index: zur Anzeige der Index-Seite
- Strcorrect: Eine Beispielimplementation zur Behebung der Kategorieprobleme. Damit lassen sich manuell die pre/post/parent ids und der level der Kategorien setzen.
Es wird eine Kategoriestruktur wie unter Artikel generiert, mit Klick auf den rechten Bereich einer Kategorie (dort, wo pre/post/parent und level ist), erscheint eine Art inside-Editing Ansicht der Kategorie.
HINWEIS: Dieses Tool soll bei der Korrektur eine kaputten Kategoriestruktur helfen, es ist aber nicht bis ins kleinste Detail getestet worden.
Daher ist die Verwendung auf eigene Gefahr und NICHT für die Korrektur der Kategoriestruktur eines Livesystems gedacht. - Templatecontrolexample: Eine Beispielimplementation eines Template Controls. Ein Template Controls ist ein Tag, ähnlich wie ein Modulcontainer im Layout. Damit lassen sich in Templates wiederverwendbare Komponenten integrieren.
- Templatehelperexample: Eine Beispielimplementation eines Template Helpers. Mit einem Template Helper kann man z. B. eigene Platzhalter definieren, die dann bei der Ausgabe geparst werden.
Installation des Beispiels:
1. Die Inhalte des Zip in das Contenido-Verzeichnis kopieren
2. Im Contenido-Backend anmelden
3. Den Index-Controller mit Eingabe folgender URL in die Browserzeile aufrufen:
http://localhost/contenido/indexX.php?c ... ={your_sid}
TIP: Nach der Anmeldung steht in der Adresszeile "index.php". Es reicht aus, ein weiteres großes "X" vor der Endung anzugeben, also "indexX.php" und auf Enter drücken.
Einschränkungen:
1. Das Ganze ist in mehr ein Experiment, also nur Zum Testen gedacht
2. Damit lässt sich das Contenido Backend nicht vollständig auf MVC umstellen
3. Das MVC-Pattern ist in minimalster Form umgesetzt
Da im Forum schon eine Umfrage bezüglich der Erweiterung von Contenido läuft, möchte ich darauf hinweisen, dass ein Redesign des Core, eine Umstellung auf ein Framework oder gar auf das MVC-Pattern ein erheblicher Aufwand bedeuted und bei diesem Weg gibt es keine Abwärtskompatibilität.
Freue mich über Kritik und Anregungen...
Grüße
xmurrix