XCLASS - typo3.pl
Transkrypt
XCLASS - typo3.pl
Metody rozszerzania kodu w TYPO3 Tomasz Krawczyk ([email protected]) TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 Metody rozszerzania kodu w Poprawka w kodzie (unikamy) ●Własne rozszerzenie ●XCLASS ●Hooks ● TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 Metody rozszerzania kodu w Poprawka w kodzie (unikamy) ●Własne rozszerzenie ●XCLASS ●Hooks ● TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 Xclass - co to Xclassing to rozszerzenie klasy PHP, które będzie wykonane jeśli TYPO3 wie, że klasa bazowa jest rozszerzona. TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 Metody rozszerzania kodu w XCLASSing – zalety i wady TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 XCLASS – zalety pozwalają zmienić działanie core TYPO3 / rozszerzeń ● TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 XCLASS – zalety pozwalają zmienić działanie core TYPO3 / rozszerzeń ●unikamy modyfikacji źródeł core / rozszerzenia ● TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 XCLASS – wady klasę można xclassować raz ● TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 XCLASS – wady klasę można xclassować raz ●problem gdy dwa lub więcej rozszerze ń XCLASSują jedną klasę PHP ● TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 XCLASS – jak to działa? Deklaracja po definicji klasy bazowej ● class tx_srfreecap_pi1 extends tslib_pibase { /* … */ } if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS'] ['ext/sr_freecap/pi1/class.tx_srfreecap_pi1.php']) { include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS'] ['ext/sr_freecap/pi1/class.tx_srfreecap_pi1.php']); } TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 XCLASS – jak to działa? Tworzymy plik klasy nadając mu nazwę: class.ux_NAZWA_KLASY_ROZSZERZANIEJ.php (np. class.ux_tx_auxnewsmailer_pi1.php) ● TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 XCLASS – jak to działa? Wstawiamy treść klasy ● class ux_tx_auxnewsmailer_pi1 extends tx_auxnewsmailer_pi1 { function buildCatTree($idparent,$pages,$usercat) { /* ... */ } } TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 XCLASS – jak to działa? Informujemy TYPO3 o naszej Xclassie (localconf.php lub ext_localconf.php) ● $TYPO3_CONF_VARS["FE"]["XCLASS"] ['ext/aux_newsmailer/pi1/class.tx_auxnewsmailer_pi1.php'] = PATH_typo3conf . 'xclasses/class.ux_tx_auxnewsmailer_pi1.php'; lub $TYPO3_CONF_VARS["BE"]["XCLASS"]['t3lib/class.t3lib_extfilefunc.php'] = PATH_typo3conf . 'xclasses/class.ux_t3lib_extfilefunc.php'; TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 XCLASS – przykład poprawiamy rozszerzenie aux_newsmailer ● TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 XCLASS – przykład Przykład rozszerzenia opartego o XCLASSing – EXT:jb_gd_resize TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 Hooks - co to Hooks to miejsca w kodzie źródłowym gdzie może być wywołana funkcja użytkownika jeśli TYPO3 wie że ma taką wywołać. TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 Metody rozszerzania kodu w Hooks – zalety i wady TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 Hooks – zalety pozwalają zmienić działanie core TYPO3 / rozszerzeń ● TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 Hooks – zalety pozwalają zmienić działanie core TYPO3 / rozszerzeń ●unikamy modyfikacji źródeł core / rozszerzenia ● TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 Hooks – zalety pozwalają zmienić działanie core TYPO3 / rozszerzeń ●unikamy modyfikacji źródeł core / rozszerzenia ●do jednego hooka możemy podpiąć wiele funkcji ● TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 Hooks – wady brak haka tam gdzie go potrzebujemy ● TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 Hooks – jak to działa? Deklaracja hooka w klasie bazowej (core) ● if (is_array($TYPO3_CONF_VARS['SC_OPTIONS'] ['t3lib/class.t3lib_tceforms.php']['getSingleFieldClass'])) { foreach ($TYPO3_CONF_VARS['SC_OPTIONS'] ['t3lib/class.t3lib_tceforms.php']['getSingleFieldClass'] as $classRef) { $this->hookObjectsSingleField[] = t3lib_div::getUserObj($classRef); } } TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 Hooks – jak to działa? Informujemy TYPO3 o naszym hooku w localconf.php ● $TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tceforms.php'] ['getSingleFieldClass'][] = PATH_typo3conf . 'hooks/class.tx_ttnews_hooks.php:tx_ttnews_hooks'; TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 Hooks – jak to działa? Deklaracja hooka w klasie bazowej (ext) ● // Adds hook for processing of extra item markers if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_news'] ['extraItemMarkerHook'])) { foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_news'] ['extraItemMarkerHook'] as $_classRef) { $_procObj = & t3lib_div::getUserObj($_classRef); $markerArray = $_procObj->extraItemMarkerProcessor($markerArray, $row, $lConf, $this); } } TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 Hooks – jak to działa? Informujemy TYPO3 o naszym hooku w ext_localconf.php ● if (TYPO3_MODE == 'FE') { require_once(t3lib_extMgm::extPath($_EXTKEY).'class.tx_rgnewsce_fe.php'); } $TYPO3_CONF_VARS['EXTCONF']['tt_news']['extraItemMarkerHook'][] = 'tx_rgnewsce_fe'; TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 Hooks – jak to działa? Przykład rozszerzenia używającego hooki tt_news TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011 Metody rozszerzania kodu w Dziękuję TYPO3 Społeczność Polska | T3UG-PL 04 5 listopad 2011