Jump to content

Ajouter du Js dans le head sans passer par un module


Recommended Posts

Bonjour tous,

 

Je souhaiterais modifier la présentation de product-list.tpl via l'appel d'un plugin JQuery mais j'ignore où et comment appeler le Js dans les templates sources.

 

Pour prendre en main Prestashop (je suis en 1.6), j'ai commencé par créer un module qui ne me pose aucun souci et fonctionne tout bien comme je veux. Ô Joie, poney et confettis.

 

Là où je coince, c'est sur le fichier product-list.tpl (qui n'a pas de lien avec mon module). J'y ai apporté quelques modifs pour y mettre mon Js/Jquery, mais j'ai beau placer mon <script> soit directement dans product-list.tpl, soit directement dans header.tpl juste après {$HOOK_HEADER}, avec le chemin validé de phpStorm (le chemin que je tape correspond bien au rangement de mes fichiers).

 

Parce que en fait le seul endroit où mon Js est appelé et donc fait sa tâche, c'est lorsque que je le rajoute à ma fonction hookDisplayHeader de mon module (ou de n'importe quel module greffer dans le hook header - tested) et en le rajoutant au dossier js du module.

 

J'en conclus donc que mes modifs fonctionnent, et que le problème se situe sur le chemin d'appel de mon fichier Js.

 

Je n'ai pas vu de topic similaire à ma question, j'aimerais en fait savoir où exactement placer mon <script Js> et où ranger ledit fichier dans l'arborescence de Presta ?

 

Alors oui, j'ai l'option garder le module qui contient mon fichier Js en ne le greffant qu'au hook header, mon bon ... niveau rangement pour la suite c'est pas top :/

 

 

+1 karma à ceux qui répondent - recommandé by Earl

 

Merci d'avance, paix et arc en ciel sur vous

Edited by dadidee (see edit history)
Link to comment
Share on other sites

Toi, t'es un magicien toi ...

 

Alors que j'étais en train de remonter la piste vers le FrontController et la classe Media pour voir si un override de tout ça allait améliorer la situation (ou comment chasser les mouches avec bazooka) ; t'arrive et en une ligne de code c'est reglé.

 

Merci beaucoup monsieur.

 

Pourrais-tu m'expliquer pourquoi mon script est correctement appelé lorsque je fais ta méthode (avec ou sans le if) en passant par l'url ? Prestashop n'accepte pas les liens directs de l'arbo dans son head ?

 

Actuellement je suis en local, existe-il un raccourci path qui remplacerait le début d'adresse ?

 

Merci merci !

  • Like 1
Link to comment
Share on other sites

pour du css:
<link rel="stylesheet" type="text/css" href="{$css_dir}mon-css.css" />
pour du js:
<script src="{$js_dir}mon-js.js"></script>

Si veux faire les choses bien, crée un module qui va te faire l'affichage dans le header, ca permettra aussi la concatenation du script et css (PS 1.6):

public function hookDisplayHeader()
	{
  		global $cookie;
			if ($this->page_name == 'category') 
		{
			$this->context->controller->addCSS($this->_path.'css/mon-css.css', 'all');
            $this->context->controller->addJS($this->_path.'js/mon-js.js');
}
}
Edited by Alexandre-KM (see edit history)
Link to comment
Share on other sites

Merci pour ces infos, elles vont bien m'être utiles.

 

Comme je me suis déjà amusée à créer un module, là je voulais garder l'arborescence de Presta et apporter mes modifications directement sur les fichiers de mon thème en ajoutant qql lignes de code dans le product-list.css et un Js dans son template, afin de ne modifier que l'affichage des produits mais en gardant le même fonctionnement natif du fichier.

Et je crains que créer un module juste pour le greffer au head, fasse prendre le risque de se retrouver avec un module degreffé (les erreurs arrivent) et un bug inutile.

 

Après si cela optimise le site et améliore son temps de chargement, je fais !

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...