titityler Posted February 3, 2015 Share Posted February 3, 2015 (edited) Bonjour à tous Etant en train de développer un site de vente de service hébergement, il me fallait un moyen que le produit vendu soit disponible pour un nombre de Mois donné. Exemple : 3 mois - 6 mois ou 12 mois Le problème, la modification s'applique à tous les produits. J'ai donc intégré une condition pour que certains produits puissent toujours être commandé en quantités. On va rajouter une case à cocher dans le BackOffice au moment de créer le produit. 1°) via PhpMyAdmin, créer une colonne "choixqty" dans la table product et product_shop avec les requêtes sql suivantes ou à la main : ALTER TABLE `ps_product` ADD `choixqty` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0' ALTER TABLE `ps_product_shop` ADD `choixqty` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0' 2°) création d'une case a cocher dans l'admin product (on prend exemple sur la case a cocher "TYPE" tout en haut de la création du produit) dans classes/product.php : apres ligne 165 /** @var boolean Product statuts */ public $choixqty = false; apres ligne 289 'choixqty' => array('type' => self::TYPE_INT, 'shop' => true, 'validate' => 'isUnsignedInt'), 3°) Ajout de la case à cocher dans le formulaire, éditer le fichier admin/theme/default/templates/controllers/products/information.tpl apres la ligne 191 environ {* status informations *} ajouter <div class="form-group"> <label class="control-label col-lg-3"> {$bullet_common_field} {l s='Choix type quantité'} </label> <div class="col-lg-9"> <div class="radio"> <label for="choixqty1" class="radioCheck"> <input type="radio" name="choixqty" id="choixqty1" value="1" {if $product->choixqty == 1}checked="checked" {/if}> {l s='3 - 6 ou 12 mois'} </label> </div> <div class="radio"> <label for="choixqty2" class="radioCheck"> <input type="radio" name="choixqty" id="choixqty2" value="2" {if $product->choixqty == 2}checked="checked" {/if}> {l s='Quantité libre'} </label> </div> </div> </div> 4°) Il faut modifier le fichier suivant : themes/VOTRE_THEME/product.tpl Vers la ligne numéro 314, vous avez la partie du choix de quantité : <div class="product_attributes clearfix"> <!-- quantity wanted --> {if !$PS_CATALOG_MODE} <p id="quantity_wanted_p"{if (!$allow_oosp && $product->quantity <= 0) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}> <label>{l s='Quantity'}</label> <input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}{if $product->minimal_quantity > 1}{$product->minimal_quantity}{else}1{/if}{/if}" /> 3<input type="radio" name="qty" id="quantity_wanted" class="text" value="3" /> 6<input type="radio" name="qty" id="quantity_wanted" class="text" value="6" /> 12<input type="radio" name="qty" id="quantity_wanted" class="text" value="12" /> <form name="f"> <select name="qty" id="quantity_wanted"> <option value="1" selected> 1 </option> </select> </form> <a href="#" data-field-qty="qty" class="btn btn-default button-minus product_quantity_down"> <span><i class="icon-minus"></i></span> </a> <a href="#" data-field-qty="qty" class="btn btn-default button-plus product_quantity_up"> <span><i class="icon-plus"></i></span> </a> <span class="clearfix"></span> </p> {/if} Voici le code à mettre à la place : <div class="product_attributes clearfix"> <!-- quantity wanted --> {if !$PS_CATALOG_MODE} <p id="quantity_wanted_p"{if (!$allow_oosp && $product->quantity <= 0) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}> <label>{l s='Quantity'}</label> {if $product->choixqty == 1} (Nombres de mois) <form name="f"> <select name="qty" id="quantity_wanted"> <option value="3" selected> 3 </option> <option value="6"> 6 </option> <option value="12"> 12 </option> </select> </form> {elseif $product->choixqty == 2} <input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}{if $product->minimal_quantity > 1}{$product->minimal_quantity}{else}1{/if}{/if}" /> <a href="#" data-field-qty="qty" class="btn btn-default button-minus product_quantity_down"> <span><i class="icon-minus"></i></span> </a> <a href="#" data-field-qty="qty" class="btn btn-default button-plus product_quantity_up"> <span><i class="icon-plus"></i></span> </a> {/if} <span class="clearfix"></span> </p> {/if} Merci à loulou66 pour le coup de main Edited February 3, 2015 by titityler (see edit history) Link to comment Share on other sites More sharing options...
loulou66 Posted February 3, 2015 Share Posted February 3, 2015 coucou tu peut t'inspirer de cet exemple pour crée des case a cocher coter BO et afficher ce que tu veut suivant la valeur de cette case en FO pour la 1.6 https://www.prestashop.com/forums/topic/192268-ajouter-un-bandeau-nouveau-sur-les-nouveaux-produits/?p=1660238 pour le 1.5 https://www.prestashop.com/forums/topic/192268-ajouter-un-bandeau-nouveau-sur-les-nouveaux-produits/?p=1660687 @++ Loulou66 Link to comment Share on other sites More sharing options...
titityler Posted February 3, 2015 Author Share Posted February 3, 2015 Merci grâce à toi je l'ai rajouté, j'édite le TUTO pour rajouter ta solution. Encore merci. 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