Seite 1 von 1

gleiche Module in unterschiedlichen Mandanten verwenden...

Verfasst: Mo 5. Okt 2009, 15:45
von BoFiaZ
Hi,

man kann sich vorstellen das dies nicht gewollt ist, aber ich habe mehrere Webseiten mit einer Contenido Installation laufen und bräuchte hier und da dasselbe Modul. Es ist (vielleicht über Umwege) möglich gleiche Module in verschiedene Mandanten zu verwenden?

Re: gleiche Module in unterschiedlichen Mandanten verwenden...

Verfasst: Di 6. Okt 2009, 10:38
von funomat
Modul aus einem Mandanten exportieren und in den neuen Mandanten importieren!

Falls Du allerdings meinst, dass man ein Modul das einem Mandanten zur Verfügung steht ohne es für die anderen Mandanten als Modul zu importieren, von allen Mandanten nutzen kann :roll: , so muss ich Dich enttäuschen. Das ist meines Wissens nach nicht möglich.

Gruß,
funomat

Re: gleiche Module in unterschiedlichen Mandanten verwenden...

Verfasst: Fr 9. Okt 2009, 19:21
von mfweb
Von Haus aus geht das nicht.

Folgender Workaround müsste eigentlich funktionieren: Die Module jeweils in eine php-Datei im Ordner /contenido/includes/ (oder einem Unterordner) auslagern. In den Modulen in allen Mandanten dann nur noch ein

Code: Alles auswählen

<?php
cInclude("includes","blabla");
?> 
einfügen. blabla steht für den entsprechenden Pfad mit Dateinamen ausgehend vom Ordner /contenido/includes/.

Aber: Dadurch werden die Module nicht mehr verisoniert (geht ja auch gar nicht mehr) und das Editieren geht nicht mehr in Contenido. Außerdem kannst du dann nicht mehr ohne Weiteres die CMS_VAR/VALUE verwenden (siehe http://forum.contenido.org/viewtopic.php?t=9522).

Dieses Vorgehen ist allerdings sehr riskant! Das Gesamtsystem kann schnell unübersichtlich werden und wenn man einen Fehler im Code einbaut, so tritt dieser sofort in jedem Mandanten auf! Hier ist also auch bei kleinen Änderungen ein separates Entwicklungssystem (oder wenigstens ein "Entwicklungs-Mandanten") unabdingbar.

Grüße
mfweb

Re: gleiche Module in unterschiedlichen Mandanten verwenden...

Verfasst: Sa 10. Okt 2009, 01:10
von Oldperl
Hallo,
BoFiaZ hat geschrieben:Es ist (vielleicht über Umwege) möglich gleiche Module in verschiedene Mandanten zu verwenden?
grundsätzlich ist es nicht möglich, und in meinen Augen auch nicht sinnvoll. Von der Unübersichtlichkeit einmal abgesehen wäre es eh mit Vorsicht zu geniesen, da sich Änderungen im Modul dann nicht nur auf den aktuellen Mandanten, sondern auch auf alle anderen Mandanten auswirken, was eventuell garnicht erwünscht ist.

Auch der Ansatz von mfweb hat seine Tücken. Nicht nur das Versionierung und CMS-Variable und die Quellcode-Validierung nicht mehr gehen, da durch ein cInclude das Modul in einer Funktion gekapselt includiert wird, kann es zu Problemen mit nicht globalen Variablen kommen, ein Grund warum die Einbindung von Plugins nicht (mehr) in einer Funktion gekapselt wird.

Bei einer Mehrfachverwendung von Modulen würde ich den klassischen Weg bevorzugen. Andere Wege sind meiner Meinung nach auf sichere Weise nur durch Anpassungen im Core zu machen. Dabei sollte es dann einen Zähler geben, wie oft (Anzahl Mandanten) solch ein "globales" Modul eingesetzt ist. Änderungen dürften nur an einer Stelle möglich sein, evtl. nur durch einen sysadmin, für alle anderen müßte es einen Hinweis geben das es sich um ein globales Modul handelt. Ebenfalls müßte es für Übersetzungen und Versionierung ähnliche Vorgaben geben. Bei jedem Mandanten in dem das Modul im Einsatz ist eine Versionierung vorzunehmen wäre dann unsinnig.

Ich selbst nutze das Filesystem nur im Rahmen der Entwicklung für Module, wobei ich dafür aber Anpassungen im Core gemacht habe, so daß ich ausgewählte Module (In- und Output) aus Dateien einlese, so als kämen In- und Output aus der DB. Hierbei können gemachte Änderungen durch Klick auf Speichern im Modulbereich in der DB abgelegt werden und ich kann während der Entwicklung direkt in meiner IDE arbeiten ohne nervtötendes und andauerndes Copy & Paste. Vorteil ist auch, das Alles funktioniert als würde ich im Backend arbeiten.
Diese Lösung ist aber definitiv auch nicht für das hier gestellte Problem anwendbar.

Gruß aus Franken

Ortwin