Comment désactiver «Ajouter au panier» sur des produits spécifiques et afficher le bouton «Afficher les détails» à la place dans la liste des catégories?


20

Je me demandais comment désactiver le bouton Ajouter au panier sur certains produits spécifiques, et j'ai trouvé un guide abandonné sur la façon de le faire, qui a fonctionné, mais il était quelque peu incomplet, car il ne s'agissait que d'une solution sur les pages d'affichage des produits, et non sur la liste des catégories ou les pages de la grille.

Je répondrai ici à ma propre question dans 8 heures (car j'ai besoin d'attendre 8 heures, car ma réputation est en dessous d'un certain point), après avoir expliqué les premières étapes, et ma réponse sera la 3e étape manquante que je devais comprendre pour moi. Je vais essayer de rendre cela facile à suivre:

[Étape 1]

[1]

Créez un attribut que vous utiliserez sur les produits sur lesquels vous ne souhaitez pas ajouter de bouton Ajouter au panier. Dans le tableau de bord Admin, accédez à ...

Catalogue> Attributs> Gérer les attributs> Ajouter un nouvel attribut

Nommez votre attribut comme bon vous semble, par exemple: "No_cart_button"

Avec les propriétés:

Attribute Code: No_cart_button
Catalog Input Type for Store Owner: Yes/No


Use in Quick Search: No     
Use in Advanced Search: No  
Comparable on Front-end: No
Visible on Product View Page on Front-end: No   
Used in Product Listing: YES
Used for Sorting in Product Listing: No

Avec Gérer l'étiquette / les options:

Admin: Disable Add to Cart
English: Disable Add to Cart

Enregistrez maintenant cet attribut.

[2]

Attribuez votre nouvel attribut à un groupe afin de pouvoir l'utiliser. J'ai utilisé "Default". Aller à...

Catalog > Attributes > Manage Attributes Sets > Select Set

Enregistrez maintenant cet ensemble d'attributs.

[Étape 2]

Nous allons ajouter du code à view.phtml

app/design/frontend/default/theme/template/catalog/product/view.phtml

Trouvez ce bloc de code:

    <?php if (!$this->hasOptions()):?>
    <div class="add-to-box">
    <?php if($_product->isSaleable()): ?>
    <?php echo $this->getChildHtml('addtocart') ?>
    <?php if( $this->helper('wishlist')->isAllow() || $_compareUrl=$this->helper('catalog/product_compare')->getAddUrl($_product)): ?>
    <span class="or"><?php echo $this->__('OR') ?></span>
    <?php endif; ?>
    <?php endif; ?>
    <?php echo $this->getChildHtml('addto') ?>
    </div>
    <?php echo $this->getChildHtml('extra_buttons') ?>
    <?php elseif (!$_product->isSaleable()): ?>
    <div class="add-to-box">
    <?php echo $this->getChildHtml('addto') ?>
    </div>
    <?php endif; ?>

ok, remplacez-le maintenant par ce bloc de code:

<?php
//Checks if the "Disable Add to Cart" variable is set to 'Yes': 
if(($_product->getAttributeText('No_cart_button')) == "Yes"){
//If set to Yes, tell PHP what to output:
echo "This Product is not available online, please call our representative if you wish to purchase this.";
}
//If set as No, then show the 'add to cart box' as usual.
else {
?>

<?php if (!$this->hasOptions()):?>
<div class="add-to-box">
<?php if($_product->isSaleable()): ?>
<?php echo $this->getChildHtml('addtocart') ?>
<?php if( $this->helper('wishlist')->isAllow() || $_compareUrl=$this->helper('catalog/product_compare')->getAddUrl($_product)): ?>
<span class="or"><?php echo $this->__('OR') ?></span>
<?php endif; ?>
<?php endif; ?>
<?php echo $this->getChildHtml('addto') ?>
</div>
<?php echo $this->getChildHtml('extra_buttons') ?>
<?php elseif (!$_product->isSaleable()): ?>
<div class="add-to-box">
<?php echo $this->getChildHtml('addto') ?>
</div>
<?php endif; ?>

<?php
}
?>

Ce code vérifie si No_cart_button est défini sur yes. S'il est défini sur Oui, il génère le code, ce qui supprimera le bouton Ajouter au panier et affichera à la place du texte qui dit: "Ce produit n'est pas disponible en ligne, veuillez contacter notre représentant si vous souhaitez l'acheter.".

Ok, ces 2 étapes sont terminées et supprime Ajouter au panier sur la page de visualisation du produit.

Mais cela ne supprime pas le bouton "Ajouter au panier" sur les pages de liste des catégories. Maintenant, nous voulons créer un bouton "Afficher les détails" sur les pages de liste de catégories, au lieu du bouton "Ajouter au panier".

[ÉDITER]

Répondre:

kevinkirchner est correct, nous allons ajouter cette logique à list.phtml maintenant. Nous avons déjà vérifié que les paramètres d'attribut pour "Utilisé dans la liste des produits" sont définis sur "OUI".

D'accord,

[Étape 3]

Nous le ferons ainsi lorsque Désactiver le panier est défini sur Oui, il désactive également le bouton "Ajouter au panier" sur les pages de liste des catégories.

Accédez à list.phtml

app/design/frontend/default/theme/template/catalog/product/list.phtml

et recherchez dans ce fichier:

<?php if($_product->isSaleable()): ?>

Il devrait apparaître 2 fois dans ce fichier.

Juste en dessous de cette ligne, insérez le code suivant

<?php
if(($_product->getAttributeText('No_cart_button')) == "Yes"){ ?>
<p><button type="button" title="<?php echo $this->__('View Details') ?>" class="button btn-cart" onclick="location.href='<?php echo $_product->getProductUrl() ?>'"><span><span><?php echo $this->__('View Details') ?></span></span></button></p>
<?php 
}
else {
?>

Ensuite, juste en dessous de votre code qui crée le bouton normal "Ajouter au panier", vous verrez

<?php
}
?>

juste en dessous, insérez un autre du même morceau de code:

<?php
}
?>

Ok, maintenant faites exactement la même chose en 2 étapes pour l'autre bloc de code dans ce fichier où vous trouvez

<?php if($_product->isSaleable()): ?>

Vous devez le faire deux fois, car la première fois est pour la vue Liste et la deuxième fois pour la vue Grille.


Ce n'est pas moi le site Web pour «showcase» ou «show off». Q&A des TI. Je recommande que cette «soi-disant» question soit close.
Marius

Oh, j'espérais aider les gens - Dois-je plutôt le supprimer ou le laisser pour qu'il soit consultable?
stephen sage

@Marius, je ne pense pas que cela "montre" autant que l'OP doit travailler suffisamment de représentants pour publier sa propre réponse. Je vote pour fermer jusqu'à ce moment-là, puis j'adresserai une réouverture ou vous pouvez republier votre Q&R.
philwinkle

Désolé les gars, je devrais mieux apprendre les méthodes de Stack Exchange. J'apprendrai aussi avec l'expérience, merci de m'aider à comprendre ces choses.
stephen sage

Réponses:


7
  1. Assurez-vous que votre attribut est disponible sur la page de liste de produits en définissant "Utilisé dans la liste de produits" sur "Oui" lors de la modification de votre attribut - capture d'écran

  2. Ajoutez votre logique pour template/catalog/product/list.phtmlafficher le bouton Ajouter au panier / Afficher les détails


Oui! Je vais sélectionner votre réponse. Je fournirai des détails plus spécifiques dans une modification de mon message d'origine.
stephen sage
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.