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

Podobne dokumenty