lionhell Posted October 9, 2009 Share Posted October 9, 2009 Bonjour !J'aimerais savoir si comme dans le cms xoops (oui, j'en parle beaucoup car j'en arrive depuis peu ...) il y a moyen d'affecter aux blocs des permissions de lecture selon les groupes de clients ?Autre formulation, est-il possible d'allouer aux groupes de clients des permissions différentes pour voir/masquer les blocs en fonction du groupe (un peu comme employés/permissions) ?Je n'ai rien trouvé sur les forums ... Link to comment Share on other sites More sharing options...
lionhell Posted October 23, 2009 Author Share Posted October 23, 2009 Personne n'a une idée ??? Au moins une piste à me donner ... Link to comment Share on other sites More sharing options...
Yoya Posted October 23, 2009 Share Posted October 23, 2009 Et bien, d'apres mes connaissances en BO Presta, je n'ai vu nul part le moyen de spécifier si un block est visible ou pas à un client.Après, et tant donnée la notion de group client, c'est effectivement possible par programmation de dire si un module s'affiche ou pas en fonction de l'appertenance.Sa resterait de la 'bidouille' et pas une réelle gestion de droit, Prestashop n'étant pas encore prévu pour.Cdlt,Pierre. Link to comment Share on other sites More sharing options...
lionhell Posted October 23, 2009 Author Share Posted October 23, 2009 Ben oui je sais, hélas.Je commence à voir comment cela fonctionne.Il me semble que pour bidouiller, il faut modifier le hook du bloc concerné, en faisant un test d'appartenance à un groupe à ce niveau. Link to comment Share on other sites More sharing options...
Yoya Posted October 23, 2009 Share Posted October 23, 2009 Tu peu t'inspirer de çà si sa te va (je le repete, c'est une bidouille )Par exemple dans le module blocklanguages.php (affichage des ptits drapeaux qui vont bien), tu ne veut que ce module ne soit affiché que pour les clients du groupe id 2 : A ajouter dans function hookTop($params) global $cookie; $tmpCust = new Customer(intval($cookie->id_customer)); if(!$tmpCust->isMemberOfGroup(2)) return false; Au final çà donne : function hookTop($params) { global $smarty; // n'afficher que si le client appartient au group_id 2 global $cookie; $tmpCust = new Customer(intval($cookie->id_customer)); if(!$tmpCust->isMemberOfGroup(2)) return false; $languages = Language::getLanguages(); if (!sizeof($languages)) return ''; $smarty->assign('languages', $languages); return $this->display(__FILE__, 'blocklanguages.tpl'); } Voili voilou.Cdlt,Pierre. Link to comment Share on other sites More sharing options...
lionhell Posted October 23, 2009 Author Share Posted October 23, 2009 Extra ! Merci !J'en étais arrivé la même conclusion, modification du hook concerné (pas mal pour un débutant !).Je me compliquais un peu plus la vie puisque je voulais afficher le .tpl ( return $this->display( __FILE__, 'blocklanguages.tpl' ); ) en fonction de ce test d'appartenance. Le test en début est mieux !Je me creusais les méninges pour débusquer ce groupe d'appartenance, mais maintenant tout fonctionne !!!Encore merci ! Link to comment Share on other sites More sharing options...
mrgniarf Posted November 30, 2009 Share Posted November 30, 2009 Il y aurai pas moyen de faire une classe et de gérer ça avec smarty plutôt ? (comme {if logged}... {/if}Genre {if usergroupelogged="2"} ... {/if}Comme ça on peut l'applique a ce que l'on veux comme élément.Je suggère la théorie, après je suis pas assez dév pour le concrétiser.... Link to comment Share on other sites More sharing options...
Tibo51 Posted February 27, 2010 Share Posted February 27, 2010 Un grand merci à lionhell et yoya911, grâce ce ce bout de code, il est possible de n'afficher certains blocs qu'aux utilisateur enregistrésPour que seuls les utilisateurs enregistrés puissent voir tel ou tel bloc, il suffit de rajouter ce code dans le fichier .tpl du bloc en question // n'afficher que si le client appartient au group_id 1 global $cookie; $tmpCust = new Customer(intval($cookie->id_customer)); if(!$tmpCust->isMemberOfGroup(1)) return false; En effet, le groupe "1" est le groupe "default";-) Link to comment Share on other sites More sharing options...
emraud Posted April 16, 2010 Share Posted April 16, 2010 Bonjour,J'ai la question exactement inverse à poser.Je m'explique :Je souhaiterais afficher le module vente flash à tous le monde, mais qu'il faille s'inscrire pour afficher le produit.J'ai créé une catégorie "vente_privée" soumise à acceptation par votre humble serviteur et je n'active mes ventes flash que depuis cette catégorie. Aussi lorsque l'utilisateur est logger et admis au groupe, pas de pb le module s'affiche bien. Mais, il s'affiche vide pour l'utilisateur non enregistré ou non validé pour le groupe...Qu'elle code ajoutée pour dire "affiche le module pour tous", mais bien entendu sans perdre la restriction d'accès à la catégorie "vente_privée" s'il clic pour en voir plus... Link to comment Share on other sites More sharing options...
Tibo51 Posted April 16, 2010 Share Posted April 16, 2010 J'ai pas bien compris ta demande1) tu veux afficher le module* vente flash pour tout le monde (donc utilisateurs logués ou non)2) tu ne veux pas y afficher les produits si le client n'est pas du bon groupeDonc tu affiches quoi au final, si tu ne vois même pas de produit ? Un bloc vide ? Si c'est juste un teasing pour inciter le gens à faire partie des privilégiés, une animation avec un lien vers le module vente fash te suffit.Module qui lui est bloqué si l'utilisateur n'est pas du bon groupe.* Celui dispo sur prestastore ? Link to comment Share on other sites More sharing options...
emraud Posted April 16, 2010 Share Posted April 16, 2010 Bonjour,Je m'explique, le module Flash et celui d'erihnar, VenteFlash2.2f et il ne permet pas de réservé l'affichage. Je veux que tous les clients (ou visiteurs) voient les ventes en cours et à venir (donc loggé ou non).Par contre, je place les produits dans une catégorie "privée" donc pour accèder à la vente, obligation de s'inscrire et d'avoir été accepté par mes soins.En résumé, dans la colonne de droite, je voudrais afficher mon module pour tous (actuellement, il s'affiche vide pour les non loggés et les non validés), je souhaite autorisé l'affichage pour tous, donc que le module soit autorisé à récupérer les infos des produits dans la catégorie "privée" pour tous les utilisateurs du site. Idem pour la page CommingSoon.Espérant avoir été clair ? Link to comment Share on other sites More sharing options...
emraud Posted April 16, 2010 Share Posted April 16, 2010 Bonsoir,Je reprécise ma question : Peux-t-on fixer une condition dans une fonction qui transforme toute visite (loggée ou non) en "c'est un utilisateur loggé du groupe 2" pour ce seul module afin que le module venteFlash puisse récupérer les info produits de la catégorie Vente_privée (réservée aux utilisateurs loggé et appartenant au groupe 2) et qu'il les affiche dans le bloc ? (Sans bien entendu loggé tout le monde car si il clique sur l'image du produit, ils ne doivent pas arriver à la page de vente du produit mais à la page erreur Catégorie restreinte, nécessite d'être enregistré....) ??? Link to comment Share on other sites More sharing options...
Tibo51 Posted April 17, 2010 Share Posted April 17, 2010 A mon avis, dans ce cas il faut que tu modifies le template lui-même1) insère un {debug} et vérifies si tu as une variable définissant le group. Normalement non2) il va donc falloir que tu charges une variable que tu nommera CustomerGroupa) dans calsses/Customer.phptu ajoutes /** @var interger customer_group public $customer_group; dans le fichier init.php. tout à la fin, sous 'customerName =>... tu ajoutes 'customerGroup' => ($cookie->logged ? $cookie->customer_group : false), [EDIT] 2bis) dans authentification.php, tu ajoutes : $cookie->id_customer = intval($customer->id); // Ajout $cookie->customer_group = $customer->group; ** Attention, dans mon cas j'ai ajouté un champ dans la table ps_customer pour définir le "group" pour une utilisation "standard" des groupe, rempcer par le code adéquat (que je ne connais pas...)**3) vérifie avec le{debug} si cette fois tu as la variable CustomerGroup4) si c'est OK il ne te reste qu'à modifier le template avec un {if $customerGroup == 3} // 3 est le nom du groupe pour tes ventes privées // tu affiches ça ce que les gens "vente privé" peuvent voir {else} // tu affiches ce que les autres voient {/if} Link to comment Share on other sites More sharing options...
jordy007 Posted May 21, 2010 Share Posted May 21, 2010 J'ai testé en modifiant les 3 fichiers et j'ai une belle erreur :Parse error: syntax error, unexpected T_DOUBLE_ARROW in /homez.38/monsite/init.php on line 198Une idée ? Link to comment Share on other sites More sharing options...
Tibo51 Posted May 21, 2010 Share Posted May 21, 2010 Tu peux copier ton code de la ligne 170 environ à 198 STP.Sinon, si le but est une boutique privée, ce pots pourrait t'intéresser :http://www.prestashop.com/forums/viewthread/16975Tibo Link to comment Share on other sites More sharing options...
jordy007 Posted May 21, 2010 Share Posted May 21, 2010 Le but n'est pas une boutique privée, je voudrai seulement faire apparaître une image ou un lien pour mon groupe de client provoici les lignes 170 à 198 : 'protocol' => $protocol, 'img_ps_dir' => _PS_IMG_, 'img_cat_dir' => _THEME_CAT_DIR_, 'img_lang_dir' => _THEME_LANG_DIR_, 'img_prod_dir' => _THEME_PROD_DIR_, 'img_manu_dir' => _THEME_MANU_DIR_, 'img_sup_dir' => _THEME_SUP_DIR_, 'img_ship_dir' => _THEME_SHIP_DIR_, 'img_col_dir' => _THEME_COL_DIR_, 'img_dir' => _THEME_IMG_DIR_, 'css_dir' => _THEME_CSS_DIR_, 'js_dir' => _THEME_JS_DIR_, 'tpl_dir' => _PS_THEME_DIR_, 'modules_dir' => _MODULE_DIR_, 'mail_dir' => _MAIL_DIR_, 'pic_dir' => _THEME_PROD_PIC_DIR_, 'lang_iso' => $ps_language->iso_code, 'come_from' => 'http://'.htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8').htmlentities($_SERVER['REQUEST_URI']), 'shop_name' => Configuration::get('PS_SHOP_NAME'), 'cart_qties' => intval($cart->nbProducts()), 'cart' => $cart, 'currencies' => Currency::getCurrencies(), 'id_currency_cookie' => intval($currency->id), 'currency' => $currency, 'languages' => Language::getLanguages(), 'logged' => $cookie->isLogged(), 'page_name' => $page_name, 'customerName' => ($cookie->logged ? $cookie->customer_firstname.' '.$cookie->customer_lastname : false))); 'customerGroup' => ($cookie->logged ? $cookie->customer_group : false), Link to comment Share on other sites More sharing options...
Tibo51 Posted May 21, 2010 Share Posted May 21, 2010 Une instruction php doit finir par un ";"inverse les 2 dernière lignes et ce sera OK 'page_name' => $page_name, 'customerGroup' => ($cookie->logged ? $cookie->customer_group : false), 'customerName' => ($cookie->logged ? $cookie->customer_firstname.' '.$cookie->customer_lastname : false))); Link to comment Share on other sites More sharing options...
jordy007 Posted May 21, 2010 Share Posted May 21, 2010 Merci cela fonctionne bien, mais j'ai encore un problème avec l'id des groupes ... Je te redit quoi lundiMerci pour ton aide, bon weeks Link to comment Share on other sites More sharing options...
jordy007 Posted May 25, 2010 Share Posted May 25, 2010 bonjour,Donc j'ai effectivement un problème avec mes 2 groupes de clients ...Le 1er groupe est le groupe "default" avec id= 1le 2nd groupe est le groupe "B2B" avec id= 2j'ai placé la condition dans le fichier "my-account.tpl" de mon thême comme ceci : {if $CustomerGroup == 1} Clients defauts {else} Clients B2B {/if} D'après ce que je constate, il m'affiche tout le temps Clients B2B. Que ce soit un client défaut ou B2B ... Link to comment Share on other sites More sharing options...
jordy007 Posted May 26, 2010 Share Posted May 26, 2010 Un petit coup de pouce ? Link to comment Share on other sites More sharing options...
jordy007 Posted May 26, 2010 Share Posted May 26, 2010 J'ai vu qu'il y avais des majuscules à CustomerGroup à certains endroits et non à d'autre ... Peut-être cela pose problème ? Link to comment Share on other sites More sharing options...
Tibo51 Posted May 26, 2010 Share Posted May 26, 2010 Tiens bizzare, j'aurai oublié de valider ma dernière réponse ?Je voulais que tu vérifies dans le debug smatry si tu avais bien la variable {$customerGroup}Pour la question des majuscules, oui c'est important :$CustomerGroup n'est pas $customerGroupSi tu as bien la variable {$customerGroup}, il de suffit de retirer la majuscule {if $customerGroup == 1} Link to comment Share on other sites More sharing options...
jordy007 Posted May 26, 2010 Share Posted May 26, 2010 Dans le debug smarty, je ne vois pas la variable {$customerGroup} ???Ok pour les majuscules EDIT : j'ai un {$cookie} Cookie Object (1) ->_customerGroup = null Link to comment Share on other sites More sharing options...
Tibo51 Posted May 26, 2010 Share Posted May 26, 2010 J'avais oublié une modification à faire dans authentification.php,J'ai édité le message, tc'est le point 2bis) Link to comment Share on other sites More sharing options...
jordy007 Posted May 26, 2010 Share Posted May 26, 2010 Merci, mais je ne comprend pas très bien le "ajouter un champ dans la table ps_customer pour définir le “group”" ?dans mon cas j'ai placé le code à la fin du fichier "authentification.php" comme ceci : ... $smarty->assign('errors', $errors); Tools::safePostVars(); $smarty->display(_PS_THEME_DIR_.'authentication.tpl'); $cookie->id_customer = intval($customer->id); // Ajout $cookie->customer_group = $customer->group; include(dirname(__FILE__).'/footer.php'); et dans ma table ps_customer_group j'ai deux champs : id_customer et id_group, dois-je en créer un nouveau ?Merci pour ton aide Link to comment Share on other sites More sharing options...
Tibo51 Posted May 26, 2010 Share Posted May 26, 2010 c'est parce que mon champ ne s'appelle pas en fait "group"C'est une caractéristique du client comme peut l'être le sexe (homme, femme ou indéfini)J'ai ajouté plusieurs caractéristiques dans ma table ps_customer qui me permettent de "personnaliser" facilement des affichages dans les templates.Ainsi, mes clients "pro" ne voient que des prix HT et les particuliers que des prix TTC.Ces caractéristiques sont ajoutées à la main* dans la base de donnée sans passer par le back-office*en fait c'est automatique depuis mon CRM maison avec la passerelle que je développe actuellement Link to comment Share on other sites More sharing options...
jordy007 Posted May 26, 2010 Share Posted May 26, 2010 Ok, et bien même en rajoutant ces 2 lignes dans le fichier authentification cela ne fonctionne toujours pas pour ma part Link to comment Share on other sites More sharing options...
jordy007 Posted May 26, 2010 Share Posted May 26, 2010 C'est bon j'ai réussi. Merci à toi Link to comment Share on other sites More sharing options...
Tibo51 Posted May 26, 2010 Share Posted May 26, 2010 mets ton code pour les suivants STP ;-P Link to comment Share on other sites More sharing options...
jordy007 Posted May 26, 2010 Share Posted May 26, 2010 et bien tout est bien expliqué page 1 je trouve Link to comment Share on other sites More sharing options...
Benoit62200 Posted January 31, 2011 Share Posted January 31, 2011 ...il est possible de n'afficher certains blocs qu'aux utilisateur enregistrésPour que seuls les utilisateurs enregistrés puissent voir tel ou tel bloc, il suffit de rajouter ce code dans le fichier .tpl du bloc en question // n'afficher que si le client appartient au group_id 1 global $cookie; $tmpCust = new Customer(intval($cookie->id_customer)); if(!$tmpCust->isMemberOfGroup(1)) return false; En effet, le groupe "1" est le groupe "default";-) J'ai dupliqué mon bloc logo de paiement.. pour y mettre frais de port gratuit pour à partir de.. pour les particuliers et j'ai fais la meme chose pour les pros.. mais je ne parviens pas avec ce que tu dis ci-dessus à bloquer l'affichage de ce block soit aux pros ou aux particuliers.. y a t'il une subtilité ?Je te remercie par avanceBen Link to comment Share on other sites More sharing options...
kishore Posted February 22, 2011 Share Posted February 22, 2011 sltt tout le monde,Jordyyy tu pe me dire comment ta fais pour adapter la ligne de authentication.php s'il te plait?!!// Ajout$cookie->customer_group = $customer->group;psk comme toi moi j'ai dans ma table ps_customer_group deux champs : id_customer et id_group donc logiquement je pense qu'au lieu de mettre $customer->group; je devrais mettre autre chose et j'aimerais savoir c'est quoi... J'ai vu que tu avais réussi tu peut publier la solution s'il te plaittt, C'est urgenttt! Merci d'avanceee Link to comment Share on other sites More sharing options...
kiamaru Posted February 9, 2013 Share Posted February 9, 2013 up solution qui marche avec le 1.5.3? le fichier init.php, n'existe plus dans cette version Link to comment Share on other sites More sharing options...
lordbdp Posted May 9, 2013 Share Posted May 9, 2013 (edited) up solution qui marche avec le 1.5.3? le fichier init.php, n'existe plus dans cette version A la racine de la boutique Mais je n'ai pas testé pour voir si cela fonctionne car je n'en ai pas l'utilité. Edited May 9, 2013 by lordbdp (see edit history) Link to comment Share on other sites More sharing options...
lordbdp Posted May 22, 2013 Share Posted May 22, 2013 Pas de volontaire pour en faire un ch'ti module ? ^^ Allez !!!! 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