magento 使用 view.phtml 删除添加到购物车
magento remove add to cart with view.phtml
我按照 [这些说明][1] 删除了 "add to cart"。我正在尝试删除属性为 "instore_only" 的项目的“添加到购物车”按钮,当响应为“是”时,我希望它回显我为它制作的静态块。当我做第一部分时,按钮永远不会消失。这是我的代码:
//Check if the "Available in store only" variable is set to 'Yes':
if(($_product->getAttributeText('instore_only')) == "Yes"){
//If set to Yes, tell PHP what to output:
echo $this->getLayout()->createBlock('cms/block')->setBlockId('instore_only')->toHtml();
}
//If set to No, then show the 'add to cart box' as normal.
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 if ($_product->getShortDescription()):?>
<div class="short-description">
<h2><?php echo $this->__('Quick Overview') ?></h2>
<div class="std"><?php echo $_helper->productAttribute($_product, nl2br($_product->getShortDescription()), 'short_description') ?></div>
</div>
<?php endif;?>
<?php echo $this->getChildHtml('other');?>
<?php if ($_product->isSaleable() && $this->hasOptions()):?>
<?php echo $this->getChildChildHtml('container1', '', true, true) ?>
<?php endif;?>
<?php
}
?>
我已经在我的前端使用模板路径提示验证了正确 view.phtml 的位置。
所以,简而言之,这段代码看起来正确吗?如果不正确,我可以在 view.phtml 中调用一个 cms 块吗?该网站支持小型零售店,因此部分商品只能在店内购买,不能在线购买。
我大约 1 周大的 magento 和代码。我正在尝试使用基本模板对基本站点进行几周的调整。
检查您的属性设置以确保它在前端可用。另外,确保 "Used in Listing" 设置为 yes 以便将其添加到索引表中。这样可以更快地调用。我怀疑这会让您当前的代码正常工作...但如果不进行测试则不确定。
一种不太优雅的方法是从资源模型中调用它。我不推荐这种方式,因为你绕过了索引表...
尝试:
$_product->getResource()->getAttribute('instore_only')->getFrontend()->getValue($_product);
要隐藏 view.phtml 中的数量框和 "Add to cart" 按钮,您可以注释位于 template/catalog/product/view/addtocart.phtml
中的 addtocart.phtml
中的所有代码
希望对您有所帮助
根据您的问题,我假设永远不会显示静态块,并且始终会显示添加到购物车按钮。我还假设您在正在测试的产品上将 "Instore Only" 属性设置为 "Yes",您已经创建并启用了标识符为 instore_only
的 CMS 静态块当前商店,并且您已清除或禁用 Magento 缓存。
检查您的产品属性配置
$_product->getAttributeText('instore_only')
将 return 类型为 Dropdown
或 Multiple select
.
的属性的文本值
Yes/No目录输入类型
如果您的产品属性配置了 Yes/No
目录输入类型,那么 getAttributeText()
将不会 return 它的值 - 因此它永远不会等于 "Yes" 在你的测试中,你的静态块将永远不会显示。
相反,您应该直接询问属性值。 Yes/No
输入类型与布尔运算直接兼容,因此您可以简单地测试 if 语句中的值。像这样:
if ($_product->getInstoreOnly()) {
//output your static block
} else {
//output the add to cart form
}
文本目录输入类型
如果您的属性配置为 Text
或 Text area
目录输入类型,那么您将这样比较:
if ($_product->getInstoreOnly() == "Yes") {
//output your static block
} else {
//ouput the add to cart form
}
在这种情况下,您必须在产品编辑器的框中手动输入 Yes
才能使其生效。
下拉目录输入类型
如果您的属性配置为 Dropdown
或 Multiple select
选项,并且您手动添加了一个名为 Yes
的选项,那么您上面的代码应该是正确的。
在产品列表中使用应该是
您还应检查目录属性 Used in product listing
选项是否设置为 Yes
,以便 Magento 为您在产品页面上加载属性值。
我按照 [这些说明][1] 删除了 "add to cart"。我正在尝试删除属性为 "instore_only" 的项目的“添加到购物车”按钮,当响应为“是”时,我希望它回显我为它制作的静态块。当我做第一部分时,按钮永远不会消失。这是我的代码:
//Check if the "Available in store only" variable is set to 'Yes':
if(($_product->getAttributeText('instore_only')) == "Yes"){
//If set to Yes, tell PHP what to output:
echo $this->getLayout()->createBlock('cms/block')->setBlockId('instore_only')->toHtml();
}
//If set to No, then show the 'add to cart box' as normal.
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 if ($_product->getShortDescription()):?>
<div class="short-description">
<h2><?php echo $this->__('Quick Overview') ?></h2>
<div class="std"><?php echo $_helper->productAttribute($_product, nl2br($_product->getShortDescription()), 'short_description') ?></div>
</div>
<?php endif;?>
<?php echo $this->getChildHtml('other');?>
<?php if ($_product->isSaleable() && $this->hasOptions()):?>
<?php echo $this->getChildChildHtml('container1', '', true, true) ?>
<?php endif;?>
<?php
}
?>
我已经在我的前端使用模板路径提示验证了正确 view.phtml 的位置。
所以,简而言之,这段代码看起来正确吗?如果不正确,我可以在 view.phtml 中调用一个 cms 块吗?该网站支持小型零售店,因此部分商品只能在店内购买,不能在线购买。
我大约 1 周大的 magento 和代码。我正在尝试使用基本模板对基本站点进行几周的调整。
检查您的属性设置以确保它在前端可用。另外,确保 "Used in Listing" 设置为 yes 以便将其添加到索引表中。这样可以更快地调用。我怀疑这会让您当前的代码正常工作...但如果不进行测试则不确定。
一种不太优雅的方法是从资源模型中调用它。我不推荐这种方式,因为你绕过了索引表...
尝试:
$_product->getResource()->getAttribute('instore_only')->getFrontend()->getValue($_product);
要隐藏 view.phtml 中的数量框和 "Add to cart" 按钮,您可以注释位于 template/catalog/product/view/addtocart.phtml
addtocart.phtml
中的所有代码
希望对您有所帮助
根据您的问题,我假设永远不会显示静态块,并且始终会显示添加到购物车按钮。我还假设您在正在测试的产品上将 "Instore Only" 属性设置为 "Yes",您已经创建并启用了标识符为 instore_only
的 CMS 静态块当前商店,并且您已清除或禁用 Magento 缓存。
检查您的产品属性配置
$_product->getAttributeText('instore_only')
将 return 类型为 Dropdown
或 Multiple select
.
Yes/No目录输入类型
如果您的产品属性配置了 Yes/No
目录输入类型,那么 getAttributeText()
将不会 return 它的值 - 因此它永远不会等于 "Yes" 在你的测试中,你的静态块将永远不会显示。
相反,您应该直接询问属性值。 Yes/No
输入类型与布尔运算直接兼容,因此您可以简单地测试 if 语句中的值。像这样:
if ($_product->getInstoreOnly()) {
//output your static block
} else {
//output the add to cart form
}
文本目录输入类型
如果您的属性配置为 Text
或 Text area
目录输入类型,那么您将这样比较:
if ($_product->getInstoreOnly() == "Yes") {
//output your static block
} else {
//ouput the add to cart form
}
在这种情况下,您必须在产品编辑器的框中手动输入 Yes
才能使其生效。
下拉目录输入类型
如果您的属性配置为 Dropdown
或 Multiple select
选项,并且您手动添加了一个名为 Yes
的选项,那么您上面的代码应该是正确的。
在产品列表中使用应该是
您还应检查目录属性 Used in product listing
选项是否设置为 Yes
,以便 Magento 为您在产品页面上加载属性值。