favancini Posted September 2, 2014 Share Posted September 2, 2014 Bonjour, Je voudrais retirer le choix de quantité sur certains de mes produits. Je sais le faire pour tous les produits : en modifiant le product.tpl mais pas individuellement pour certains produits Par avance merci pour votre aide 1 Link to comment Share on other sites More sharing options...
zombie process Posted September 6, 2014 Share Posted September 6, 2014 (edited) C'est possible en surchargant l'object Product pour y ajouter une propriété (par ex allow_qty_input) et modifier la définiton de l'objet. N'oubliez pas de modifier votre base ALTER ps_product ADD allow_qty_input TINYINT(1) UNSIGNED NOT NULL DEFAULT 1; Vous pouvez ensuite surcharger le template quantities.tpl (override/controllers/template/products/) pour y ajouter la possibilité d'attribuer une valeur à cette propriété, puisqu'il s'agit d'une valeur booléenne (true/false), préférez une checkbox ou un switch. Dans votre tpl product.tpl, modifier l'input quantité selon la valeur de allow_qty_input {if product->allow_qty_input|intval} <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}" /> <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> {else} <input type="hidden" name="qty" id="quantity_wanted" value="{if $product->minimal_quantity > 1}{$product->minimal_quantity}{else}1{/if}" /> {/if} Edited September 6, 2014 by zombie process (see edit history) Link to comment Share on other sites More sharing options...
loulou66 Posted September 7, 2014 Share Posted September 7, 2014 coucou je complète ce qu'a dit @Zombie process regarde ce post ce le même principe pour ps 1.6 (pour ps 1.5 les post est plus bas) http://www.prestashop.com/forums/topic/192268-ajouter-un-bandeau-nouveau-sur-les-nouveaux-produits/?p=1660238 sauf qu'en étape 4 tu modifieras comme la indiquer zombie le product.tpl @++ Loulou66 Link to comment Share on other sites More sharing options...
favancini Posted September 13, 2014 Author Share Posted September 13, 2014 (edited) Salut Désolé de répondre un peu tardivement Lorsque j'éxécute la requête SQL suivante : ALTER ps_product ADD allow_qty_inputTINYINT(1) UNSIGNED NOT NULL DEFAULT 1; cela me retourne qu'il y a une erreur de syntaxe EDIT : j'ai modifier la requête en mettant pss_product comme dans ma base au lieu de ps_product mais cela me retourne quand même qu'il y a une erreur de syntaxe après, est-ce qu'il est possible de m'expliquer pas-à-pas en mixant les deux topics parce que je ne suis pas sûr de tout comprendre... Edited September 13, 2014 by favancini (see edit history) Link to comment Share on other sites More sharing options...
loulou66 Posted September 13, 2014 Share Posted September 13, 2014 Coucou quelle est ton prefix des table dans la base de donnée ? cad. ps_ product ou pss_product autrechose_product met le bon prefix et un espace entre allow_qty_input et TINYINT(1) @++ Loulou66 Link to comment Share on other sites More sharing options...
favancini Posted September 14, 2014 Author Share Posted September 14, 2014 Salut, le prefix des tables dans ma base de donnée est pss j'ai mis : ALTER pss_product ADD allow_qty_input TINYINT(1) UNSIGNED NOT NULL DEFAULT 1; mais j'ai toujours une erreur de syntaxe Link to comment Share on other sites More sharing options...
loulou66 Posted September 14, 2014 Share Posted September 14, 2014 coucou oui le point virgule a la fin il n'en faut pas @++ Loulou66 Link to comment Share on other sites More sharing options...
favancini Posted September 14, 2014 Author Share Posted September 14, 2014 re j'ai mis la ligne sans le point virgule ALTER pss_product ADD allow_qty_input TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 mais cela me retourne toujours une erreur de syntaxe Peut-il y avoir un problème de version de MySQL? Si j'en crois la doc vers laquelle ma base renvoi, je suis en MySQL 5.1 Link to comment Share on other sites More sharing options...
loulou66 Posted September 14, 2014 Share Posted September 14, 2014 Coucou ou peut etre que le colonne a déjà été crée vérifie a la fin de pss_product qu'il n'y est pas une colonne allow_qty_input j'ai fait cette manip plusieurs fois elle fonctionne très bien ALTER `pss_product` ADD `allow_qty_input` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 ** les ` sont les carractères fait avec les touches ALT GR+7 @++ Loulou66 Link to comment Share on other sites More sharing options...
favancini Posted September 14, 2014 Author Share Posted September 14, 2014 j'ai tapé la ligne à la main (avec ALT GR+7) et fait aussi un copier-coller depuis ton post et cela ne fonctionne pas l'erreur est : #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`pss_product` ADD `allow_qty_input` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1' at line 1 Mon serveur indique au dessus de la fenêtre de requête MySQL : Exécuter une ou des requêtes SQL sur le serveur "localhost" Ma base est sur un serveur OVH : est-ce normal que cela indique "localhost"? A+ François Link to comment Share on other sites More sharing options...
zombie process Posted September 15, 2014 Share Posted September 15, 2014 ALTER TABLE pss_product ... Link to comment Share on other sites More sharing options...
loulou66 Posted September 15, 2014 Share Posted September 15, 2014 Coucou ha oui si je recopie tes betises aussi on va pa s s'en sortir ^^ copie les phrases qui se trouve dans le lien colle dans la requete sql et change le nom de la colonne et voilou @++ Loulou66 Link to comment Share on other sites More sharing options...
favancini Posted September 15, 2014 Author Share Posted September 15, 2014 oki requête ALTER TABLE `pss_product` ADD `allow_qty_input` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT 1 résultat Votre requête SQL a été exécutée avec succès (Traitement en 0.1614 sec) Merci pour votre patience Link to comment Share on other sites More sharing options...
favancini Posted September 15, 2014 Author Share Posted September 15, 2014 salut, je n'ai pas de fichier quantities.tpl dont parle zombie process dans son premier post, dans le dossier override ni dans un autre dossier. j'avais modifier le fichier product.tpl pour que le choix de quantité n'apparaisse sur aucun produit : cela provient-il de cette modif? Link to comment Share on other sites More sharing options...
loulou66 Posted September 15, 2014 Share Posted September 15, 2014 coucou bien joué ^^ il s'agit du fichier themes/ton_theme/product.tpl ligne 319 sur un ps 1.6.0.9 @++ Loulou66 Link to comment Share on other sites More sharing options...
favancini Posted September 15, 2014 Author Share Posted September 15, 2014 salut j'ai modifié le product.tpl et mes produits ne se chargent plus sur le front office Link to comment Share on other sites More sharing options...
loulou66 Posted September 15, 2014 Share Posted September 15, 2014 Coucou il doit avoir une erreur met nous le code que tu as mis ( avec 3-4 ligne avant et apres) peut un {/if} qui manque et active les message d'erreur http://www.prestashop.com/forums/topic/232472-que-faire-en-cas-de-page-blanche-ou-partie-blanche-dans-le-shop/ @++ Loulou66 Link to comment Share on other sites More sharing options...
zombie process Posted September 15, 2014 Share Posted September 15, 2014 (edited) quantities.tpl est un tpl backoffice, il peut être surchargé: l'original se trouve dans /dossier_admin/themes/default/template/controllers/products; il s'agit d'en placer une copie dans override/controllers/admin/templates/products (créer ces dossiers s'il n'existent pas); La dedans tu pourra ajouter ton input pour pouvoir modifier la valeur (1/0) de allow_qty_input. Il faut surcharger la classe Product également, il s'agit simplement d'ajouter la propriété allow_qty_input et de modifier la variable $definition. Tout le reste peut être supprimé. Une fois que l'objet Produit "sait" qu'il a une nouvelle propriété alors tu peux l'utiliser dans ton template. Il faut faire les choses dans l'ordre. modif bdd modif (override) classe Product modif formulaire back-office (quantities.tpl) mais ca peut aussi être information.tpl (peu importe) modif tpl front-office Edited September 15, 2014 by zombie process (see edit history) Link to comment Share on other sites More sharing options...
favancini Posted September 17, 2014 Author Share Posted September 17, 2014 Salut, Ok, alors, je vous mets les modifs que j'ai faites : 1- la modif bdd, c'est fait. 2- modif (override) classe Product, dans product.php /** @var boolean Product statuts */ public $active = true; /** @var boolean Product statuts */ public $allow_qty_input = false; /** @var boolean Product statuts */ public $redirect_type = ''; 'active' => array('type' => self::TYPE_BOOL, 'shop' => true, 'validate' => 'isBool'), 'redirect_type' => array('type' => self::TYPE_STRING, 'shop' => true, 'validate' => 'isString'), 'id_product_redirected' => array('type' => self::TYPE_INT, 'shop' => true, 'validate' => 'isUnsignedId'), 'available_for_order' => array('type' => self::TYPE_BOOL, 'shop' => true, 'validate' => 'isBool'), 'allow_qty_input' => array('type' => self::TYPE_BOOL, 'shop' => true, 'validate' => 'isBool'), 'available_date' => array('type' => self::TYPE_DATE, 'shop' => true, 'validate' => 'isDateFormat'), 3- modif formulaire back-office; j'ai modifié le information.tpl <div class="form-group"> <label class="control-label col-lg-3" for="upc"> <span class="label-tooltip" data-toggle="tooltip" title="{l s='This type of product code is widely used in the United States, Canada, the United Kingdom, Australia, New Zealand and in other countries.'}"> {$bullet_common_field} {l s='UPC barcode'} </span> </label> <div class="col-lg-3"> <input maxlength="12" type="text" id="upc" name="upc" value="{$product->upc|escape:html:'UTF-8'}" /> </div> </div> <hr/> {* status informations *} <div class="form-group"> <label class="control-label col-lg-3"> {include file="controllers/products/multishop/checkbox.tpl" field="allow_qty_input" type="radio" onclick=""} {l s='Display Img New'} </label> <div class="col-lg-9"> <span class="switch prestashop-switch fixed-width-lg"> <input onclick="toggleDraftWarning(false);" type="radio" name="allow_qty_input" id="allow_qty_input_on" value="1" {if $product->allow_qty_input}checked="checked" {/if} /> <label for="allow_qty_input_on" class="radioCheck"> {l s='Yes'} </label> <input onclick="toggleDraftWarning(true);" type="radio" name="allow_qty_input" id="allow_qty_input_off" value="0" {if !$product->allow_qty_input}checked="checked"{/if} /> <label for="allow_qty_input_off" class="radioCheck"> {l s='No'} </label> <a class="slide-button btn"></a> </span> </div> </div> <div class="form-group"> <label class="control-label col-lg-3"> {include file="controllers/products/multishop/checkbox.tpl" field="active" type="radio" onclick=""} {l s='Enabled'} </label> <div class="col-lg-9"> <span class="switch prestashop-switch fixed-width-lg"> <input onclick="toggleDraftWarning(false);showOptions(true);showRedirectProductOptions(false);" type="radio" name="active" id="active_on" value="1" {if $product->active || !$product->isAssociatedToShop()}checked="checked" {/if} /> <label for="active_on" class="radioCheck"> {l s='Yes'} </label> <input onclick="toggleDraftWarning(true);showOptions(false);showRedirectProductOptions(true);" type="radio" name="active" id="active_off" value="0" {if !$product->active && $product->isAssociatedToShop()}checked="checked"{/if} /> <label for="active_off" class="radioCheck"> {l s='No'} </label> <a class="slide-button btn"></a> </span> </ 4- modif tpl front office, product.tpl {hook h="displayProductPriceBlock" product=$product type="weight"} <div class="clear"></div> </div> <!-- end content_prices --> <div class="product_attributes clearfix"> <!-- quantity wanted --> {if !$PS_CATALOG_MODE} {if product->allow_qty_input|intval} <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}" /> <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> {else} <input type="hidden" name="qty" id="quantity_wanted" value="{if $product->minimal_quantity > 1}{$product->minimal_quantity}{else}1{/if}" /> {/if} {/if} <!-- minimal quantity wanted --> <p id="minimal_quantity_wanted_p"{if $product->minimal_quantity <= 1 || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}> {l s='This product is not sold individually. You must select at least'} <b id="minimal_quantity_label">{$product->minimal_quantity}</b> {l s='quantity for this product.'} </p> {if isset($groups)} <!-- attributes --> <div id="attributes"> >> les produits ne s'affichent plus dans le front office Link to comment Share on other sites More sharing options...
loulou66 Posted September 17, 2014 Share Posted September 17, 2014 Coucou remplaces {if product->allow_qty_input|intval} par {if $product->allow_qty_input|intval} @++ Loulou66 Link to comment Share on other sites More sharing options...
favancini Posted September 17, 2014 Author Share Posted September 17, 2014 (edited) Salut, Cela fonctionne, merci beaucoup pour votre aide Par contre, même si j'ai bien le bouton on/off dans la page produit dans le back office et que ce bouton fonctionne puisque cela active ou désactive bien l'affichage des quantités dans le front office, j'ai le message : Une erreur s'est produite pendant la mise à jour de l'objet. product () dans le back office lorsque j'enregistre les modifications apportées aux produits Edited September 17, 2014 by favancini (see edit history) Link to comment Share on other sites More sharing options...
loulou66 Posted September 18, 2014 Share Posted September 18, 2014 Coucou tu as bien crée la même entée dans pss_product_shop ? @++ Loulou66 Link to comment Share on other sites More sharing options...
favancini Posted September 19, 2014 Author Share Posted September 19, 2014 Salut, je n'avais pas créé cette entrée cela fonctionne maintenant. Encore merci A+ François Link to comment Share on other sites More sharing options...
karibou510 Posted November 9, 2014 Share Posted November 9, 2014 Bonjour, Merci pour ce sujet, c'est exactement ce que je cherchais. J'ai juste besoin d'une petite precision ; j'ai le message d'erreur : Une erreur s'est produite pendant la mise à jour de l'objet. product () mais je ne sais pas comment faire pour : "Créer la même entrée dans pss_product_shop" Pouvez vous m'aider. Merci Link to comment Share on other sites More sharing options...
karibou510 Posted November 9, 2014 Share Posted November 9, 2014 Coucou, J'ai finalement trouvé, c'est simplement ajouter le même champ dans la table xxx_product_shop, sur ma base appliquer la requête : ALTER TABLE ps_product_shop ADD allow_qty_input TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT 1 Cela fonctionne bien. Merci pour ce tuto, Link to comment Share on other sites More sharing options...
WebDevAE Posted January 8, 2015 Share Posted January 8, 2015 Merci ! Link to comment Share on other sites More sharing options...
boutiqueshenron Posted February 22, 2018 Share Posted February 22, 2018 prestashop 1.7 merci de m'aider Link to comment Share on other sites More sharing options...
loulou66 Posted March 7, 2018 Share Posted March 7, 2018 Coucou pour la PS 1.7 suivez mes même instructions que pour la PS 1.6 ajouter un nouveau bandeau ps 1.6 a vous d'adapter le nom de la variable(imgnew) suivant votre choix @++ Loulou66 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