Zakovu Posted August 10, 2013 Share Posted August 10, 2013 Bonjour, Tout est dans le titre, j'aimerai interdire l'achat à un groupe de client. Il peut consulter le produit mais pas accéder au bouton "Ajouter au Panier". Il y a t'il une procédure dans un Template à rajouter ? Merci d'avance. Link to comment Share on other sites More sharing options...
indesign47 Posted August 10, 2013 Share Posted August 10, 2013 Bonsoir, BO > Clients > Groupes > Afficher les prix (désactivé) > (plus de prix affichés : plus possible de commander) Link to comment Share on other sites More sharing options...
Zakovu Posted August 10, 2013 Author Share Posted August 10, 2013 Merci beaucoup Indesign, mais j'ai besoin de voir les prix affichés pour tous. Link to comment Share on other sites More sharing options...
indesign47 Posted August 11, 2013 Share Posted August 11, 2013 Une idée : If le visiteur fait partie du groupe "limité" them rendre tous les produits Available_for_order =false Le prix est affiché et le bouton ajouté au panier est grisé. else le visiteur ne fait pas partie du groupe "limité" rendre tous les produits Available_for_order = true Le prix est affiché et le bouton ajouté au panier est actif. End if Available_for_order = false > disponible à la vente = non /** @var boolean Product available for order */ public $available_for_order = true; Link to comment Share on other sites More sharing options...
Zakovu Posted August 11, 2013 Author Share Posted August 11, 2013 D'accord je vais tester, j'ai tout juste pu savoir la synthaxe pour identifier le groupe du client connecté via $cookie. Je me mélange un peu les pinceaux pour savoir quel fichier je dois implanter mon code, si c'est le template ou le php (ca m'arrangerai vu que j'ai du mal su le template "smarty". Je vais tester tout ça dans la soirée et te tenir informer. Merci encore de te préoccuper de mon cas Link to comment Share on other sites More sharing options...
indesign47 Posted August 11, 2013 Share Posted August 11, 2013 Quelques infos de plus dans la BD > ps_customer > ps_cutomer_group > id_customer id_group Je me mélange un peu les pinceaux pour savoir quel fichier je dois implanter mon code, si c'est le template ou le php dans un fichier PHP • Les classes PHP > dossier classes • Les controller > front > admin > dossier controller pour les groupes > classes group.php pour les customer > classes customer.php Je pencherai pour ma part pour un admin ou front controller Link to comment Share on other sites More sharing options...
Zakovu Posted August 11, 2013 Author Share Posted August 11, 2013 dans un fichier PHP• Les classes PHP > dossier classes • Les controller > front > admin > dossier controller pour les groupes > classes group.php pour les customer > classes customer.php Je pencherai pour ma part pour un admin ou front controller Je te mentirai si je te dis que j'ai compris ces explications... ^^ Mais la je suis un peu paumé pour savoir dans quel fichier et quel module concerne mes modifications Link to comment Share on other sites More sharing options...
indesign47 Posted August 11, 2013 Share Posted August 11, 2013 Hey Zakovu, C'était pourtant pour tenter de t'éclairer sur la structure de PrestaShop et surtout pour que tu saches où se trouvent les fichiers php dans l'arborescence. donc les classes sont dans le dossier classes les controller dans le dossier controller (front et admin) Le fichier a modifié je ne l'ai pas cherché. Je "pense" que c'est un controller d'admin Pour le reste, je te propose des idées, des pistes, des conseils. Une aide, enfin j'espère... Link to comment Share on other sites More sharing options...
Zakovu Posted August 11, 2013 Author Share Posted August 11, 2013 Oui bien sur, j'apprécie beaucoup ton aide, je ne suis pas en train de raler hein ^^ Je comprend mieux où tu veux en venir dans ses dossiers (là j'étais en train de chercher désespérément dans les modules...) dans AdminCustomersController.php je vois des choses intéressantes. Je vais me vider un peu l'esprit avant de plonger dedans ^^ Link to comment Share on other sites More sharing options...
indesign47 Posted August 11, 2013 Share Posted August 11, 2013 Le "hey" est tout à fait amical. Un dimanche... ou tout autre jour de la semaine > Pas de pression. Moi aussi je vais m'aérer. a + Link to comment Share on other sites More sharing options...
Zakovu Posted August 11, 2013 Author Share Posted August 11, 2013 Voici l'algorithme qui correspondrait; global $cookie; //On récupère la méthode pour trouver les groupes d'un client $groups=Customer::getGroupsStatic($cookie->id_customer); //On teste chaque résultat du tableau foreach($groups as $group) { //Si le client appartient au groupe désiré (ici 3) if ($group==3) { //Bouton AJOUTER AU PANIER ok } } Cependant, dans tout ses fichiers, je n'ai pas réussi a trouver l'instruction présent du bouton ajouter au panier. 1 Link to comment Share on other sites More sharing options...
indesign47 Posted August 11, 2013 Share Posted August 11, 2013 Regardes le fichier product-list.tpl dans le dossier themes > default Il contient available_for_order et add_to_cart Link to comment Share on other sites More sharing options...
Zakovu Posted August 11, 2013 Author Share Posted August 11, 2013 Alors, si je comprend bien, les modifications sont a réaliser sur product-list.tpl, j'ai pu voir où était situé les instructions pour le fameux bouton. En revanche, en quoi sert les fichiers des controllers ? J'ai du mal à comprendre (désolé, j'ai du mal à tout comprendre sur le tas ^^) Maintenant la difficulté, c'est de convertir le code php de la condition de groupe en langage de templating... je vais pas mal galéré Link to comment Share on other sites More sharing options...
zaar Posted January 19, 2014 Share Posted January 19, 2014 Bonjour je ne sais pas si c'est d'actualités mais j'ai réussi a cacher le bouton ajouter au panier si l'internaute ne fait pas partie d'un certain groupe.(le prix de l'article reste affiché) Si ça vous interresse je peux vous donner la démarche. Link to comment Share on other sites More sharing options...
Zakovu Posted January 19, 2014 Author Share Posted January 19, 2014 Bonjour, J'ai recruté un prestataire pour y remédier comme je n'avais aucune réponse, mais je pense que ça peut intéressée les personnes qui auront le même soucis. Et ça me permettrait également de savoir comment faire pour une prochaine fois Link to comment Share on other sites More sharing options...
zaar Posted January 19, 2014 Share Posted January 19, 2014 (edited) Pas de soucis: Dans le fichier product.tpl j'ai donc ajouté : {if !$mon_groupe} //on affiche rien du tout ou du texte {else} ///ici le code du bouon {if (!$allow_oosp && $product->quantity <= 0) OR !$product->available_for_order OR (isset($restricted_country_mode) AND $restricted_country_mode) OR $PS_CATALOG_MODE} <span class="exclusive"> <span></span> {l s='Add to cart'} </span> {else} <p id="add_to_cart" class="buttons_bottom_block"> <a class="exclusive button btn_add_cart" href="javascript:document.getElementById('add2cartbtn').click();"> <span>{l s='Add to cart'} </span></a> <input id="add2cartbtn" type="submit" name="Submit" value="{l s='Add to cart'}" /> <!--show when "This product is no longer in stock with those attributes but is available with others"--> <span class="exclusive" style="display:none;"> <span></span> {l s='Add to cart'} </span> </p> {/if} <!-- quantity wanted --> <p id="quantity_wanted_p"{if (!$allow_oosp && $product->quantity <= 0) OR $virtual OR !$product->available_for_order OR $PS_CATALOG_MODE} style="display: none;"{/if}> <input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}{if $product->minimal_quantity > 1}{$product->minimal_quantity}{else}1{/if}{/if}" size="2" maxlength="3" {if $product->minimal_quantity > 1}onkeyup="checkMinimalQuantity({$product->minimal_quantity});"{/if} /> <label>{l s='Quantity:'}</label> </p> {/if} ///fin du if pour ma condition de groupe (notez que j'ai volontairement choisi de cacher aussi les quantités de produits et pas seulement le bouton aajouter au panier. Ensuite il faut créer la variable $mon_groupe dans ProductController.php //On assigne la variable $cookie global $cookie; //On récupère la méthode pour trouver les groupes d'un client $groups=Customer::getGroupsStatic($cookie->id_customer); //On teste chaque résultat du tableau foreach($groups as $group) { //Si le client appartient au groupe désiré (ici 4) if ($group==4) { //On créé la variable smarty qui servira de test self::$smarty->assign('mon_groupe','1'); //On stoppe la boucle, plus besoin de continuer break; } } à insérer juste après : public function init() { Ce code n'est pas de moi je l'ai trouvé dans un autre topic sur le forum mais je n'arrive pas à mettre la main dessus, les remerciements devront aller à cet auteur. Notez qaue je cache le bouton ajouter au panier uniqument dans la fiche produit (dans mon casil n'y a pas le bouton dans product_list ni en page d'accueil car il faut un minimum de 10 produits ce qui désactive ce bouton) Mais en appliquant cette méthode cela devrait être relativment aisé de le reproduire ailleurs (ce que j'ai fait par exemple dans le my_account.tpl pour afficher un texte selon le groupe) Edited January 19, 2014 by zaar (see edit history) Link to comment Share on other sites More sharing options...
zaar Posted January 19, 2014 Share Posted January 19, 2014 Attention l'id de mon groupe est 4, il faudra changer cela selon votre config ! //On assigne la variable $cookie global $cookie; //On récupère la méthode pour trouver les groupes d'un client $groups=Customer::getGroupsStatic($cookie->id_customer); //On teste chaque résultat du tableau foreach($groups as $group) { //Si le client appartient au groupe désiré (ici 4) if ($group==4) { //On créé la variable smarty qui servira de test self::$smarty->assign('mon_groupe','1'); //On stoppe la boucle, plus besoin de continuer break; } } 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