[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