Développer avec RBS Change : affichage du prix avec condition
-
27/12/2011 09:28
Bonjour,
Vous souhaitons afficher les prix de façon conditionnel en fonction de l'authentification des clients.
non authentifié = prix non affiché
comment faire ?
Merci d'avance.
-
Bonjour,
Au niveau du template, il faudra utiliser un tal:condition.
Concernant la condition, si vous voulez juste tester le fait qu'il soit connecté, vous pouvez appeler context/getUser/isAuthenticated (l'objet "context" disponible dans les template étant une instance de website_Page).
Si vous voulez aller plus loin et vérifier que l'utilisateur a bien un compte client (ce qui peut être intéressant pour un site mixte entre e-commerce et forums par exemple où un utilisateur inscrit n'est pas forcément client) il faudra récupérer le client (customer_CustomerService::getInstance()->getCurrentCustomer()). Dans ce cas le plus simple est de faire un tal:define en utilisant le mot-clé php:.
Cependant il n'est pas conseillé de faire appel directement à du code standard dans un php: parce que c'est moins maitrisable pour les mises à jour. Du coup il est préférable de passer par une classe dans un module spécifique avec une méthode statique renvoyant le client courant et appeler cette classe dans votre template. De cette manière si la méthode standard de récupération d'un client vient à changer vous n'aurez à mettre à jour que votre classe et pas l'ensemble des templates. - Message supprimé par son auteur.
-
Bonjour, et merci pour ces infos, j'ai testé la première solution. OK
Maintenant pour aller plus loin souhaiterais surcharger l'éditeur BO des boutiques pour rajouter un menu prix visible pour avec 3 item ("tous","utilisateur","clients"), comment procéder ?
Merci de votre réponse.
-
Si vous voulez ajouter une nouvelle propriété dans un document (ici la boutique), vous pouvez procéder comme décrit dans le tutoriel sur l'ajout de propriété à un produit.
Dans votre cas avec trois choix possible, le plus simple est de se baser sur une liste statique (staticlist). Pour cela il faut déclarer la liste dans l'import initial de votre module (des exemple d'importation de listes statiques sont présents dans un certain nombre de modules, dont catalog). Une fois la liste importée, vous pouvez utiliser l'attribut from-list sur votre propriété.
Ensuite si - comme je l'avais conseillé plus haut - vous êtes passé pas une classe à vous pour définir la façon dont on choisit d'afficher ou non un prix il vous suffira de mettre à jour votre méthode en interrogeant cette propriété sur la boutique courante récupérable via catalog_ShopService::getInstance()->getCurrentShop().Édité par Gaël Port 06/01/2012 09:31
Merci de prendre connaissance et de respecter les règles des forums.