如何禁用特定产品上的“添加到购物车”,而在类别列表视图中显示“查看详细信息”按钮?


20

我想知道如何在某些特定产品上禁用“添加到购物车”按钮,但是我发现了一个废弃的指南,该指南虽然有效,但是由于它只是产品视图页面上的一个解决方案,因此它并不完整,而不是在类别列表或网格页面上。

在我解释了第一步之后,我将在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()): ?>

您必须执行两次,因为第一次是用于列表视图,第二次是用于网格视图。


这不是我的网站“展示”或“炫耀”。IT的问答环节。我建议关闭这个“所谓的”问题。
马里斯(Marius)

哦,我希望对别人有所帮助-我应该删除还是保留它以便可以搜索?
斯蒂芬·明智

@Marius我不认为这是在“炫耀”,因为OP需要制定足够的代表来发布自己的答案。我投票决定在此之前关闭,然后再解决重新开放问题,或者您可以重新发布您的问答。
philwinkle

抱歉,我应该更好地学习Stack Exchange的方法。我也将学习经验,感谢您帮助我理解这些内容。
斯蒂芬·明智

Answers:


7
  1. 通过在编辑属性时将“在产品详情中使用”设置为“是”,确保您的属性在产品详情页面上可用- 屏幕截图

  2. 添加您的逻辑以template/catalog/product/list.phtml显示“添加到购物车/查看详细信息”按钮


是的 我将选择您的答案。我将在原始帖子的编辑内容中提供更多具体细节。
斯蒂芬·明智
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.