[TYPO3-UG Dutch] extenden van de sysext class
Jigal van Hemert
jigal.van.hemert at typo3.org
Sat Jun 16 20:04:57 CEST 2012
Hoi,
On 16-6-2012 18:02, Drs. Ing. W.S.M. Perquin wrote:
> Nu wil ik alleen de TYPO3 class:
>
> typo3/sysext/cms/tslib/class.tslib_fe.php
>
> extenden. En er wijzigingen in aanbrengen zonder de core aan te moeten
> passen.
>
> Mijn vraag is dan ook. HOE moet ik dat doen?? En… kan dat überhaupt.
Ja, dat kan. De methode die je gebruikt voor extensies is wat exotisch
te noemen. Normaliter maak je een eigen extensie, zet de uit te breiden
extensie als 'dependecy' (zodat jouw extensie na de oorspronkelijke
ingeladen wordt) en volgt eigenlijk dezelfde weg die je voor core
classes neemt:
De complete uitleg is te vinden in [1]
Je kijkt onder aan de uit te breiden class. In class.tslib_fe.php vindt
je daar de regels:
if (defined('TYPO3_MODE') &&
isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['tslib/class.tslib_fe.php']))
{
include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['tslib/class.tslib_fe.php']);
}
In de ext_localconf.php van je extensie zet je vervolgens:
$GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['tslib/class.tslib_fe.php']
= t3lib_extMgm::extPath($_EXTKEY) . 'xclass/class.ux_tslib_fe.php';
TYPO3_MODE kun je vervangen door 'FE' of 'BE' als je uitbreiding alleen
in de frontend of backend nodig is.
Dit vertelt de core dat er in de directory 'xclass' een bestand
'class.ux_tslib_fe.php' te vinden is. Hierin zet je:
class ux_tslib_fe extends tslib_fe {
}
Een paar belangrijke punten:
- tot en met TYPO3 4.7 werkt het alleen bij classes waarin onderaan de
XCLASS include staat
- vanaf TYPO3 6.0 werkt het bij automatisch bij classes, mits je je
uitbreiding via ext_autoload.php aangemeld hebt [2]; de regel in
ext_localconf.php is dan niet meer nodig
- het gaat nooit werken bij classes die 'final' of 'static' zijn (of bij
functies die 'static' zijn)
[1]
http://typo3.org/documentation/document-library/core-documentation/doc_core_api/4.3.2/view/3/9/
[2] http://forge.typo3.org/issues/31893
--
Jigal van Hemert
TYPO3 Core Team member
TYPO3 .... inspiring people to share!
Get involved: typo3.org
More information about the TYPO3-UG-Dutch
mailing list