Jump to content

[TUTO] Remplacer quantité par une durée


Recommended Posts

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 by titityler (see edit history)
Link to comment
Share on other sites

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...