Appeler un plugin en USER INT dans un plugin en USER
De Typo3 CMS / Documentation Typo3 / Support Typo3.
Dans le but de gérer correctement le cache de Typo3, on peut être amené à avoir une partie en cache et une autre sans cache. Dans son livre "Extension Development", Dimitry Dulepov expose comment faire cela pour un même plugin.
$content = 'My USER plugin content'; $cObj = t3lib_div::makeInstance('tslib_cObj'); $cObj->start(array()); $conf = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_myext_pi2.']; $conf['includeLibs']='EXT:myext/pi2/class.tx_myext_pi2.php'; $content.= $cObj->cObjGetSingle('USER_INT',$conf); $content.= 'Rest of my USER plugin content';
Notre problème maintenant c'est lorsque qu'une extension en USER fait appel à une extension en USER_INT (via un makeInstance), en effet le contenu rendu sera quoi qu'il arrive caché. Ce qui peut être génant dans le cas d'un appel aux nombre de commentaires (USER_INT) en bas d'une news (USER). Nous nous sommes donc inspirer du code de Dimitry Dulepov, mais celui-ci nous oblige à appeler la fonction main du plugin de commentaire et pas la fonction qui nous donne le nombre de commentaires.
Pour cela nous utilisons la même méthode mais passons par une configuration Typoscript différente pour appeler une userFunc et un passage de paramètres.
$cObj = t3lib_div::makeInstance('tslib_cObj'); $cObj->start(array()); $conf = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_myext_pi1.']; $conf['includeLibs']='EXT:myext/pi1/class.tx_myext_pi1.php'; $conf['userFunc']='tx_myext_pi1->myFunction'; $conf['param1']='tt_news'; $conf['param2']=$row['uid']; $content.= $cObj->cObjGetSingle('USER_INT',$conf);
Exemple de fonction myFunction :
function myFunction($content,$conf) { echo $conf['param1']; echo $conf['param2']; }
donne :
tt_news
18
