与Magento块和布局混淆

时间:2014-04-22 18:38:07

标签: magento

我正在尝试将我的升级版从产品“内容”视图移到模板中的自己的部分。

我的XML看起来像这样:

<catalog_product_view translate="label">
    <reference name="root">
        <action method="setTemplate">
            <template>page/2columns-left.phtml</template>
        </action>
    </reference>
    <reference name="content">
        <block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
            ...other blocks...
            <block type="catalog/product_list_upsell" name="product.info.upsell" as="upsell_products" template="catalog/product/list/upsell.phtml" />
            ....other blocks...
        </block>
    </reference>
</catalog_product_view>

然后,在page/2columns-left.phtml内,它会调用$this->getChildHtml('content')来呈现catalog/product/view.phtml,然后在THAT文件中调用$this->getChildHtml('upsell_products')

我要做的是将'upsell_products'移出主要'内容'视图(因为它包含在模板的右列中),并将其移动到主2列模板中,以便加售实际上可以位于2列布局下方并跨越页面的整个宽度,而不是限制在右列。我知道我应该创建一个新模板,因为现在这不仅仅是2列,但是设置它的正确方法是什么?我尝试了很多不同的东西,似乎都没有。我希望我已经包含了所有相关信息。

1 个答案:

答案 0 :(得分:1)

这就是我的所作所为。

在local.xml中添加以下内容:

<catalog_product_view>
    <reference name="root">
        <block type="core/text_list" name="bottom" as="bottom" translate="label">
            <label>bottom</label>
        </block>
    </reference>
    <reference name="bottom">
        <block type="catalog/product_list_upsell" name="product.info.upsell" as="upsell_products" template="catalog/product/list/upsell.phtml">
            <action method="setColumnCount"><columns>4</columns></action>
            <action method="setItemLimit"><type>upsell</type><limit>4</limit></action>
        </block>
    </reference>
</catalog_product_view>

我创建了一个名为2columns-left-bottom的新模板,但如果您愿意,可以修改2columns-left。在您选择的任何模板中,您可以像这样调用底部:

<div><?php echo $this->getChildHtml('bottom') ?></div>

将其放置在主要容器col2-left-layout的页脚上方和下方(外侧)。你会有一些div的造型,但我把它留给你。

所以这已经定义了一个新的结构块,比如'right'或'left',然后将upsell_products的内容放入其中。

hth,sconnie