em72 Posted August 19, 2012 Share Posted August 19, 2012 (edited) Bonjour, Je suis en train de réaliser un module dans lequel le contenu est différent selon la catégorie. J'aimerais pouvoir récupérer l'id de la catégorie en cours... Je ne peux en effet pas faire de $_GET['id_category'] puisque l'url rewriting est utilisé... Comment faire? En vous remerciant PS: Le top ça serait de pouvoir aussi récupérer la catégorie par défaut d'un produit... Edited August 27, 2012 by em72 (see edit history) Link to comment Share on other sites More sharing options...
franckm1000 Posted August 19, 2012 Share Posted August 19, 2012 (edited) Le fait d'utiliser le rewrite n'empêche pas de récupérer les variables en GET. Pour la catégorie par défaut, regarder dans la classe product si il y a une fontion pour ça sinon tu peux faire un truc comme ça: Db::getInstance()->ExecuteS(select * from '._DB_PREFIX_.'product where id_product='.$product); où $product est l'id de ton produit préalablement récupéré Edited August 19, 2012 by franckm1000 (see edit history) Link to comment Share on other sites More sharing options...
SiteProjet Posted August 19, 2012 Share Posted August 19, 2012 Bonjour. Pour exécuter un bloc de code si nous sommes sur la catéorie avec l'ID souhaité, tout simplement : {if $category->id == 'X'} [i]CODE[/i] {/if} Où X est l'ID souhaité. Cela marche à la fois sur la page de produit ou sur la page de catégorie. Pour avoir la catégorie parente (dans le cas où il y a plusieurs niveau de profondeur), c'est : $category->id_parent Il y a également moyen de connaître le niveau de profondeur ou de tester en fonction du nom. N'hésitez pas à poster ici la façon dont vous avez procédé afin que cela puisse servir à d'autres 1 Link to comment Share on other sites More sharing options...
franckm1000 Posted August 19, 2012 Share Posted August 19, 2012 Je ne pense pas que son souci se situe dans le fichier TPL mais plutôt dans la partie PHP du module. Link to comment Share on other sites More sharing options...
SiteProjet Posted August 19, 2012 Share Posted August 19, 2012 "un module dans lequel le contenu est différent selon la catégorie" Ce serait ici tellement simple d'utiliser la puissance de smarty. Mais en effet Franck, je réponds peut-être à côté de la plaque. Link to comment Share on other sites More sharing options...
franckm1000 Posted August 19, 2012 Share Posted August 19, 2012 Non non j'ai pas dis que ce que tu répondais n'était pas correct, il me semblait simplement qu'il cherchait à obtenir des variables côté PHP. Link to comment Share on other sites More sharing options...
jmx Posted August 26, 2012 Share Posted August 26, 2012 Bonjour, du côté PHP en effet, moi c'est ce que je recherche en tout cas. J'ai monmodule.php qui recupere des infos dans une table et si la page en cours est une page produit exemple /prestashop/product.php?id_product=1065 je veux récupéré l'id de la catégorie ou sous catégorie actuellement parcourue. Dans ma fonction get_info($block, $type){ global $cookie; $id_lang = $cookie->id_lang; $this_category = category->id; (pour reçupérer la catégorie en cours ? c'est ça) [code....] } suis-je dans la bonne direction ? Link to comment Share on other sites More sharing options...
franckm1000 Posted August 26, 2012 Share Posted August 26, 2012 (edited) Tu écris un module, c'est ça ? Tu peux utiliser un truc du type si tu veux récupérer la catégorie PAR DEFAUT du produit: if(isset(Tools::getValue("id_product")) { $produit=Tools::getValue("id_product"); $categorie=Db::getInstance()->ExecuteS('select * from '._DB_PREFIX_.'product where id_product='.$produit); echo $categorie['id_category_default']; } J'ai pas testé mais je pense que ça doit marcher... Edited August 26, 2012 by franckm1000 (see edit history) Link to comment Share on other sites More sharing options...
jmx Posted August 26, 2012 Share Posted August 26, 2012 Je comprends que tout le monde souhaite récupéré l'id catégorie du produit mais moi je souhaite récupéré l'id_catégorie de la page en cours. Si un visiteur navigue le site dans la categorie /prestashop/ballons-rond/ballons-bleus/product.php?id_product=1065 je souhaite recupéré l'id de la catégorie /ballons-bleus/ sachant que le ballon rond et bleu appartien à la catégorie ballons et ballons bleus ce n'est pas la catégorie dans laquelle le ballon est inscrit qui m'intéresse mais la categorie dans laquelle le visiteur se situe. Je pense que c'est plutôt à ça $cookie->id_categorie, je continue mes recherches. Est-ce que ce serait interdit par la loi ? Link to comment Share on other sites More sharing options...
jmx Posted August 26, 2012 Share Posted August 26, 2012 (edited) Je pense que l'idée de Siteprojet correspond au besoin mais l'idée de placer des conditions dans le .tpl est moins dynamique que de le placer dans le PHP. Le .tpl sert a faire du html pas de la programmation il me semble. Utiliser smarty pour faire des fonctions dans .tpl doit être plus gourmand que dans le .php selon ma logique. De la a surcharger une classe pour afficher passer l'id de la catégorie en cours pourrait être une autre solution, j'avoue. Mais si il faut rechanger les classes a chaque que prestashop change de version on en finirait pas. Edited August 26, 2012 by Julien Mayeux (see edit history) Link to comment Share on other sites More sharing options...
SiteProjet Posted August 26, 2012 Share Posted August 26, 2012 Bonjour. Il n'y aura quasiment aucune différence de performance visible pour une opération aussi petite. Cela tient du centième de seconde. Vous pouvez aussi tout simplement parser l'URL avec PHP, c'est atypique, mais bien plus simple. Ca marche aussi en Javascript remarquez... Link to comment Share on other sites More sharing options...
jmx Posted August 26, 2012 Share Posted August 26, 2012 (edited) je m'attendais a ça bizarre, le soucis c'est que l'id category en cours j'en ai besoin dans mon php pour compiler un array() donc l'url est la seule solution rien de tres dynamique non plus puisque c'est l'id dont j'ai besoin dans la fiche produit. I hate smarty. Merci de ta réponse SiteProjet, je vais finir par trouver une solution. Edited August 26, 2012 by Julien Mayeux (see edit history) Link to comment Share on other sites More sharing options...
franckm1000 Posted August 26, 2012 Share Posted August 26, 2012 (edited) Ce type d'url: /prestashop/ballons-rond/ballons-bleus/product.php?id_product=1065 n'existe pas. Soit vous naviguez avec des urls rewritées dans quel cas le produit s'affiche ainsi: /prestashop/ballons-rond/ballons-bleus/mon_produit_ré_écrit soit sans url rewritée: http://www.monsite.com/product.php?id_product=1065 Smarty n'est effectivement là que pour afficher des variables mais l'avantage est que quand vous chargez une page elle contient une multitude de variables avec peut être celle qui vous convient. dans une page produi, pour récupérer la catégorie il suffit de faire: {$category->id_category} De la a surcharger une classe pour afficher passer l'id de la catégorie en cours pourrait être une autre solution, j'avoue. Mais si il faut rechanger les classes a chaque que prestashop change de version on en finirait pas. Le dossier override sert justement à ça, overrider une classe sans toucher au fichier original. utilisez {debug} dans votre fichier product.tpl pour lister l'ensemble des variables chargées avec la page. Edited August 26, 2012 by franckm1000 (see edit history) 1 Link to comment Share on other sites More sharing options...
jmx Posted August 26, 2012 Share Posted August 26, 2012 Ça commence bien “Smarty est un moteur de template pour le langage PHP. Il est rapide et permet la gestion des caches. Il facilite la séparation entre la logique applicative et la présentation.” Wikipedia Link to comment Share on other sites More sharing options...
jmx Posted August 26, 2012 Share Posted August 26, 2012 (edited) Il va falloir que je surcharge une classe pour récupérer l'id de la catégorie en cours, je devrais augmenter le devis de mon projet. L'URL c'est ça ; ça peut être n'importe quoi d'ailleurs, demain la catégorie change d'orthographe c'est pas un soucis et c'est bien pour ça qu'il ne faut pas passer par smarty pour faire de la logique un peu poussée sinon ça veut dire que tu ne peux meme plus utiliser le cache de smarty dans la config de prestashop. Je vais me plonger dans la surcharge de la classe et je vous tiens au courant. Edited August 26, 2012 by Julien Mayeux (see edit history) Link to comment Share on other sites More sharing options...
franckm1000 Posted August 26, 2012 Share Posted August 26, 2012 Mais je vous ai répondu ! {$category->id_category} Link to comment Share on other sites More sharing options...
jmx Posted August 26, 2012 Share Posted August 26, 2012 (edited) Est-ce que vous comprenez que j'en ai besoin dans le fichier PHP de mon modules est pas dans le .tpl , l'id de la catégorie en cours me permet de compiler un array() en PHP exemple : for($i=0; $i<$count; $i++) $this->update_qty($ballon[$i]['id']); foreach($ballon as $key => $value){ $this_category = $_GET['id_category']; $current_category = ???????????? Edited August 29, 2012 by Julien Mayeux (see edit history) Link to comment Share on other sites More sharing options...
jmx Posted August 26, 2012 Share Posted August 26, 2012 Comment puis-je utiliser {$category->id_category} puisque je ne programme dans le .tpl de smarty mais dans le PHP du module Link to comment Share on other sites More sharing options...
SiteProjet Posted August 26, 2012 Share Posted August 26, 2012 C'est moi qui vous ai amené vers smarty. Dès le départ franck vous a orienté vers le PHP. Ne confondez pas nos interventions. Du reste franck est bien plus compétent que moi concernant ce sujet Donc pour vous répondre clairement, pas d'utilisation de variables de smarty de cette façon côté PHP Link to comment Share on other sites More sharing options...
jmx Posted August 26, 2012 Share Posted August 26, 2012 (edited) Merci bien. Savez-vous si je peux récupérer cette variable dans une classe smarty donc dans la couche inférieure du module ? Comme ça peut être que j'arriverais à trouver une autre solution au probleme du catalogue qui pour moi lorsque je navigue dans les catégories du produit , si j'arrive sur la page produit, le bloc catégorie m'affiche les catégories comme si j'était arrive sur cette fiche produit en utilisant la catégorie par défault du produit au lieu de garder le bloc catégorie dans la catégorie en cours exemple : ballon bleu num1 inscrit dans les catégories /ballons /ballons ronds/ballons bleus (default) et dans les catégories ballons football / ballons footballronds / ballons football bleus si je passe par la catégorie football, lorsque je suis dans la page produit, le bloc catégorie croit que je suis passé par /ballons/ballons ronds/ballons bleus et non pas par /ballons football/etc... ça aussi c'est un gros soucis de prestashop je trouve. Je ne connais pas de solutions pour ça. Est-ce que c'est aussi un cas d'utilisation inapropriée de Prestashop ? Si la réponse est oui alors je ne comprends pas pourquoi le gestionnaire du catalogue a le droit d'inscrire 1 produit dans plusieurs catégories parentes et sous catégories. Edited August 26, 2012 by Julien Mayeux (see edit history) Link to comment Share on other sites More sharing options...
jmx Posted August 26, 2012 Share Posted August 26, 2012 (edited) Je vous le donne en mille : la classe Tools : getpath() ça devrait bien m'aider... Edited August 26, 2012 by Julien Mayeux (see edit history) Link to comment Share on other sites More sharing options...
jmx Posted August 26, 2012 Share Posted August 26, 2012 je partage, c'est pour une distri 1.3.1.1, je sais pas si c'est résolu dans les autres version de prestashop mais vous pouvez utiliser : $cookie->last_visited_category; 1 Link to comment Share on other sites More sharing options...
SiteProjet Posted August 27, 2012 Share Posted August 27, 2012 Merci pour le partage de l'astuce Julien. Pense à mettre ton topic en résolu Link to comment Share on other sites More sharing options...
em72 Posted August 27, 2012 Author Share Posted August 27, 2012 Merci pour toutes vos réponses! Link to comment Share on other sites More sharing options...
ChDUP Posted October 9, 2013 Share Posted October 9, 2013 (edited) à supprimer Edited October 9, 2013 by ChDUP (see edit history) Link to comment Share on other sites More sharing options...
b3drik Posted July 2, 2014 Share Posted July 2, 2014 je partage, c'est pour une distri 1.3.1.1, je sais pas si c'est résolu dans les autres version de prestashop mais vous pouvez utiliser : $cookie->last_visited_category; Ohlala, merci pour l'astuce! Link to comment Share on other sites More sharing options...
SiteProjet Posted July 3, 2014 Share Posted July 3, 2014 C'est toujours un plaisir d'avoir des retours, même pour dire merci plusieurs mois après. Ca peut égayer une journée Link to comment Share on other sites More sharing options...
b3drik Posted July 3, 2014 Share Posted July 3, 2014 C'est toujours un plaisir d'avoir des retours, même pour dire merci plusieurs mois après. Ca peut égayer une journée Ca fait toujours plaisir de trouver une astuce qui marche même si elle date de plusieurs mois. Ca égaye également une journée 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