Wie kann ich "In den Warenkorb" für bestimmte Produkte deaktivieren und stattdessen die Schaltfläche "Details anzeigen" in der Kategorielistenansicht anzeigen?

20

Ich habe mich gefragt, wie die Schaltfläche "In den Warenkorb" für einige bestimmte Produkte deaktiviert werden kann, und ich habe eine verlassene Anleitung gefunden, die funktioniert, aber etwas unvollständig ist, da es sich nur um eine Lösung auf den Produktansichtseiten handelt. und nicht auf Kategorielisten oder Gitterseiten.

Ich werde meine eigene Frage hier in 8 Stunden beantworten (da ich 8 Stunden warten muss, da mein Ruf unter einem bestimmten Punkt liegt), nachdem ich die ersten Schritte erklärt habe, und meine Antwort wird der fehlende 3. Schritt sein, den ich herausfinden musste raus für mich. Ich werde versuchen, dies so einfach wie möglich zu gestalten:

[Schritt 1]

[1]

Erstellen Sie ein Attribut, das Sie für Produkte verwenden möchten, für die die Schaltfläche "In den Warenkorb" nicht aktiviert sein soll. Gehen Sie im Admin-Dashboard zu ...

Katalog> Attribute> Attribute verwalten> Neues Attribut hinzufügen

Nennen Sie Ihr Attribut wie Sie möchten, zum Beispiel: "No_cart_button"

Mit den Eigenschaften:

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

Mit Label / Optionen verwalten:

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

Speichern Sie nun dieses Attribut.

[2]

Weisen Sie Ihr neues Attribut einer Gruppe zu, damit Sie es verwenden können. Ich habe "Default" verwendet. Gehe zu...

Catalog > Attributes > Manage Attributes Sets > Select Set

Speichern Sie nun diesen Attributsatz.

[Schritt 2]

Wir werden view.phtml etwas Code hinzufügen

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

Suchen Sie diesen Codeblock:

    <?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, nun ersetze es durch diesen Codeblock:

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

Dieser Code überprüft, ob No_cart_button auf yes gesetzt ist. Wenn es auf yes gesetzt ist, wird der Code ausgegeben, der die Schaltfläche zum Hinzufügen zum Warenkorb entfernt und stattdessen den Text "Dieses Produkt ist online nicht verfügbar. Bitte rufen Sie unseren Vertreter an, wenn Sie dieses Produkt kaufen möchten." Anzeigt.

OK, diese beiden Schritte sind abgeschlossen und entfernen Add to Cart auf der Produktansichtsseite.

Dadurch wird jedoch die Schaltfläche "In den Warenkorb" auf den Seiten der Kategorieliste nicht entfernt. Jetzt möchten wir eine Schaltfläche "Details anzeigen" auf Kategorielistenseiten anstelle der Schaltfläche "In den Warenkorb" erstellen.

[BEARBEITEN]

Antworten:

kevinkirchner ist korrekt, wir werden diese Logik jetzt zu list.phtml hinzufügen. Wir haben bereits sichergestellt, dass die Attributeinstellungen für "In Produktliste verwendet" auf "JA" gesetzt sind.

Okay,

[Schritt 3]

Wir werden es so machen, wenn Disable Add to Cart auf Yes gesetzt ist, es deaktiviert auch die Schaltfläche "Add to Cart" auf Kategorielistenseiten.

Gehen Sie zu list.phtml

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

und durchsuchen Sie diese Datei nach:

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

Es sollte zweimal in dieser Datei vorkommen.

Fügen Sie direkt unter dieser Zeile den folgenden Code ein

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

Dann sehen Sie direkt unter Ihrem Code, der die normale Schaltfläche "In den Warenkorb" erstellt

<?php
}
?>

Direkt darunter fügen Sie ein weiteres Bit des gleichen Codes ein:

<?php
}
?>

Ok, jetzt machen Sie genau diese 2 Schritte zu dem anderen Codeblock in dieser Datei, den Sie finden

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

Sie müssen dies zweimal ausführen, da das erste Mal die Listenansicht und das zweite Mal die Rasteransicht ist.

stephen weise
quelle
Dies ist keine I-Website für "Showcase" oder "Showoff". IT ist Q & A. Ich empfehle, diese so genannte Frage zu schließen.
Marius
Oh, ich hatte gehofft, Menschen zu helfen - Soll ich dies stattdessen löschen oder so lassen, dass es durchsuchbar ist?
Stephen Wise
@Marius Ich glaube nicht, dass dies so sehr "protzt", als dass das OP genug Repräsentanten braucht, um ihre eigene Antwort zu posten. Ich stimme zu, bis zu diesem Zeitpunkt zu schließen, werde dann eine Wiedereröffnung ansprechen oder Sie können Ihre Fragen und Antworten erneut posten.
Philwinkle
Sorry Leute, ich sollte die Möglichkeiten von Stack Exchange besser kennenlernen. Ich werde auch mit Erfahrung lernen, danke, dass du mir dabei hilfst, diese Dinge zu verstehen.
Stephen Wise

Antworten:

7
  1. Vergewissern Sie sich, dass Ihr Attribut auf der Produktlistenseite verfügbar ist, indem Sie beim Bearbeiten Ihres Attributs - Screenshot "In der Produktliste verwendet" auf "Ja" setzen

  2. Fügen Sie Ihre Logik hinzu, template/catalog/product/list.phtmlum die Schaltfläche In den Warenkorb / Details anzeigen anzuzeigen

kevnk
quelle
Ja! Ich werde Ihre Antwort auswählen. Ich werde genauere Details in einer Bearbeitung meines ursprünglichen Beitrags angeben.
Stephen Wise