我想知道如何在某些特定产品上禁用“添加到购物车”按钮,但是我发现了一个废弃的指南,该指南虽然有效,但是由于它只是产品视图页面上的一个解决方案,因此它并不完整,而不是在类别列表或网格页面上。
在我解释了第一步之后,我将在8个小时内在这里回答我自己的问题(由于我的声誉低于某个点,我需要等待8个小时),所以我的答案将是我必须弄清楚的缺少的第三步为我自己。我将尝试使其易于理解:
[步骤1]
[1]
创建一个将在不需要“添加到购物车”按钮的产品上使用的属性。在管理控制台中,转到...
目录>属性>管理属性> 添加新属性
随便命名属性,例如:“ No_cart_button”
具有属性:
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
使用管理标签/选项:
Admin: Disable Add to Cart
English: Disable Add to Cart
现在保存此属性。
[2]
将新属性分配给组,以便可以使用它。我使用了“默认”。去...
Catalog > Attributes > Manage Attributes Sets > Select Set
现在保存此属性集。
[第2步]
我们将一些代码添加到view.phtml
app/design/frontend/default/theme/template/catalog/product/view.phtml
找到以下代码块:
<?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
//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
}
?>
此代码检查No_cart_button是否设置为yes。如果将其设置为yes,它将输出代码,该代码将删除“添加到购物车”按钮,并显示文字:“此产品无法在线购买,如果您要购买,请致电我们的代表。”
好的,这两个步骤已完成,并在产品视图页面上删除了添加到购物车。
但是,这不会删除“类别”列表页面上的“添加到购物车”按钮。现在,我们要在类别列表页面上创建一个“查看详细信息”按钮,而不是“添加到购物车”按钮。
[编辑]
回答:
kevinkirchner是正确的,我们现在将这个逻辑添加到list.phtml中。我们已经确保“产品清单中使用的”属性设置设置为“是”。
好,
[第3步]
当“禁用添加到购物车”设置为“是”时,我们也会这样做,它还会在“类别”列表页面上禁用“添加到购物车”按钮。
转到list.phtml
app/design/frontend/default/theme/template/catalog/product/list.phtml
并在此文件中搜索:
<?php if($_product->isSaleable()): ?>
它应该在此文件中出现2次。
在此行的正下方,插入以下代码
<?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 {
?>
然后,在创建正常的“添加到购物车”按钮的代码下方,您将看到
<?php
}
?>
在此下方,插入另一段相同的代码:
<?php
}
?>
好的,现在对您在该文件中找到的其他代码块执行同样的2个步骤
<?php if($_product->isSaleable()): ?>
您必须执行两次,因为第一次是用于列表视图,第二次是用于网格视图。