Anpassungen eines Moduls für CMSms 1.6
Posted: Tue Jul 14, 2009 3:48 pm
Dieser Thread richtet sich an alle Modul-Entwickler, die Ihre Module an CMSms Version 1.6 anpassen müssen oder angepasst haben. Wie es scheint, gibt es noch einige Module da draußen, die gern unter CMSms 1.6 laufen würden, aber durch einige Veränderungen nicht können. Deshalb möchte ich hier den Anfang machen, das Wissen zusammenzutragen, was für eine Anpassung notwendig ist.
So wie ich die Sache sehe, ist das größte Problem, dass die alten Inhaltstypen nicht mehr funktionieren. In CMSms vor Version 1.6 konnte man ein Modul als Inhaltstyp registrieren, indem man in der Modul-Klasse in der Funktion "SetParameters" einen Aufruf startete wie:
Dies funktioniert so nicht mehr mit CMSms ab Version 1.6, deshalb schreiben wir diesen Aufruf etwas um, so dass es zukünftig nicht zu Fehlern kommen kann:
Dieses Beispiel ist aus dem Modul "Guestbook", der Modulname und die Pfade sind also anzupassen. Zur Verdeutlichung hier mal noch das selbe Beispiel in einer etwas anderen Art für das Modul "PageBlocks":
Damit haben wir erst einmal den alten Aufruf abgesichert. Ab CMSms Version 1.6 muss der RegisterContent-Aufruf nun in den (PHP4-)Constructor der Modul-Klasse. Beim Modul "Guestbook" heißt die Constructor-Funktion logischerweise ebenfalls "Guestbook". Dort muss nun der RegisterContent-Aufruf einfach hinein kopiert werden (am besten wieder mit einer if-Abfrage abgesichert). Hier die verkürzte Funktion für das Modul "Guestbook":
Und hier nocheinmal das gleiche für das Modul "PageBlocks":
Das war es auch schon. Ab nun sollte das Modul wieder als Seitentyp erscheinen. Beim Guestbook lief alles andere soweit unter CMSms 1.6. Gibt es denn noch andere Sachen, was sich in Bezug auf die Module geändert hat?
So wie ich die Sache sehe, ist das größte Problem, dass die alten Inhaltstypen nicht mehr funktionieren. In CMSms vor Version 1.6 konnte man ein Modul als Inhaltstyp registrieren, indem man in der Modul-Klasse in der Funktion "SetParameters" einen Aufruf startete wie:
Code: Select all
$this->RegisterContentType('GuestbookContent',cms_join_path(dirname(__FILE__),'class.GuestbookContent.php'),$this->GetFriendlyName());
Code: Select all
if ($GLOBALS['CMS_VERSION'] < 1.6) {
if (method_exists($this, 'registercontenttype')) {
$this->RegisterContentType('GuestbookContent',cms_join_path(dirname(__FILE__),'class.GuestbookContent.php'),$this->GetFriendlyName());
}
}
Code: Select all
if ($GLOBALS['CMS_VERSION'] < 1.6) {
if (method_exists($this, 'registercontenttype')) {
$this->RegisterContentType('PageBlocksContent', dirname(__FILE__) . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'class.PageBlocksContent.php', $this->GetFriendlyName());
}
}
Code: Select all
function Guestbook() {
$this->CMSModule();
$this->InstalledModules = array();
if ($GLOBALS['CMS_VERSION'] >= 1.6) {
parent::CMSModule();
$this->RegisterContentType('GuestbookContent',cms_join_path(dirname(__FILE__),'class.GuestbookContent.php'),$this->GetFriendlyName());
}
}
Code: Select all
function PageBlocks() {
$this->CMSModule();
$this->InstalledModules = array();
if ($GLOBALS['CMS_VERSION'] >= 1.6) {
parent::CMSModule();
$this->RegisterContentType('PageBlocksContent', dirname(__FILE__) . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'class.PageBlocksContent.php', $this->GetFriendlyName());
}
}