Excellente idée!
Après une rapide recherche à coup de [tt]fgrep[/tt] dans mon install de MODx, je suis tombé sur le bout de code suivant extrait de la fonction [tt]efRegisterStartupBlock[/tt] de [tt]eForm[/tt]:
if ( $type=='css' )
$modx->regClientCSS($src);
elseif ( $type == 'javascript' )
$modx->regClientStartupScript($src);
else
$modx->regClientStartupHTMLBlock($src);
Visiblement, il existe des méthodes [tt]reg
XXX[/tt] pour enregistrer les éléments générés dynamiquement. En cherchant dans la
doc et sur le
wiki j’ai trouvé:
- [tt]regClientCSS[/tt] qui permet d’inclure un élément <style> dans l’en-tête (d’après les docs) ou un lien (<link>) vers une feuille de style (d’après les sources)
- [tt]regClientStartupScript[/tt] qui permet d’inclure un élément <script> dans l’en-tête (soit en indiquant un fichier [tt].js[/tt], soit en fournissant directement le code JavaScript)
- [tt]regClientScript[/tt] comme le précédent, mais cette fois l’élément <script> est inclus à la fin de fichier XHTML
Malheureusement, pas de doc sur [tt]regClientStartupHTMLBlock[/tt]. Mais en examinant les
sources de MODx, on découvre qu’en fait [tt]regClientStartupHTMLBlock[/tt] est juste un wrapper autour de [tt]regClientStartupScript[/tt]:
# Registers Client-side Startup HTML block
function regClientStartupHTMLBlock($html) {
$this->regClientStartupScript($html, true);
}
J’en conclus qu’on peut utiliser [tt]regClientStartupHTMLBlock[/tt] pour inclure n’importe quel type d’élément dans l’en-tête. Aller, demain je teste ça!
En tous cas, merci de m’avoir montré la piste.
Sylvain.