Skip to main content

Intégration - code php lié au bouton

More
9 years 11 months ago #251157 by david_filip@hotmail.com
Bonjour,

Je viens de mettre à jour ma version Hikashop d'Essential à Business.

Je souhaiterais au moment du click sur le bouton "Ajouter au Panier" ajouter du code PHP supplémentaire afin de mettre à jour une table (autre qu'Hikashop) dans la base de donnée.

Pouvez-vous m'aiguiller vers le fichier et la partie de code à adapter afin de réaliser cette opération ?

En vous remerciant pour votre aide,
David Filip

Please Log in or Create an account to join the conversation.

More
9 years 11 months ago #251162 by nicolas
Bonjour,

Idéalement, il faudrait faire un petit plugin implémentant le trigger onAfterCartUpdate d'HikaShop:
www.hikashop.com/support/documentation/6...ml#onAfterCartUpdate

Faire un plugin n'est pas très compliqué si vous êtes un développeur:
www.hikashop.com/support/documentation/6...mentation.html#howto

Please Log in or Create an account to join the conversation.

More
9 years 11 months ago #251380 by david_filip@hotmail.com
Merci Nicola pour votre réponse.

Effectivement, vous avez vraiment apporté un soin particulier à votre développement et à la structure globale du produit. Bon boulot!
J'ai mis en oeuvre un plugin et cela fonctionne parfaitement. Je suis occupé à voir avec Cyril d'iCagenda un mariage possible entre vos deux produits.

J'ai à peu près tout ce qu'il me faut dans HK pour gérer les événements sans perdre pour autant la possibilité de réaliser des upsells. Il y a un exemple donné sur votre site pour l'inscription à un événement mais cela ne permet plus l'ajout d'autres produits dans le panier.

Pourrais-tu m'expliquer comment faire ou quoi développer assez simplement en php pour une fois arrivé au processus de validation de commande, je puisse identifier les événements dans le panier (j'ai ajouté un champ personnalise booléen isEvent au produit) et introduire dans la chaîne entre par exemple Panier et Adresse Livraison/Facturation une étape où on pourrait inscrire les noms des personnes présentes à l'événement fonction de la valeur Qty du "produit-événement"?
A défaut, serait-ce possible avec HikaSerial : un ticket assigné à un nom que l'on introduit et ce sans perdre la possibilité d'ajouter d'autres produits dans le panier ?

Merci pour vos éclairages,
David

Please Log in or Create an account to join the conversation.

More
9 years 11 months ago #251383 by nicolas
Bonjour,

Pour ajouter des étapes dans le système de passage en caisse, l'idéal c'est d'utiliser les triggers de l'API checkout:
www.hikashop.com/support/documentation/6...tation.html#checkout
comme cela, il suffit ensuite d'ajouter la vue dans le "checkout workflow" de la configuration pour que le plugin soit appeler pour l'affichage dans le passage en caisse.
Pour récupérer le contenu du panier, cela se fait facilement avec la fonction loadFullCart comme expliqué dans la documentation développeur:
www.hikashop.com/support/documentation/6...umentation.html#code
Donc cela laisse toutes les libertés possibles. Et pour stocker les informations dans la commande, cela peut se faire par exemple avec un champs personnalisé de la table "commande" ou "article".

Please Log in or Create an account to join the conversation.

More
9 years 11 months ago #251413 by david_filip@hotmail.com
Merci pour ta réponse Nicolas.

J'ai bien intégré la nouvelle étape dans le passage en caisse et cela fonctionne parfaitement.
L'étape en question m'affiche HIKASHOP_CHECKOUT_PLG.SHOP.VIEWNAME dans l'onglet.
Je ne vois pas très bien ce que je dois faire ici :
- dois-je créer un plugin supplémentaire pour la vue en question ?
- le nom affiché dans l'onglet n'est pas celui que j'ai assigné dans le tableau : $list = 'Infos des participants';

Pourrais-tu m'aiguiller sur la manière de construire cette vue ?

En te remerciant,
David

Please Log in or Create an account to join the conversation.

More
9 years 11 months ago #251422 by Mohamed Thelji
Bonjour David,

Pour créer la vue en question, il suffira simplement d'ajouter un fichier PHP à ton plugin ayant comme nom : NomDeTonPlugin_view.php

Voici un example pouvant surement t'aider :
Code:
/** * Création de l'étape propre au plugin */ public function onCheckoutStepList(&$list) { //add step on checkout workflow $list['plg.shop.mynewstep'] = JText::_("PARTICIPANT_INFO'); } /** * Affichage de la vue NomDeTonPlugin_view.php lors de l'appel de l'étape 'plg.shop.mynewstep' */ function onCheckoutStepDisplay($layoutName, &$html, &$view, $pos, $options) { if($layoutName != 'plg.shop.mynewstep') return; // appel NomDeTonPlugin_view.php ob_start(); $this->showPage('view'); $html = ob_get_clean(); }

Please Log in or Create an account to join the conversation.

More
9 years 11 months ago - 9 years 11 months ago #251496 by david_filip@hotmail.com
Mohamed, je te remercie pour ta réponse.

1) Au travers de mon plugin, j'arrive à correctement utiliser la méthode onCheckoutStepDisplay.
Par contre, je n'arrive pas à faire en sorte d'avoir le nom exact dans le nouvel onglet du workflow (voir fichier attaché).
Je pense que quelque chose m'échappe dans l'ajout du nom dans le tableau $list :
Code:
$list['plg.shop.mynewstep'] = JText::_("PARTICIPANT_INFO');
Précédemment, j'avais créé une vue php dans le répertoire Checkout en récupérant le fichier fiels.php que j'ai renommé en fields_df.php
Ensuite, j'ai introduit dans la liste :
Code:
$list['plg.shop.fields_df'] = 'Liste des participants';
Dans la partie Configuration->Passage en caisse : Je retrouve bien l'étape "Liste des participants".
Dans la partie site, la méthode onCheckoutStepDisplay fonctionne correctement (voir le listage de quelques propriétés produit dans jpg) mais pour le nom dans l'onglet de l'étape, je sèche... A quel moment, fait-on la connexion entre la vue (php) et la liste ?
Et c'est là que j'ai besoin de ton aide :)
Peux-tu me dire où je me trompe ?

2) J'aimerais également sur base d'une variable pouvoir rendre visible ou invisible cette nouvelle étape. J'ai essayé dans la méthode onCheckoutStepList de vider l'array par un unset mais rien n'y fait. J'imagine qu'il faut agir sur le view step.php mais je ne vois pas trop où je pourrais placer ma condition (probablement en plusieurs endroits). Peux-tu m'éclairer ?

Merci à toi,
David

Last edit: 9 years 11 months ago by david_filip@hotmail.com.

Please Log in or Create an account to join the conversation.

More
9 years 11 months ago #251521 by nicolas
Bonjour,

1. Le nom de l'étape est généré automatiquement. Donc il suffit d'ajouter un override de traduction:
HIKASHOP_CHECKOUT_PLG.SHOP.VIEWNAME="Nom de mon étape"
via l'onglet Langues de la configuration HikaShop.
C'est converti dans le fichier "step" de la view "checkout":
Code:
if($k == $this->step || empty($link)) { echo JText::_('HIKASHOP_CHECKOUT_'.strtoupper($step_name)); } else { ?> <a href="<?php echo hikashop_completeLink('checkout&task=step&step='.$k.$url_itemid);?>"> <?php echo JText::_('HIKASHOP_CHECKOUT_'.strtoupper($step_name));?> </a> <?php }

2. Il n'est pas possible de supprimer une étape dynamiquement. Par contre, il est possible de la faire passer automatiquement.
Pour cela, dans onBeforeCheckoutStep vous pouvez faire votre vérification et soit rediriger vers l'étape d'après avec un $app->redirect() avec le paramètre step incrémenté dans l'URL, soit en ajoutant à la vue un peu de JS pour auto submit l'étape au chargement de la page plutôt que d'afficher le contenu de votre vue.

Please Log in or Create an account to join the conversation.

Time to create page: 0.188 seconds
Powered by Kunena Forum