Hi, zunächst vorweg gesagt ich habe mir bereits einige Tutorial durchgelesen aber ich verstehe es trotzdem einfach nicht wie ich ein eigenes Modul schreiben soll. Leider gibt es wohl anscheinen kein richtiges Buch zur Oxid Programmierung und die ganzen zusammengestückelten Informationen die ich gefunden habe helfen mir nicht wirklich weiter.
Ich habe mal ein ganz einfaches Modul geschrieben, eine Methode die nichts anderes machen soll als einen String “Das ist ein Test” zurückzugeben (Modul ist als ZIP angehängt).
Dazu habe ich ein Verzeichnis “my_testmodule” im Module Ordner erstellt. Darin befinden sich eine [B]metadata.php[/B] die wohl seitdem es das neue Modulmanagement gibt nötig ist:
<?php
$aModule = array(
'id' => 'my_testmodule',
'title' => 'Test Modul',
'description' => 'Das ist ein Test Modul',
'thumbnail' => '',
'version' => '0.1',
'extend' => array(
'start' => 'my_testmodule/my_testmodule_start',
),
);
Die eigentliche Modulklasse habe ich in die Datei [B]my_testmodule_start.php[/B] in selben Verzeichnis gepackt:
<?php
class my_testmodule_Start extends my_testmodule_Start_parent
{
public function mytest(){
return "Das ist ein Test";
}
}
Die Klasse soll die Start Klasse auf der Startseite (start.tpl) um die Methode mytest() erweitern.
Deswegen habe ich dann die Methode in der [B]start.tpl[/B] aufgerufen:
[{assign var=testvar value=$oView->mytest() }]<h1>[{$testvar}]</h1>
Wieso funktioniert das denn nicht? Ich bekomme nur zahlreiche oxSystemComponentException Fehler, wo liegt mein Denkfehler???
Vielen Dank für Hinweise!
könnte sein, dass dein Server allergisch gegen die unterschiedliche Schreibweise ist (mal “start” mal “Start”)
was steht denn in der Exception?
Ich habe start auch mal mit Kleinschreibung probiert, ist genau das Selbe. In der Exception steht:
oxSystemComponentException—!–NOT CAUGHT–!–oxException (time: 2012-10-31 09:45:38): [0]: Function ‘setInList’ does not exist or is not accessible! (my_testmodule_Start)
Stack Trace: #0 [internal function]: oxSuperCfg->__call(‘setInList’, Array)
#1 C:\xampp\htdocs\oxid\core\oxlist.php(374): my_testmodule_Start->setInList()
#2 C:\xampp\htdocs\oxid\core\oxcategorylist.php(139): oxList->getBaseObject()
#3 C:\xampp\htdocs\oxid\core\oxcategorylist.php(244): oxCategoryList->_getSelectString(false, NULL, ‘oxparentid, oxs…’)
#4 C:\xampp\htdocs\oxid\views\oxcmp_categories.php(164): oxCategoryList->buildTree(‘8a142c3e60a535f…’, false, true, NULL)
#5 C:\xampp\htdocs\oxid\views\oxcmp_categories.php(80): oxcmp_categories->_loadCategoryTree(‘8a142c3e60a535f…’)
#6 C:\xampp\htdocs\oxid\views\oxubase.php(634): oxcmp_categories->init()
#7 C:\xampp\htdocs\oxid\views\oxshopcontrol.php(367): oxUBase->init()
#8 C:\xampp\htdocs\oxid\views\oxshopcontrol.php(309): oxShopControl->_initializeViewObject(‘exceptionError’, ‘displayExceptio…’)
#9 C:\xampp\htdocs\oxid\views\oxshopcontrol.php(119): oxShopControl->_process(‘exceptionError’, ‘displayExceptio…’)
#10 C:\xampp\htdocs\oxid\index.php(103): oxShopControl->start()
#11 {main}
Faulty component –>
Was schräg ist, weil setInList von mir nirgendwo aufgerufen wird.
Nach der Fehlermeldung stürzt das Modul dann ab, sprich deaktiviert sich selbst im Backend.
Es ist wirklich super seltsam und muss etwas mit dem Server zu tun haben. Welche Server Software ist denn für OXID für eine lokale Entwicklungsumgebung unter Windows besonders geeignet?
[QUOTE=Fischkopp;106650]Ich habe start auch mal mit Kleinschreibung probiert, ist genau das Selbe.[/QUOTE]
“my_testmodule_Start” ist aber keine Kleinschreibung! Xampp ist OK und dein Modul läuft ohne Probleme bei mir in Xampp in Oxid 4.6.5. Wenn du den Stacktrace anschaust, hast du eine Exception in oxshopcontrol.php Zeile 119, da steht:
//possible reason: class does not exist etc. --> just redirect to start page
Evtl. ist das auch ein alter Fehler, der noch nicht angezeigt werden konnte, also Browser neu starten.