- Posts: 332
- Thank you received: 4
Liste déroulante quantité produit
J'ai des produits qui sont vendus par quantité x3. Une idée pour mettre en place une liste déroulante sur le champs quantité (3/6/9/ ...) au niveau de la fiche produit et le passage en caisse.
Merci
Please Log in or Create an account to join the conversation.
Cela est possible, il faut créer un override de vue "hikashop_button.php" dans votre répertoire html de votre template.
Il y a de la documentation ici: www.hikashop.com/en/support/documentatio...tation.html#override
Puis créer des custom fields sur vos catégories de type checkbox, avec des valeurs allant de 3 en 3, ensuite dans la catégorie cochez les cases des valeurs désirées.
Dans votre override, vous pouvez l'appliquer seulement sur certaines catégories si vous le souhaitez en ajoutant simplement une condition.
Des notions en PHP sont requises.
Please Log in or Create an account to join the conversation.
Pour l'override php, c'est bien du type :
<?php
function hikashop_quantity_render($html,$i,$max_quantity,$min_quantity){
return '<select id="hikashop_product_quantity_field_'.$i.'" name="quantity">
<option value="3">3</option>
<option value="6">6</option>
<option value="9">9</option>
<option value="...">...</option>
</select>'.$html;
}
Par contre, je ne comprend pas l'utilité des customs fields. En fait, je veux simplement une liste de valeur pour les quantités (sur produit et checkout), sachant que la liste de valeur est affichée pour une catégorie de produits précise sinon, l'utilisateur saisit la quantité. Du coup, j'ai un doute sur le test à implanter pour la catégorie?
Merci
Please Log in or Create an account to join the conversation.
Puis contrôler les catégories dans lesquelles il se trouve avec:
Please Log in or Create an account to join the conversation.
mais cela marche en partie uniquement dans la fiche produit et pas dans le passage en caisse, j'ai toujours le champs text pour saisir la quantité.
Par ailleurs, j'ai du rater qqc car si je n'ai pas la catégorie, il faut que je garde le champs text, cela veut dire qu'il faut que je modifie mon override pour cela aussi?
<?php
function hikashop_quantity_render($html,$i,$max_quantity,$min_quantity){
$product_id = hikashop_getCID();
$productClass = hikashop_get('class.product');
$categories = $productClass->getCategories($product_id);
if($categories[1]=="12"){
return '<select id="hikashop_product_quantity_field_'.$i.'" name="quantity">
<option value="3">3</option>
<option value="6">6</option>
<option value="9">9</option>
<option value="12">12</option>
</select>'.$html;
}
}
Please Log in or Create an account to join the conversation.
Je cherche à mettre une nouvelle class pour la liste de valeurs précédemment créée pour l'affichage dans la fiche produit et le passage en caisse, quel est le fichier php d'appel?
Merci
Please Log in or Create an account to join the conversation.
Il faut en effet récupérer la partie du champ texte et l'ajouter au else de votre override.
Pour modifier dans le checkout, vous devez apporter la modification a la vue "checkout / cart".
Please Log in or Create an account to join the conversation.
En fait dans le checkout, la fonction hikashop_quantity_render n'est pas appelée. J'ai du mal à comprendre la différence de comportement pour entre la vue la fiche produit et le checkout pour la gestion de la saisie de la quantité??
Please Log in or Create an account to join the conversation.
Le checkout ne fait en effet pas appel à cette fonction, c'est pour cela qu'il faut aussi apporter les modification de cette fonction dans la vue "checkout / cart" afin de retrouver cette liste déroulante dans le panier.
Please Log in or Create an account to join the conversation.
Merci pour ce début de réponse, toutefois, dans ce cas présent, je ne vois pas comment je peux construire ma dropdown list, car il faut que je puisse préciser l'option selected pour la quantité de produit qui aura été selectionnée sur la fiche produit??
n'avez vous pas déjà un exemple un peu formaté.
Merci par avance.
Please Log in or Create an account to join the conversation.
Vous pouvez donc définir quelle valeur sera sélectionnée par défaut.
Please Log in or Create an account to join the conversation.
1) j'ai besoin de récupérer la catégorie du produit, quelle methode ou classe faut-il appeler (avec $row->product_id??) pour récupérer l'id de la catégorie?
Par exemple j'ai essayé :
$productClass = hikashop_get('class.product');
$categories = $productClass->getCategories($row->product_id);
mais $categories est vide ???
Merci
Please Log in or Create an account to join the conversation.
Attention, $categories retourne un tableau. (var_dump($categories))
Please Log in or Create an account to join the conversation.
J'ai la réponse : pas de catégorie sur une variante (impossible de supprimer ce message qui n'avait pas de raison d'être là).
du coup, je vais tester un custom field au niveau du produit, donc cela sera plus simple.
Merci
Please Log in or Create an account to join the conversation.
Par contre je reviens sur le précédent message de 3 jours, pour la modif de la fonction hikashop_quantity_render.
Comment,je peux obtenir dans la fonction l'objet product pour récupérer les valeurs de custom fields.
Merci
Please Log in or Create an account to join the conversation.
Pour les catégories des variantes, vous pouvez vous baser sur l'id du "product_parent_id".
Pour récupérer l'objet $product, vous pouvez utiliser la fonction "getProducts()" dans la classe "product".
Please Log in or Create an account to join the conversation.
Je récupère comme cela :
$product = $productClass->getProducts($product_id);
???
Please Log in or Create an account to join the conversation.
Il me semble que le parametre a passer à cette fonction est un "array()".
juste avant fates quelque chose du genre "$ids = array($product_id);"
Please Log in or Create an account to join the conversation.
apparemment, cela ne fonctionne pas :
$product_id = hikashop_getCID();
$productClass = hikashop_get('class.product');
$ids = array($product_id);
$product = $productClass->getProducts($ids);
rien dans $product???
Please Log in or Create an account to join the conversation.
En fait, j'ai trouvé :
$productClass = hikashop_get('class.product');
$product=$productClass->get($product_id);
Merci
Please Log in or Create an account to join the conversation.