Jump to content

Faire un extrait et l'inclure (pour le modèle des catégories)


Recommended Posts

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 by corentinpardo (see edit history)

Share this post


Link to post
Share on other sites

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

  • Thanks 1

Share this post


Link to post
Share on other sites

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 ?

Share this post


Link to post
Share on other sites

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"

  • Like 1

Share this post


Link to post
Share on other sites

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.

  • Like 1

Share this post


Link to post
Share on other sites
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 😛 

 

  • Like 1

Share this post


Link to post
Share on other sites

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.

  • Like 1

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More