Hi
für die Erweiterung der Kategorien Filterung muss ich weitere Parameter an den Link zum Event-Single-View anhängen.
Dazu gibt es eine abstrakte Methode im Model tx_cal_model:
die genau auf meine Bedürfnisse zugeschnitten ist. Ich verstehe aber nicht, wie ich diese Methode überschreiben kann, bzw wie ich das Model erweitere.Code:class tx_cal_model extends tx_cal_base_model { ... function addAdditionalSingleViewUrlParams(&$currentParams){} ... }
Man kann Services einfach überschreiben, aber da komme ich nicht an das Model ran...
Ok, wir haben einen Weg gefunden und da ich gelöste Threads sehr gerne lese, leiste ich auch meinen Beitrag dazu:
Man definiert einen Service in seiner Extension in der ext_localconf.php:
Service Klasse erbt von tx_cal_event_service und überschreibt die Methode createEvent:Code:// Overwrites standard calservice t3lib_extMgm::addService($_EXTKEY, 'cal_event_model', 'tx_cal_phpicalendar', array( 'title' => 'Cal PHPiCalendar Model', 'description' => '', 'subtype' => 'event', 'available' => TRUE, 'priority' => 50, 'quality' => 50, 'os' => '', 'exec' => '', 'classFile' => t3lib_extMgm::extPath($_EXTKEY).'service/class.tx_cb_event_service.php', 'className' => 'tx_cb_event_service', ) );
In der eigenen Modelklasse kann man dann beliebige Funktionen überschreiben. Wichtig ist der Konstruktor!Code:require_once(t3lib_extMgm::extPath('cal').'service/class.tx_cal_event_service.php'); require_once(t3lib_extMgm::extPath('cal').'controller/class.tx_cal_functions.php'); require_once(t3lib_extMgm::extPath('your_extension').'class.tx_your_model.php'); class tx_cb_event_service extends tx_cal_event_service { function createEvent($row, $isException){ $event = t3lib_div::makeInstance('tx_your_model',$row, $isException, $this->getServiceKey(), $this->controller->conf); return $event; } }
Code:require_once(t3lib_extMgm::extPath('cal').'model/class.tx_cal_phpicalendar_model.php'); /** * Overwrites default cal model. Adds additional parameters for cal category management. * */ class tx_your_model extends tx_cal_phpicalendar_model { function __construct($row, $isException, $serviceKey) { $this->tx_cal_phpicalendar_model($row, false, $serviceKey); $this->controller = &tx_cal_registry::Registry('basic','controller'); } /** * (non-PHPdoc) * @see typo3conf/ext/cal/model/tx_cal_model#addAdditionalSingleViewUrlParams($currentParams) */ function addAdditionalSingleViewUrlParams(&$currentParams){ $currentParams["xyz"] = xyzvalue; } ... }
viel spass ;)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Lesezeichen