6

在默认布局中,选项和添加到购物车按钮由

<?php echo $this->getChildChildHtml('container1', '', true, true) ?>

我想将可配置选项从添加到购物车和数量字段中拆分出来,以将它们显示在我布局中的不同位置。有什么想法或准备好使用的解决方法吗?

4

2 回答 2

2

你可以很容易地拆分它(但我花了很多时间来找到它:)) - 如果你查看公共函数 getChildChildHtml的app/code/core/Mage/Core/Block/Abstract.php到 PHPDoc ,你会看到第二个参数确定了子块名称。因此,您可以在价格块渲染之前先调用

<?php echo $this->getChildChildHtml('container1', 'product.info.options.wrapper', true, true) ?>

并在价格块呈现后,调用

<?php echo $this->getChildChildHtml('container1', 'product.info.options.wrapper.bottom', true, true) ?>
于 2017-01-10T16:02:02.420 回答
0

虽然您的最终解决方案将取决于这些块需要在布局中移动/插入的位置,但您绝对可以将“添加到购物车”product.info.options.wrapper.bottom从可配置选项中分离出来,product.info.container1或者product.info.container2像这样:

<catalog_product_view>
    <reference name="product.info.container1">
        <action method="unsetChild"><name>product.info.options.wrapper.bottom</name></action>
    </reference>
    <reference name="product.info.container2">
        <action method="unsetChild"><name>product.info.options.wrapper.bottom</name></action>
    </reference>
</catalog_product_view>

然后单独显示“添加到购物车”按钮的最简单方法是注释掉catalog/product/view.phtml允许显示product.info.addtocart块的条件,无论产品是否具有选项:

<?php if (!$this->hasOptions()): // Remove this condition ?>
    <div class="add-to-box">
        <?php if($_product->isSaleable()): ?>
            <?php echo $this->getChildHtml('addtocart') ?>

            ...

        <?php endif; ?>
    </div>

    ...

<?php endif; ?>

希望这可以帮助您了解这些块的结构。可能有用的其他资源:

于 2015-02-12T23:22:14.713 回答