Lili25
Utilisateur open source-
Compteur de contenus
7 -
Inscrit(e) le
-
Dernière visite
Activité de Lili25
-
Lili25 a ajouté un message dans un sujet Fiche produit client > Choix de couleurs n'apparait pas
Je me réponds à moi-même, pour récapituler car je viens de trouver :
Attention, c'est subtil !
Mon erreur : Créer le produit sans options de couleurs et cocher la case gestion des stocks -> apparition du stock dans "Gestion des stocks" mais sans différenciation de couleurs. Une fois créé les couleurs, je pense que Peel croyait toujours que je voulais saisir un stock global sans couleurs, donc il ne me proposait que la saisie de ce stock global.
Ce que j'ai fait pour résoudre le problème :
j'ai décoché la case "Gestion des stock" pour mon produit, afin de réinitialiser cette option dans la table
j'ai sauvegardé mon produit
j'ai créé mes couleurs
je les ai attribuées à mon produit dans la fiche produit
j'ai sauvegardé mon produit
de retour sur la fiche produit, j'ai cliqué sur la petite icone "Gestion du stock" (ouvre une nouvelle fenêtre) en-dessous de la case à cocher de la fiche produit
dans cette fenêtre, le formulaire de stock est bien apparu avec les couleurs créées.
Tout va bien, je peux aller prendre un café
-
0
-
-
Lili25 a ajouté un sujet dans Module PEEL Premium pour PEEL SHOPPING
Fiche produit client > Choix de couleurs n'apparait pasBonjour à toutes et à tous,
Dans Peel Shopping 5.71, je me heurte à ce problème :
Après avoir créé des couleurs, les avoir sélectionné dans la fiche produit côté admin, celles-ci n'apparaissent pas sur la fiche produit côté client.
Voici le code où je pense que le problème se situe, mais sans identifier la cause.
Il s'agit du fichier lib/fonctions/display.php
<form method="post" action="' . $wwwroot . '/achat/caddie_ajout.php" id="' . $form . 'ajout' . $prodId . '">'; $hidden_input = '<input type="hidden" value="' . $prodId . '" name="id" />'; if ($objProd->on_stock == '1' && is_stock_advanced_module_active()) { display_attribut_with_stock($objProd, $prodId, $hidden_input, $affiche_stock); } else { $sqlstock = 'SELECT * FROM peel_produits WHERE id = "' . intval($prodId) . '"'; $query = query($sqlstock); $p = fetch_object($query); $sqlcriteres = 'SELECT c.id as cid, c.nom_' . $_SESSION['langue'] . ' as cname, t.id as tid, t.nom_' . $_SESSION['langue'] . ' as tname, t.prix FROM peel_produits_couleurs pc INNER JOIN peel_couleurs c ON c.id = pc.couleur_id INNER JOIN peel_produits_tailles pt ON pt.produit_id = pc.produit_id INNER JOIN peel_tailles t ON t.id = pt.taille_id WHERE pc.produit_id = "' . intval($prodId) . '"'; $query = query($sqlcriteres); if (num_rows($query) > 0) { echo '<select name="critere">'; $selected = 1; if (empty($_GET['cId'])) { $color = $objProd->default_color_id; } else { $color = intval($_GET['cId']); } while ($type = fetch_object($query)) { echo '<option value="' . $type->cid . '|' . $type->tid . '|"' . ($selected == 1 || $color == $type->cid ? ' selected="selected"' : '') . '>' . (!empty($type->cname) ? COLOR . BEFORE_TWO_POINTS . ': ' . $type->cname . ' - ' : '') . (!empty($type->tname) ? SIZE . BEFORE_TWO_POINTS . ': ' . $type->tname : '') . '</option>'; $selected++; } echo '</select>'; } else { $hidden_input .= '<input type="hidden" name="critere" value="||" />'; } if ($p->on_rupture == 1) { echo ' <p style="color:#990000;font-style:italic"> ' . RUPTURE_PRODUCT . ' </p>'; } else { echo '<p class="retour">' . QUANTITY . BEFORE_TWO_POINTS . ': <input type="text" size="3" name="qte" value="1" />' . $hidden_input . ' <input type="hidden" name="option" value="0" /> </p> <div class="bouton"> <a class="blanc" href="Javascript:document.getElementById(\'' . $form . 'ajout' . $prodId . '\').submit()" title="' . ADD_CART . '">' . ADD_CART . '</a> </div>'; } } echo ' </form>';
J'ai bien cherché dans tous les sujets du forum, mais je n'en vois aucun ayant trait à ce soucis.
Merci pour votre aide, c'est la première fois depuis le début de mon aventure Peel que j'intègre des produits avec un choix de couleurs dans ma boutique :rolleyes:
A bientôt.
EDIT : dans la gestion des stocks, ces couleurs que j'ai créé n'apparaissent pas non plus, donc impossible de créer le stock
EDIT 2 : en désactivant la gestion du stock du produit, le choix apparait côté client. Mais côté "Gestion des stocks" dans l'admin, les couleurs sont toujours absentes.
- 2 réponses
- 1 390 vues
-
Lili25 a ajouté un message dans un sujet Produits personnalisables par le client
Eh voilà !! :huh:
Je viens de trouver mon erreur. Je poste ci-dessous la correction du code :
function ajout($produit_id, $quantite, $couleur_id, $taille_id, $email_check, $liste_attribut, $prenom_unique) { if (in_array($produit_id, $this->articles) && empty($email_check)) { // Si le produit est dans le caddie, et que ce n'est pas un chèque cadeau, alors on va vouloir fusionner les données dans une même ligne foreach ($this->articles as $k => $this_produit_id) { if ($produit_id == $this_produit_id && $couleur_id == $this->couleurId[$k] && $prenom_unique == $this->prenom_unique[$k] && $taille_id == $this->tailleId[$k] && $liste_attribut == $this->id_attribut[$k]) { $line_found = $k; break; } } } if (isset($line_found)) { // Le produit existait déjà dans le panier dans la bonne configuration de couleur et de taille $quantite = $this->quantite[$line_found] + $quantite; $this->place($line_found, $produit_id, $quantite, $couleur_id, $taille_id, $email_check, $liste_attribut, $prenom_unique); } else { // Une nouvelle ligne doit être créée dans le panier if (!isset($this->articles[0])) { $numero_ligne = 0; } else { $numero_ligne = max(array_keys($this->articles)) + 1; } $this->articles[$numero_ligne] = $produit_id; // Si on gère les stocks pour ce produit, la valeur $quantite est temporaire avant validation du stock disponible $this->quantite[$numero_ligne] = $quantite; $this->couleurId[$numero_ligne] = $couleur_id; $this->tailleId[$numero_ligne] = $taille_id; $this->email_check[$numero_ligne] = $email_check; $this->id_attribut[$numero_ligne] = $liste_attribut; $this->prenom_unique[$numero_ligne] = $prenom_unique; if (is_stock_advanced_module_active() && empty($this->commande_id)) { // NB : On ne gère les stocks remporaire que si commande_id est vide, sinon les stocks sont gérés directement avec peel_stocks // On appelle recalc_article_general car on doit d'abord récupérer la valeur de $this->etat_stock[$numero_ligne] $this->recalc_article_general($numero_ligne); if($this->etat_stock[$numero_ligne] == 1){ $this->quantite[$numero_ligne] = reservation_stock_temp($produit_id, $couleur_id, $taille_id, $quantite, $prenom_unique); } } } }
Petite explication : il n'y avait pas besoin de mettre la variable prenom_unique_id, mais simplement $prenom_unique.
J'avoue que sur ce coup là, je suis fier de moi ! :)
Bon maintenant, il faut que je répercute l'affichage du prénom sur tous les écrans de contrôle (fin de commande, confirmation, mails, administration ...). Un jeu d'enfant ? :angry:
-
0
-
-
Lili25 a ajouté un message dans un sujet Produits personnalisables par le client
Oui, je l'ai créée dans module_handler ...
function is_prenom_module_active() { return file_exists($GLOBALS['fonctionsprenom']); } ... et déclarée dans configuration.inc.php // Affichage prénom produits $fonctionsprenom = $dirroot . "/modules/prenom/fonctions.php"; if (is_prenom_module_active() && !defined('LOAD_NO_OPTIONAL_MODULE')) { include ($fonctionsprenom); }
-
0
-
-
Lili25 a ajouté un message dans un sujet Produits personnalisables par le client
Merci Jean-Hervé,
Ton post me sera utile quand j'aurai réussi dans un premier temps à transmettre le prénom dans le caddie.
Pour le moment :
J'ai déclaré le module prénom qui s'affiche effectivement bien sur ma fiche produit grâce à la fonction if (is_prenom_module_active()) (actif si, dans la table produit, le produit est concerné par la personnalisation avec le prénom).
Donc, j'ai bien ma petite zône qui s'affiche, prête à recevoir le prénom que l'on veut.
Le problème que je n'arrive pas encore à résoudre se produit au moment de l'ajout au caddie. Le produit se place bien dans le caddie, mais le prénom n'est pas ramené pour être associé à la ligne concernée.
J'ai rajouté ceci dans le fichier caddie_ajout.php (la variable s'appelle prenom_unique pour la distinguer d'une future prenom_double à venir quand j'aurai réussi à implanter celle-là)
//MODULE PRENOM if (is_prenom_module_active()) { $prenom_unique = substr($_POST['prenom_unique']); } Dans ce même fichier (caddie_ajout), j'enregistre la variable sensée être ramenée par POST dans le tableau de SESSION, comme suit : $_SESSION['caddie']->ajout($id, $quantite, $couleur_id, $taille_id, $email_check, $liste_attribut, $prenom_unique); Enfin, dans class/caddie.php, après avoir initialisé le tableau prenom_unique, j'ai modifié la fonction d'ajout au caddie comme ceci : function ajout($produit_id, $quantite, $couleur_id, $taille_id, $email_check, $liste_attribut, $prenom_unique) { if (in_array($produit_id, $this->articles) && empty($email_check)) { // Si le produit est dans le caddie, et que ce n'est pas un chèque cadeau, alors on va vouloir fusionner les données dans une même ligne foreach ($this->articles as $k => $this_produit_id) { if ($produit_id == $this_produit_id && $couleur_id == $this->couleurId[$k] && $prenom_unique == $this->prenom_unique_id[$k] && $taille_id == $this->tailleId[$k] && $liste_attribut == $this->id_attribut[$k]) { $line_found = $k; break; } } } if (isset($line_found)) { // Le produit existait déjà dans le panier dans la bonne configuration de couleur et de taille $quantite = $this->quantite[$line_found] + $quantite; $this->place($line_found, $produit_id, $quantite, $couleur_id, $taille_id, $email_check, $liste_attribut, $prenom_unique); } else { // Une nouvelle ligne doit être créée dans le panier if (!isset($this->articles[0])) { $numero_ligne = 0; } else { $numero_ligne = max(array_keys($this->articles)) + 1; } $this->articles[$numero_ligne] = $produit_id; // Si on gère les stocks pour ce produit, la valeur $quantite est temporaire avant validation du stock disponible $this->quantite[$numero_ligne] = $quantite; $this->couleurId[$numero_ligne] = $couleur_id; $this->tailleId[$numero_ligne] = $taille_id; $this->email_check[$numero_ligne] = $email_check; $this->id_attribut[$numero_ligne] = $liste_attribut; $this->prenom_unique_id[$numero_ligne] = $prenom_unique; if (is_stock_advanced_module_active() && empty($this->commande_id)) { // NB : On ne gère les stocks remporaire que si commande_id est vide, sinon les stocks sont gérés directement avec peel_stocks // On appelle recalc_article_general car on doit d'abord récupérer la valeur de $this->etat_stock[$numero_ligne] $this->recalc_article_general($numero_ligne); if($this->etat_stock[$numero_ligne] == 1){ $this->quantite[$numero_ligne] = reservation_stock_temp($produit_id, $couleur_id, $taille_id, $quantite, $prenom_unique); } } } }
Mais je ne suis pas sûr de moi. A ce stade, ça me parait un peu flou. Je pense ne pas être très loin du but, mais ... :huh:
Allez, je cherche encore !!! Courage ! :)
EDIT : A cette heure, toujours aucune solution, il y a un truc qui ne passe pas. Impossible de transmettre le prénom ... comprends rien ... :angry:
-
0
-
-
Lili25 a ajouté un message dans un sujet Produits personnalisables par le client
Bonjour Reloaded :(
Merci beaucoup pour cette piste. Je vais l'explorer en espérant ne pas trop me perdre et rendre inutilisable ma boutique !!
Bon heureusement que pour le moment, elle n'est pas publique. J'espère quand même pouvoir m'en sortir d'ici la rentrée.
Je vais donc me lancer mais, si jamais je n'y arrive pas, si quelqu'un a un peu de son talent à me consacrer pour atteindre mon objectif, je ne serai pas contre !! ;)
Allez, au boulot !!!
PS : je vais essayer de faire un compte rendu de mes avancées ici ... ça pourra toujours servir à quelqu'un et ça me servira d'aide mémoire également.
-
0
-
-
Lili25 a ajouté un sujet dans Module PEEL Premium pour PEEL SHOPPING
Produits personnalisables par le clientBonjour à tous,
1 - Etant depuis peu sous peel Premium, je cherche un moyen de proposer au client pour un produit, la personnalisation avec le prénom. (Exemple : bol personnalisé, doudous ...).
Je ne peux me contenter d'entrer des prénoms à la volée dans la base (ex: 10000 prénoms d'un coup) car la fabrication est proposée même pour des prénoms inconnus ou rares.
Comment faire ? Existe-t-il un module tout prêt qui permettrait de proposer cette option pour certains produits (et pas les autres) ?
2 - De même, j'aimerais pouvoir proposer également la personnalisation avec une image à uploader par le client. (option payante)
3 - Enfin, je souhaite que le client joigne au produit (et non à la commande globale) un petit mot qui, par la suite, sera inséré sur une petite carte envoyée avec le produit. (option payante)
Piouf !! Ca en fait des modules ça !! J'ai bien trouvé certains moyens de le faire pour le point n° 1 en détectant la présence de l'option "Prénom" dans les attributs du produit et en remplacant le menu déroulant par un champ texte libre qui, par Ajax, va insérer dans la table peel_attributs le prénom saisi par le client. Mais je ne trouve pas ça très propre.
J'espère que l'un ou l'une d'entre vous a monté un projet identique et que je pourrai profiter de son expérience.
Merci et à très bientôt les peeloux !! ;)
- 8 réponses
- 3 026 vues