Liste déroulante quantité produit

  • Posts: 332
  • Thank you received: 4
11 years 4 months ago #81027

Bonjour,

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.

  • Posts: 13201
  • Thank you received: 2322
11 years 4 months ago #81162

Bonjour,

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.

  • Posts: 332
  • Thank you received: 4
11 years 4 months ago #81242

Bonjour,

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.

  • Posts: 13201
  • Thank you received: 2322
11 years 4 months ago #81254

Oui c'est bien de ce type, pour le contrôle de la catégorie, vous pouvez récupérer l'id du produit grâce à : hikashop_getCID().
Puis contrôler les catégories dans lesquelles il se trouve avec:

	$product_id = hikashop_getCID();
	$productClass = hikashop_get('class.product');
	$categories = $productClass->getCategories($product_id);
        // votre condition d'affichage ...

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

  • Posts: 332
  • Thank you received: 4
11 years 4 months ago #81263

Merci,
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.

  • Posts: 332
  • Thank you received: 4
11 years 4 months ago #81287

Re bonsoir,

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.

  • Posts: 13201
  • Thank you received: 2322
11 years 4 months ago #81353

Bonjour,

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.

  • Posts: 332
  • Thank you received: 4
11 years 4 months ago #81668

Bonjour,

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.

  • Posts: 13201
  • Thank you received: 2322
11 years 4 months ago #81807

Bonjour,

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.

  • Posts: 332
  • Thank you received: 4
11 years 4 months ago #81823

Bonjour,

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.

  • Posts: 13201
  • Thank you received: 2322
11 years 4 months ago #81847

Normalement la quantité du produit est défini lors de l'ajout dans la page produit, donc dans le checkout vous connaissez la quantité qui est dans le panier.
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.

  • Posts: 332
  • Thank you received: 4
11 years 4 months ago #81854

Oui, en effet, j'ai pu constaté que l'objet $row me donne l'information de la quantité.
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.

  • Posts: 13201
  • Thank you received: 2322
11 years 4 months ago #81870

Si $row->product id contient bien l'id du produit, vous devriez avoir des catégories dans votre variable $categories.
Attention, $categories retourne un tableau. (var_dump($categories))

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

  • Posts: 332
  • Thank you received: 4
11 years 4 months ago #81912

En fait, si le produit est un produit j'obtiens bien ses catégories, par contre, si le produit est une variante, alors la variable $categories est vide???

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

Last edit: 11 years 4 months ago by emohk.

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

  • Posts: 332
  • Thank you received: 4
11 years 4 months ago #81920

Re,

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.

  • Posts: 13201
  • Thank you received: 2322
11 years 4 months ago #81999

Bonjour,

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.

  • Posts: 332
  • Thank you received: 4
11 years 4 months ago #82352

Bonjour,
Je récupère comme cela :
$product = $productClass->getProducts($product_id);

???

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

  • Posts: 13201
  • Thank you received: 2322
11 years 4 months ago #82409

Bonjour,

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.

  • Posts: 332
  • Thank you received: 4
11 years 4 months ago #82479

Bonsoir,

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.

  • Posts: 332
  • Thank you received: 4
11 years 4 months ago #82544

Bonjour,

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.

Time to create page: 0.108 seconds
Powered by Kunena Forum