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.