SnoT Posted June 7, 2010 Share Posted June 7, 2010 Bonjour tout le monde,je cherche désespérément le moyen d'ajouter un script JS dans la balise HEAD de ma page ! A partir de mon module.En gros j'aimerais avoir : * ne fait pas attention au "s" en moins de script, si je le met ca passe pas J'ai besoin de le faire proprement mais ne trouve pas de moyen pour le faire.J'ai lu que ça se passait avec la variable globale js_files qui est un array mais quand j'ajoute un élément dedans, il n'est pas ajouté dans mon HEAD.Ensuite j'ai lu qu'on ne pouvait ajouter un script JS que dans un HookTop à l'intérieur d'un module... C'est embêtant car le module qui je crée je l'intègre via un autre Hook en plein milieu d'une page, je ne peux donc pas l'intégrer dans le HookTop.Quelqu'un aurait-il une solution ?Merci d'avance Link to comment Share on other sites More sharing options...
liandri Posted June 8, 2010 Share Posted June 8, 2010 Bonjour,Utilise plutôt le hookHeader, qui placera ta déclaration entre <head></head>Maintenant ça c'est la théorie et par convention il faut respecter un maximum de déclaration de script en head.Tu te feras pas taper sur les doigts non plus si cette déclaration se situe n'importe où dans le code.A+ Link to comment Share on other sites More sharing options...
Yoya Posted June 9, 2010 Share Posted June 9, 2010 Hello, J'ai lu que ça se passait avec la variable globale js_files qui est un array mais quand j'ajoute un élément dedans, il n'est pas ajouté dans mon HEAD. C'est bien cette piste qu'il faut creuser pourtant, car elle fonctionne parfaitement.A bientot,cdlt,Pierre. Link to comment Share on other sites More sharing options...
Roopix Posted June 9, 2010 Share Posted June 9, 2010 Hello, J'ai lu que ça se passait avec la variable globale js_files qui est un array mais quand j'ajoute un élément dedans, il n'est pas ajouté dans mon HEAD. C'est bien cette piste qu'il faut creuser pourtant, car elle fonctionne parfaitement.A bientot,cdlt,Pierre. Et dans quel sens la creuser ? A quelle moment et comment y accéder ?Merci Link to comment Share on other sites More sharing options...
Atch Posted June 9, 2010 Share Posted June 9, 2010 Salut,Inspirez vous du blocksearch et regardez du coté du fichier blocksearch.php et du header.tplJ'ai tout dis V++Atch Link to comment Share on other sites More sharing options...
Cédric Posted June 9, 2010 Share Posted June 9, 2010 il faut plusieurs conditions.1)il faut ajouter un hookHeader, pour être sur que le module s'initialisera avant l'écriture du head. function hookHeader($params){ return ""; } et ajouter dans: function install() { $this->registerHook('header'); } de ton module.2) dans le constructeur du module, ajouter: function __construct(){ global $js_files; $js_path = 'chemin du js'; if(!in_array($js_path, $js_files) $js_files[] = $js_path; (...) } Et ça devrait être bon.Si votre module est déjà installé, réinstallez-le ou greffer-le au hook header à la main.@++ Link to comment Share on other sites More sharing options...
vla Posted March 23, 2011 Share Posted March 23, 2011 Bonjour,Je réouvre ce post parce que j'ai une question à propos de la global $js_files ?La fonction in_array() attend un tableau en deuxième paramètres, mais ce n'en est pas un.D'ailleurs cette globale ne contient rien, d'où vient elle ?Merci Link to comment Share on other sites More sharing options...
Cédric Posted March 23, 2011 Share Posted March 23, 2011 Salut,en fait $js_files est instanciée par les diverses pages php de Presta (si je ne dis pas de bêtises), et par ailleurs, il y en a quelques unes pour lesquelles ça ne fonctionne pas... parce qu'elles sont déclarées trop tard (je crois, car ça fait un moment que je n'utilise plus cela).bref, si tu observes dans header.php, tu pourras voir que cette variable est bien un tableau...Mais le plus propre est sans doute d'utiliser: function hookHeader($params){ return "[removed][removed]"; } function install() { $this->registerHook('header'); } Car de toutes les façons, il faut utiliser le hookHeader pour que l'inclusion du js dans $js_files intervienne avant l'écriture du header donc ça revient au même. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now