corentinpardo Posted April 25, 2019 Share Posted April 25, 2019 (edited) Bonjour, Sur notre site nous vendons plusieurs types de produit, parmi lesquels des moteurs pour volet. J'ai développer un petit outil (vanilla JS/HTML) pour aider les clients à choisir la puissance moteur dont ils ont besoin. Maintenant, j'aimerais intégré mon outil dans le modèle de page catégorie, en dessous de la description, mais uniquement quand la catégorie est égale à Moteur ou une subCatégorie de Moteur. Ordinairement je travail plutôt avec des langages frontend mais malheureusement je suis vraiment débutant sur PHP, je ne connais pas du tout PrestaShop et son architecture, mais je sais que dans l'absolue ce que je veux faire n'est pas compliqué à mettre en place. Donc je voulais votre avis sur la marche à suivre pour l'intégration de mon élément. Nous somme sur une version Presta 1.7.5.0 utilisant le thème ZOneTheme et je ne sais pas si c'est commun à tous les presta donc je le précise, le moteur de template semble être Smarty et le framework PHP Symphony. Idéalement je fais un fichier calculateur.php (ou calculateur.tpl / calculateur.html ?) que je ne sais pas où ranger. Dedans, je met mon html et mon JS.... Ensuite j'appel l'extrait avec include, (dans le controller ?) le tout enrobé d'une condition if (categorie = 'moteur' ) en gros. Bref, je ne suis sur de rien! Un grand merci par avance pour vos éventuels éclaircissements. Edited April 25, 2019 by corentinpardo (see edit history) Link to comment Share on other sites More sharing options...
corentinpardo Posted April 27, 2019 Author Share Posted April 27, 2019 personne? Link to comment Share on other sites More sharing options...
cyssoo Posted April 28, 2019 Share Posted April 28, 2019 Bonjour, Vous devriez pouvoir gérer cela entièrement depuis la vue, étant donné que ça n'est "que" du JS/HTML. Avec quelques conditions Smarty ça peut le faire. Privilégiez le tpl, ça vous donnera la main sur des variables utiles. Tant que vous travaillez sur de l'affichage, c'est de la vue, donc dans le thème (ou child theme). Dans le head.tpl, en utilisant une condition sur $page.page_name et sur l'id de la catégorie, vous devriez parvenir à inclure votre script JS, ne restera qu'à inclure votre tpl selon l'emplacement désiré, toujours avec quelques conditions Smarty. https://www.team-ever.com/prestashop-1-7-liste-des-variables-smarty/#page 1 Link to comment Share on other sites More sharing options...
corentinpardo Posted April 28, 2019 Author Share Posted April 28, 2019 Super merci ça ressemble un peu au .liquid de shopify, que je connais un peu ça devrait bien se passer! Par contre quand j'ai trouver le fichier de mes catégories et que j'y ajoute une classe css ou écris un bout de texte, rien ne s'affiche sur ma page catégorie. J'en conclus que je ne suis pas au bon endroit, pourtant tout correspond en terme de structure des div ou de leurs noms de classe. Je suis sur un fichier dans cet arbo: themes/ZOneTheme/templates/catalog/listing/category.tpl Est ce que c'est normal ? Link to comment Share on other sites More sharing options...
cyssoo Posted April 28, 2019 Share Posted April 28, 2019 La recompilation est bien forcée ou s'actualise via les performances de Prestashop ? Ce genre de choses c'est souvent le cache 1 Link to comment Share on other sites More sharing options...
corentinpardo Posted April 28, 2019 Author Share Posted April 28, 2019 Je ne sais pas, comment puis je vérifier cette info? Si ça vient du cache le délai est très long car j'ai fais une toute petite modif dans la vue, et elle n'est toujours pas effective une heure après. Link to comment Share on other sites More sharing options...
cyssoo Posted April 28, 2019 Share Posted April 28, 2019 Via "Paramètres avancés" puis "Performances". Il faut recompiler à chaque fois que les fichiers ont été mis à jour, et bien cliquer en haut à droite sur "Vider le cache" 1 Link to comment Share on other sites More sharing options...
corentinpardo Posted April 29, 2019 Author Share Posted April 29, 2019 Oui, ça marche merci beaucoup! Va savoir pourquoi $page.page_name vaut 'category' donc j'utilise $category.name et le filtre | strstr ne fonctionnait pas donc j'ai fais: {if stripos($category.name, "moteur") !== false} {include file='catalog/_partials/miniatures/nmcalc.tpl'} {/if} Et là tout fonctionne, c'est impeccable merci encore. 1 Link to comment Share on other sites More sharing options...
cyssoo Posted April 29, 2019 Share Posted April 29, 2019 3 minutes ago, corentinpardo said: pourquoi $page.page_name vaut 'category' $page.page_name ressort le type de controller en fait. Cela sera utile pour appeler le script dans le head ou le footer par exemple. Après, si on est dans category.tpl, ben le controller est forcément category, les conditions sont donc différentes. Il est je pense préférable de tester l'id de la catégorie plutôt que son nom, en cas de multilingue ou de changement de nom de catégorie. Le pire ennemi d'un site web, c'est son utilisateur 😛 1 Link to comment Share on other sites More sharing options...
corentinpardo Posted April 29, 2019 Author Share Posted April 29, 2019 Oui tu as raison, mais nous n'avons pas de multi langue et nous n'en ferons probablement jamais, du reste cette méthode me permet de cibler à la fois la catégorie parente mais également tout ces enfants qui s’appellent également Moteur brand1 , Moteur brand2 etc avec très peu de code. Et puis maintenant que ça marche j'ai tout le loisir d'optimiser si nécessaire. 1 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