Anpassungen eines Moduls für CMSms 1.6

Hilfe zu Modulen und Tags
Post Reply
Andiministrator

Anpassungen eines Moduls für CMSms 1.6

Post by Andiministrator »

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:

Code: Select all

$this->RegisterContentType('GuestbookContent',cms_join_path(dirname(__FILE__),'class.GuestbookContent.php'),$this->GetFriendlyName());
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:

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());
    }
}
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":

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());
    }
}
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":

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());
    }
}
Und hier nocheinmal das gleiche für das Modul "PageBlocks":

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());
    }
}
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?
Last edited by Andiministrator on Tue Jul 14, 2009 3:51 pm, edited 1 time in total.
NaN

Re: Anpassungen eines Moduls für CMSms 1.6

Post by NaN »

Ah, besten Dank.
Genau die Sache mit dem Konstruktor, der ja nicht bei allen Modulen verwendet wird, hat mir gefehlt.

Wüsste nicht, was man sonst noch beachten sollte.
Außer, dass man evtl. den Quellcode des ContentTypes an den neuen Inhaltstyp anpassen sollte.
Aber das sollte recht einfach sein, die beiden Quellcodes zu vergleichen und ggf. anzupassen.
cyberman

Re: Anpassungen eines Moduls für CMSms 1.6

Post by cyberman »

Danke für die Dokumentation der Änderungen!
Post Reply

Return to “Module und Tags”