Attributs produits obligatoires

13 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour

je me pose une question sur les attributs. Voilà mon problème.

J'ai un attribut X sur lequel j'ai rendu obligatoire en cochant dans le BO "Champ obligatoire".

J'ai créé 2 options Y et Z pour cet attribut et pour chaque option, j'ai également coché OUI pour "champ obligatoire".

De ce fait, dans le BO, pour le produit donné, j'ai un menu déroulant avec les options Y et Z.

Or, sans avoir sélectionné ni Y, ni Z, je peux quand même ajouter le produit au panier, alors que le champ est obligatoire.

Est ce un dysfonctionnement ou bug, ou bien j'ai pas compris le but de champ obligatoire/rendre obligatoire ?

Merci pour vos retours

JL

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour Simon

Par exemple :

https://www.jl-transferts-numeriques.fr/achat/produit_details.php?id=9

Là le client doit choisir

1-le type de support (le négatif) -> c'est bien obligatoire car dans mon peel, j'utilise l'attribut 'taille/multiprix' que j'ai renommé "support" pour les besoins généraux de ma boutique

2-la résolution de numérisation : 2400 ou 4800dpi. et c'est là que je voudrais que le choix devienne obligatoire aussi...

là c'est un "simple attribut" avec ses 2 options 2400 ou 4800dpi...

Merci pour votre aide

JL

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Lorsque l'on ajoute le produit au panier, l'attribut "Qualité numérisation négatif photo" est toujours bien rempli, puisque l'on propose que les deux options à choisir, il n'y a pas d'option vide dans le select.

=> Quel est le problème concrètement ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) (modifié) · Signaler ce message

Bonjour Simon

le "problème" , c'est que comme pour l'attribut taille/multiprix dans lequel on part "d'un choix vide" qui implique que l'on clique pour rentrer une valeur de taille pour pouvoir ajouter le produit au panier, il aurait été intéressant de faire pareil pour ces attributs personnalisés. Car pour ces attributs personnalisés, il y a forcément un attribut qui est affiché par défaut (la position 0) et que le client valide obligatoirement en ajoutant au panier, s'il ne fait pas attention qu'il y a plusieurs possibilités d'option (ici 2400 ou 4800dpi). Il aurait fallut que les boutons ou le menu déroulant soit, comme pour les attributs taille/multiprix, vide impliquant un choix obligatoire pour que le client puisse mettre au panier... Je sais pas si je suis clair...

Admettons que mon client valide 200 diapositives sans faire attention à la case résolution réglée par défaut sur 2400dpi. Il aurait souhaité peut être une résolution 4800dpi ! Il aurait été alerté par le message "Vous n'avez pas choisi la résolution de numérisation", tout comme il est alerté s'il ne choisit pas le type de diapo à numériser qu'il a...

Sinon, je ne comprends pas à quoi sert l'option "champ obligatoire" lorsque l'on créé ces attributs personnalisés...

Donc pour résumer, il faudrait l'attribut personnalisé "qualité de numérisation", avec par défaut "Faîtes votre choix" et les 2 options 2400dpi et 4800dpi. Tant que le client n'a pas choisi 2400 ou 4800, il peut pas ajouter au panier avec message d'avertissement. EN résumé, même fonctionnement que les attributs "tailles/multiprix"...

Je trouve étrange que ce fonctionnement ne soit pas par défaut finalement et qu'il demande un développement payant...

Modifié (le) par carcy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

L'ajout d'une option vide dans le menu déroulant des attributs administrable a été ajouté sur la 8.0.5 (c'est paramétrable), ce qui répond au problème que vous soulevez. Sur la 8.0.4 vous pouvez modifier le fichier modeles\peel7\smarty\modules\attributs_form_part.tpl pour ajouter une option vide <option value="">{$LANG.STR_CHOOSE}</option> vers la ligne  35, en dessous de <select id="{$a.input_id}" name="{$a.input_name}" onchange="{$a.onchange}" class="form-control{if $a.input_class} {$a.input_class}{/if}">

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) (modifié) · Signaler ce message

Bon alors déjà merci pour votre réponse Simon.

J'ai apporté la petite modif dont vous parlez.

Du coup, sur ma page produit, les champs des 2 attributs se retrouvent vides et demandent un choix. Jusque là c'est bon...

Exemple concret à la page : https://www.jl-transferts-numeriques.fr/achat/produit_details.php?id=56

je rappelle : support = attribut multitaille/multiprix -> il est bien obligatoire (=> "vous n'avez pas choisi de support")

SAUF QUE après avoir validé le choix de cet attribut taille, je peux ajouter au panier le produit SANS AVOIR CHOISI l'attribut paramétrable...

Le produit se retrouve dans le panier mais ne précise pas d'attribut paramétrable.

En fait, il serait bien que quelque soit l'attribut (taille, personnalisé...), le champs soit vide au départ et que l'ajout au panier ne soit possible QUE si l'attribut (ou les attributs) sont renseignés...

N'est pas un fonctionnement normal ?

 

Modifié (le) par carcy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Pour permettre la prise en compte des attributs obligatoire, dans la fonction get_attribut_list_from_post_data du fichier modules\attributs\fonctions.php il faut ajouter remplacer le test vers la ligne 822 (pour une version 8.0.4)

					if (is_array($this_value)) {
						// Tableau d'attributs
						foreach($this_value as $this_combinaison) {
							// On teste la validité des données
							$value_array = explode('|', $this_combinaison);
							if($value_array[0] == $this_nom_attribut_id && !empty($attribut_infos[$this_nom_attribut_id][$value_array[1]])) {
								// L'option existe bien pour cet attribut
								$combinaisons_array[] = $this_combinaison;
								unset($GLOBALS['error_attribut_mandatory'][$this_nom_attribut_id]);
							}
						}
					} else {
						$combinaisons_array[] = $this_value;
						unset($GLOBALS['error_attribut_mandatory'][$this_nom_attribut_id]);
					}

par

    if (is_array($this_value)) {
                        // Tableau d'attributs
                        foreach($this_value as $this_combinaison) {
                            // On teste la validité des données
                            $value_array = explode('|', $this_combinaison);
                            if($value_array[0] == $this_nom_attribut_id && !empty($attribut_infos[$this_nom_attribut_id][$value_array[1]])) {
                                // L'option existe bien pour cet attribut
                                $combinaisons_array[] = $this_combinaison;
                                unset($GLOBALS['error_attribut_mandatory'][$this_nom_attribut_id]);
                            }
                        }
                    } elseif(!empty($this_value)) {
                        $combinaisons_array[] = $this_value;
                        unset($GLOBALS['error_attribut_mandatory'][$this_nom_attribut_id]);
                    }

 Concrètement il faut changer la condition } else { par } elseif(!empty($this_value)) { pour exécuter le code qui suit uniquement si on a une valeur pour l'attribut.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour

Merci pour la réponse

Suite à cette modif, j'obtiens une erreur lorsque j'ajoute un produit sans spécifier l'option :

Notice: Undefined index: session_display_popup in /homepages/5/d334204221/htdocs/achat/caddie_ajout.php on line 138

Notice: Undefined index: error_text in /homepages/5/d334204221/htdocs/achat/caddie_ajout.php on line 138

Warning: Cannot modify header information - headers already sent by (output started at /homepages/5/d334204221/htdocs/achat/caddie_ajout.php:138) in /homepages/5/d334204221/htdocs/lib/fonctions/fonctions.php on line 1608

Warning: Cannot modify header information - headers already sent by (output started at /homepages/5/d334204221/htdocs/achat/caddie_ajout.php:138) in /homepages/5/d334204221/htdocs/lib/fonctions/fonctions.php on line 1612

merci pour votre aide

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Est-ce que vous pouvez ouvrir le fichier achat/caddie_ajout.php et vérifier qu'à la ligne 31 il y a bien le code suivant :

$_SESSION['session_display_popup']['error_text'] = '';

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Oui, il y a bien cette ligne...

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour Simon

Je viens de passer à la 8.0.5 et vous parlez de "paramétrable" dans votre message précédent concernant le champ d'attribut vide.

je ne vois pas ou ça se trouve. Une petite indication SVP ?

merci !

JL

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

pour ajoute une option vide dans le menu déroulant des attributs administrables, vous pouvez ajouter le paramètre attribut_first_select_option_is_empty depuis la page d'ajout de paramètre /administrer/configuration.php?mode=ajout. Pour remplir le paramètre :

Origine : manual
Code technique : attribut_first_select_option_is_empty
Type : boolean

Votre contenu : true

Concernant les erreurs lors de l'ajout au panier, j'ai pris contact avec vous via la messagerie privée.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping