Hobbes Posted October 2, 2012 Share Posted October 2, 2012 Bonjour, Je souhaite rajouter l'information "en stock" à côté des attributs (dans la liste déroulante des groupes d'attributs sur la page produit) lorsque l'article est effectivement en stock avec cet attribut. Par exemple, j'ai un groupe d'attribut "Taille" avec les attributs "50","51","52","53"... qui s'affichent dans le menu déroulant, j'aimerai que l'on puisse voir "50 - en stock", "51 - sous 1 semaine", etc Je suppose que cela doit se passer ici dans le fichier product.tpl : <!-- attributes --> <div id="attributes"> {foreach from=$groups key=id_attribute_group item=group} {if $group.attributes|@count} <p> <label for="group_{$id_attribute_group|intval}">{$group.name|escape:'htmlall':'UTF-8'} :</label> {assign var="groupName" value="group_$id_attribute_group"} <select name="{$groupName}" id="group_{$id_attribute_group|intval}" onchange="javascript:findCombination();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if};"> {foreach from=$group.attributes key=id_attribute item=group_attribute} <option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'htmlall':'UTF-8'}">{$group_attribute|escape:'htmlall':'UTF-8'}</option> {/foreach} </select> </p> {/if} {/foreach} </div> Quelqu'un connaîtrait-il le bout de code à saisir pour permettre cet affichage ? Link to comment Share on other sites More sharing options...
ckarone Posted October 3, 2012 Share Posted October 3, 2012 Bonjour, C'est possible mais en modifiant plusieurs fichiers dans votre thème (themes/js/product.js et themes/product.tpl) dans les fichiers du BO (admin/tabs/AdminProduct.php et js/attributesBack.js) et dans la db (champs supplémentaires) La gestion de stock/dispo des attributs est un manque dans PS. Ckarone Link to comment Share on other sites More sharing options...
Hobbes Posted October 3, 2012 Author Share Posted October 3, 2012 Tiens? pourquoi faut-il rajouter des champs dans la DB?.... surtout que l'info existe déjà à priori (message si en stock et message si pas en stock) Est-il possible d'avoir la méthode à suivre ? ou bien cela réclame-t-il vraiment trop de code à modifier ? Link to comment Share on other sites More sharing options...
alex69 Posted October 12, 2012 Share Posted October 12, 2012 Bonjour, ckarone as tu déjà fais cette modification et peux tu éventuellement nous donner la marche à suivre afin que l'on puisse tester ? Je te remercie. Link to comment Share on other sites More sharing options...
ckarone Posted October 12, 2012 Share Posted October 12, 2012 (edited) Bonjour, Oui cette modification fonctionne parfaitement et pour plusieurs langues, mais cela demande pas mal de modifications. L'utilité de champs dans la DB va permettre d'ajouter une date de dispo et un statut (en commande,sur commande, en rupture,pré-commande) pour chacune des déclinaisons. J'ai déjà cité les fichiers (plus haut) à modifier et je n'ai malheureusement pas le temps pour expliquer pas à pas la procédure. Si vous avez une compétence en PHP, cela sera assez simple à faire. 1/ Ajoutez deux champs dans votre DB (1 pour le statut et 1 pour le délai) 2/ Dans le fichier admin/tabs/AdminProduct.php ajoutez deux listes déroulante juste en dessous de la quantité minimal: Exemple pour le statut : <select name="dispo_code" id="dispo_code"> <option value="">--</option> <option value="1">En stock</option> <option value="2">En commande</option> <option value="3">En rupture</option> <option value="4">Sur commande</option> <option value="5">Pré-commande</option> </select> -La première avec les statuts et la deuxième avec les délais si besoin -Vous devez modifier le tableau récapitulatif des déclinaisons pour afficher le contenu des deux champs statut et délai. -Modifier la boucle foreach ($combinaisons AS $k => $combinaison) pour récuperer les valeurs dans la DB. -Modifier le JS onclick="javascript:fillCombinaison pour ajouter les valeurs et respecter l'ordre. - Enfin ajouter dans $product->updateProductAttribute($id_product_attribute,..) vos deux champs pour les enreistrer. 3/Vous devez ajouter si ce n'est pas déjà les cas un override de la classe Product pour y ajouter vous deux champs dans les méthodes addProductAttribute, addCombinationEntity, updateProductAttribute et ne pas oublier de les déclarer. La suite arrive si vous parvenez à faire ces modifications. Ckarone Edited October 12, 2012 by ckarone (see edit history) Link to comment Share on other sites More sharing options...
ckarone Posted October 12, 2012 Share Posted October 12, 2012 La suite: 4/Le js du backoffice est à modifier: -Dans js/adminBack.js au début vous devez modifier function fillCombinaison(wholesale_price, price_impact, weight_impact, ajouter a la fin vos deux variables à rucupérer. -Ensuite vous devez ajouter ce le code ci-dessous pour que les champs coté BO se remplisse automatiquement lors de la modification d'une déclinaison. if (dispo_code == 0) { getE('dispo_code').options[getE('dispo_code').selectedIndex].value = 0; getE('dispo_code').selectedIndex = 0; } else if (!dispo_code) { getE('dispo_code').options[getE('dispo_code').selectedIndex].value = 0; getE('dispo_code').selectedIndex = 0; } else if (dispo_code == 1) { getE('dispo_code').options[getE('dispo_code').selectedIndex].value = 1; getE('dispo_code').selectedIndex = 1; } else if (dispo_code == 2) { getE('dispo_code').options[getE('dispo_code').selectedIndex].value = 2; getE('dispo_code').selectedIndex = 2; } else if (dispo_code == 3) { getE('dispo_code').options[getE('dispo_code').selectedIndex].value = 3; getE('dispo_code').selectedIndex = 3; } else if (dispo_code == 4) { getE('dispo_code').options[getE('dispo_code').selectedIndex].value = 4; getE('dispo_code').selectedIndex = 4; } else if (dispo_code == 5) { getE('dispo_code').options[getE('dispo_code').selectedIndex].value = 5; getE('dispo_code').selectedIndex = 5; } Ce code est valable pour votre liste déroulante dispo_code et faites de même pour le champs délai si vous l'utilisez. Voilà ici la modification pour le BO est terminée et vous devez pouvoir attribuer un statut et un délai pour vos déclinaisons. C'est pas suffisamment détaillé mais je manque de temps. La suite pour le FO bientôt Ckarone Link to comment Share on other sites More sharing options...
CaroZ Posted January 4, 2013 Share Posted January 4, 2013 Je suis prête à payer la presta si quelqu'un peut me faire ça Ca tente quelqu'un ? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now