Come disabilitare "Aggiungi al carrello" su prodotti specifici e invece visualizzare il pulsante "Visualizza dettagli" nella visualizzazione elenco categorie?


20

Mi chiedevo come disabilitare il pulsante Aggiungi al carrello su alcuni prodotti specifici e ho trovato una guida abbandonata su come farlo, che ha funzionato, ma era in qualche modo incompleta, in quanto era solo una soluzione nelle pagine di visualizzazione del prodotto, e non nell'elenco delle categorie o nelle pagine della griglia.

Risponderò alla mia domanda qui tra 8 ore (poiché devo aspettare 8 ore, poiché la mia reputazione è inferiore a un certo punto), dopo aver spiegato i primi passi, e la mia risposta sarà il terzo passaggio mancante che ho dovuto capire fuori per me stesso. Proverò a renderlo facile da seguire:

[Passo 1]

[1]

Crea un attributo che utilizzerai sui prodotti per i quali non desideri un pulsante Aggiungi al carrello. Nel pannello di amministrazione, vai a ...

Catalogo> Attributi> Gestisci attributi> Aggiungi nuovo attributo

Assegna un nome all'attributo come preferisci, ad esempio: "No_cart_button"

Con le proprietà:

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

Con Gestisci etichetta / Opzioni:

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

Ora salva questo attributo.

[2]

Assegna il tuo nuovo attributo a un gruppo, in modo da poterlo usare. Ho usato "Predefinito". Vai a...

Catalog > Attributes > Manage Attributes Sets > Select Set

Ora salva questo set di attributi.

[Passo 2]

Aggiungeremo un po 'di codice a view.phtml

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

Trova questo blocco di codice:

    <?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, ora sostituiscilo con questo blocco di codice:

<?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
}
?>

Questo codice controlla se No_cart_button è impostato su yes. Se impostato su Sì, genera il codice, che rimuoverà il pulsante Aggiungi al carrello e mostrerà invece il testo che dice "Questo prodotto non è disponibile online, si prega di chiamare il nostro rappresentante se si desidera acquistare questo".

Ok, questi 2 passaggi sono completi e rimuove Aggiungi al carrello dalla pagina di visualizzazione del prodotto.

Tuttavia, ciò non rimuove il pulsante "Aggiungi al carrello" nelle pagine dell'elenco delle categorie. Ora, vogliamo creare un pulsante "Visualizza dettagli" nelle pagine dell'elenco delle categorie, anziché il pulsante "Aggiungi al carrello".

[MODIFICARE]

Risposta:

kevinkirchner è corretto, ora aggiungeremo questa logica a list.phtml. Abbiamo già verificato che le impostazioni degli attributi per "Usato nella scheda di prodotto" sono impostate su "SÌ".

Ok,

[Passaggio 3]

Lo faremo quando Disabilita Aggiungi al carrello è impostato su Sì, disabilita anche il pulsante "Aggiungi al carrello" nelle pagine dell'elenco delle categorie.

Vai a list.phtml

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

e cerca questo file per:

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

Dovrebbe apparire 2 volte in questo file.

Proprio sotto questa riga, inserisci il seguente codice

<?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 {
?>

Quindi, proprio sotto il codice che crea il normale pulsante "Aggiungi al carrello", vedrai

<?php
}
?>

proprio sotto questo, inserisci un altro dello stesso bit di codice:

<?php
}
?>

Ok, ora fai esattamente gli stessi 2 passaggi per l'altro blocco di codice in questo file dove trovi

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

È necessario eseguire questa operazione due volte, perché la prima volta è per Visualizzazione elenco e la seconda volta è per Visualizzazione griglia.


Questo non è il mio sito web per 'showcase' o 'show off'. Domande e risposte sull'IT. Raccomando che questa "cosiddetta" domanda sia chiusa.
Marius

Oh, speravo di aiutare le persone - Dovrei invece eliminare questo o lasciarlo in modo che sia ricercabile?
stephen saggio,

@Marius Non penso che questo sia "in mostra" tanto quanto l'OP ha bisogno di elaborare abbastanza rappresentante per pubblicare la propria risposta. Voterò di chiudere fino a quel momento, quindi mi rivolgerò a una riapertura o puoi inviare nuovamente le tue domande e risposte.
Filwinkle

Mi dispiace ragazzi, dovrei imparare meglio i modi di Stack Exchange. Imparerò anche con esperienza, grazie per avermi aiutato a capire queste cose.
stephen saggio,

Risposte:


7
  1. Assicurati che il tuo attributo sia disponibile nella pagina di elenco dei prodotti impostando "Usato in Elenco prodotti" su "Sì" quando modifichi l'attributo - screenshot

  2. Aggiungi la tua logica a template/catalog/product/list.phtmlper mostrare il pulsante Aggiungi al carrello / Visualizza dettagli


Sì! Selezionerò la tua risposta. Fornirò dettagli più specifici in una modifica sul mio post originale.
stephen saggio,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.