Jump to content
Xav5402

Retrirer choix quantité pour produit dématérialisé

Recommended Posts

Bonjour,

Je m'occupe du site d'une boutique qui vend à la fois des produits dématérialisés et des produits classiques.

Les produits classiques sont envoyés par la poste.

Les produits dématérialisée sont disponibles au téléchargement dés que le paiement est accepté.

J'aimerais faire en sorte que le choix "quantité" ne soit disponible que pour les produits classiques et pas pour les produits dématérialisés.

Depuis plusieurs jours, je fait des recherches sur ce forum et sur internet sans parvenir à trouver une solution qui me satisfasse.

J'utilise un PRESTASHOP 1.7.6.2

Je travaille en local via MAMP.

Je pense que la solution est de passer via le custom.css de mon thème.

J'ai trouvé ce code : .product-quantity .qty {
    display: none;
Il fait disparaitre le champs quantité( j'ai testé), mais il le fait pour tous les produits, ce que je ne veux pas.

Dans la base de données du site, dans la table product, il existe un champs is_virtual (valeur 0 ou 1) qui fait le distinguo entre produits dématérialisée et produits classiques (en tout cas c'est ce que je pense)

Je ne trouve pas comment écrire le code qui fera disparaitre ou apparaitre le choix de quantité en fonction de la valeur de is_virtual ( qui ne peut être que 0 ou 1)

Quelqu'un aurait peut il m'aider ? En même temps j'apprendrais :) merci.

Xav.

 

Share this post


Link to post
Share on other sites

Bonjour,

dans le fichier de votre template /templates/catalog/_partials/product-add-to-cart.tpl

si vous essayez de remplacer

<div class="qty">

<div class="qty">

par

<div class="qty{if $product.is_virtual} hidden{/if}">

je n'ai pas vérifié que la classe hidden existe mais au pire vous la rajoutez dans le custom.css et je n'ai pas non plus contrôler que la variable is_virtual soit proposée dans le tableau de $product mais cela donne l'idée de départ en tout cas.

Share this post


Link to post
Share on other sites
30 minutes ago, Mediacom87 said:

Bonjour,

dans le fichier de votre template /templates/catalog/_partials/product-add-to-cart.tpl

si vous essayez de remplacer

<div class="qty">


<div class="qty">

par


<div class="qty{if $product.is_virtual} hidden{/if}">

je n'ai pas vérifié que la classe hidden existe mais au pire vous la rajoutez dans le custom.css et je n'ai pas non plus contrôler que la variable is_virtual soit proposée dans le tableau de $product mais cela donne l'idée de départ en tout cas.

Merci pour votre réponse, je vais aller essayer cela tout de suite, je ne suis pas sur de savoir rajouter une classe mais ce sera l'occasion d'apprendre :)

Share this post


Link to post
Share on other sites

Bon bah ça ne fonctionnes pas... je creuser :) quelqu'un a une pelle ?

Share this post


Link to post
Share on other sites

je viens de tester et cela fonctionne très très bien, la lasse hidden s'affiche bien que si le produit est virtuel, mais bon comme elle n'est pas définie en 1.7 il faut la créer dans le fichier custom.tpl pour qu'elle cache l'élément souhaité.

Je vous laisse chercher comme définir cette classe c'est la base de la base donc il est nécessaire de connaitre cela.

Share this post


Link to post
Share on other sites

 

J'ai quelques notion lointaines, je vais les rafraîchir :) merci pour votre aide.

Share this post


Link to post
Share on other sites

Bonjour,

Alors voici le résultat de mon "petit apprentissage", si ça peux en aider quelques-uns.

Pour résoudre mon problème, j'ai suivi le conseils de Mediacom87

J'ai déclaré .hidden dans mon custom.css comme suit :

Quote

.hidden{
    display: none
}

Ensuite j'ai appliqué la solution donnée par Medicom87, à savoir modifier le template product-and-to-cart.tpl en y remplaçant la ligne :

Quote

<div class="qty">

 Par 

Quote

<div class="qty{if $product.is_virtual} hidden{/if}">

Et ça fonctionne :) (Comme me l'avait dit Mediacom87)

En plus, maintenant je comprend un peu mieux le CSS !

Maintenant je vais essayer de faire disparaitre le label "Quantité" selon les mêmes règles.

Merci à Mediacom87 !

Share this post


Link to post
Share on other sites

Hé bien une fois qu'on a compris le principe... c'est plutôt facile :

J'ai appliqué mon Hidden conditionnel à l'élément supérieur <div class="product-quantité Row sm-bottom"> au lieu de simplement l'appliquer à <div class="qty">, puisque cet élément supérieur contient le label que je voulais faire disparaitre :)

{block name='product_quantity'}
      <div class="product-quantity row sm-bottom{if $product.is_virtual} hidden{/if}">
        <label class="form-control-label col-3">{l s='Quantity' d='Shop.Theme.Catalog'}</label>
        <div class="col-9">
          <div class="qty">
            <input
              type="number"
              name="qty"
              id="quantity_wanted"
              value="{$product.quantity_wanted}"
              class="form-control"
              min="{$product.minimal_quantity}"
              aria-label="{l s='Quantity' d='Shop.Theme.Actions'}"
            />
          </div>
        </div>
      </div>
    {/block}

 

Edited by Xav5402 (see edit history)

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More