magento删除使用view.phtml添加到购物车

时间:2015-05-27 19:11:49

标签: php magento shopping-cart

我按照[这些指示] [1]删除了“添加到购物车”。我试图删除属性为“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块吗?该网站支持小型零售商店,因此有些商品仅在商店中提供,而不是在线购买。

我在magento和代码中大约1周大。我正在尝试使用基本模板对基本站点进行一些调整。

3 个答案:

答案 0 :(得分:0)

检查您的属性设置,确保它在前端可用。另外,确保将“在列表中使用”设置为yes,以便将其添加到索引表中。这使得呼叫更快捷。我怀疑这将允许你当前的代码工作......但不确定没有测试。

一种不太优雅的方法是从资源模型中调用它。我不推荐这种方式,因为你绕过了索引表......

尝试:

 $_product->getResource()->getAttribute('instore_only')->getFrontend()->getValue($_product);

答案 1 :(得分:0)

要隐藏数量框和view.phtml中的“添加到购物车”按钮,您可以对位于addtocart.phtml

中的template/catalog/product/view/addtocart.phtml中的所有代码进行评论

希望这有帮助

答案 2 :(得分:0)

我从您的问题中假设永远不会显示静态块,并且始终显示“添加到购物车”按钮。我还假设你设置了你的&#34; Instore Only&#34;属性为&#34;是&#34;对于您正在测试的产品,您已为当前商店创建并启用了标识为instore_only的CMS静态块,并且您已清除或禁用了Magento缓存。

检查您的产品属性配置

$_product->getAttributeText('instore_only')将返回类型为DropdownMultiple select的属性的文本值。

是/否目录输入类型

如果您的产品属性配置了Yes/No目录输入类型,那么getAttributeText()将不会为其返回值 - 因此它永远不会等于&#34;是&#34;在您的测试中,您的静态块将永远不会显示。

相反,您应该直接询问属性值。 Yes/No输入类型与布尔运算直接兼容,因此您只需测试if语句中的值即可。像这样:

if ($_product->getInstoreOnly()) {
  //output your static block
} else {
  //output the add to cart form
}

文本目录输入类型

如果您的属性配置为TextText area目录输入类型,那么您可以这样比较:

if ($_product->getInstoreOnly() == "Yes") {
  //output your static block
} else {
  //ouput the add to cart form
}

在这种情况下,您必须在产品编辑器的框中手动输入Yes才能使其正常工作。

下拉目录输入类型

如果您的属性配置为DropdownMultiple select选项,您已手动添加了名为Yes的选项,那么上面的代码应该是正确的。

产品列表中使用的

应为是

您还应该检查目录属性Used in product listing选项是否设置为Yes,以便Magento为您设置产品页面上的属性值。