Jump to content

Ajouter une inclusion de script JS dans le head du HTML


Recommended Posts

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

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

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

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

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

  • 9 months later...

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...