Magento - 如何将自定义块添加到Checkout成功页面

时间:2010-12-23 11:21:28

标签: php magento

我想通过向页面添加一个块来向结帐成功页面添加一些信息(不重复模板页面并进行更改)。

我查看了可下载模块,并试图复制它,但这不起作用。 我有一个自定义模块,我试图这样做:

1)将块文件添加到: ... \应用\代码\本地\ SHANI \ MyModule的\块\结帐\ Details.php

class SHANI_MyModule_Block_Checkout_Details extends Mage_Checkout_Block_Onepage_Success
{
}

2)将模板文件添加到: ... \应用\设计\前端\默认\默认\模板\ MyModule的\结帐\ details.phtml

<?php
echo "test ffdagdf";
?>

3)将块添加到:... \ app \ design \ frontend \ default \ default \ layout \ mymodule.xml

<default>
</default>

....
....
....

<checkout_onepage_success>
    <reference name="checkout.success">
        <block type="mymodule/checkout_success" name="mymodule.checkout.details" template="mymodule/checkout/details.phtml"/>
    </reference>
</checkout_onepage_success>

这样做的方法吗?我错过了什么?

///////////////////////////////////////// update ///// ////////////////////////////////////

我试图像Lrrr写的那样改变mymodule.xml,但仍然没有运气......

<checkout_onepage_success>
        <reference name="checkout.success">
            <block type="mymodule/checkout_details" name="mymodule.checkout.details" template="mymodule/checkout/details.phtml"/>
        </reference>
</checkout_onepage_success>

任何其他想法是什么问题?

我正在尝试使用产品视图页面执行相同操作,并且我能够将块添加到“product.info.additional” 但不是“product.info”。

这是有效的:

<catalog_product_view>
        <reference name="product.info.additional">
           <block type="catalog/product_view" name="mymodule.saledetails" before="-" template="mymodule/product/details.phtml"/>
            <block type="mymodule/product_participant_list" name="mymodule.participants" before="-" template="mymodule/product/participant/list.phtml"/>
        </reference>
    </catalog_product_view>

但这不是

<catalog_product_view>
        <reference name="product.info">
                <block type="catalog/product_view" name="mymodule.saledetails" before="-" template="mymodule/product/details.phtml"/>
        </reference>
        <reference name="product.info.additional">
            <block type="mymodule/product_participant_list" name="mymodule.participants" before="-" template="mymodule/product/participant/list.phtml"/>
        </reference>
    </catalog_product_view>

我正在尝试将此块从“product.info.additional”移至“product.info”,因为我想将此块显示在 快速概述(在默认模板中)而不是详细信息下。 为什么它不能在“product.info”下工作?

3 个答案:

答案 0 :(得分:2)

尝试在成功页面布局中引用内容块

<checkout_onepage_success>
    <reference name="content">
        <block type="mymodule/checkout_success" name="mymodule.checkout.details" template="mymodule/checkout/details.phtml"/>
    </reference>
</checkout_onepage_success>

而不是checkout.success,您可能需要在模板中调用$this->getChildHtml('yourblockname')或在版块中添加output="toHtml"

答案 1 :(得分:0)

尝试

print $this->getChildHtml('mymodule.checkout.details')

在父模板中没有输出=“”在xml中。

您还可以查看日志以获取附加信息。

并且确定现在你的块的错误是用

替换它
type="core/template"

如果你的模块是

SHANI_MyModule_Block_Checkout_Details

然后输入

type="mymodule/checkout_details"

答案 2 :(得分:0)

<block type="core/template" name="parent" template="parent.phtml>

<block type="core/template" name="child" template="child" />

</block>

如果你输入parent.phtml这个print $this->getChildHtml('child') Magento应该在parent.phtml中呈现child.phtml

至于你的另一个问题......有些块会渲染所有作为子元素的块,但有些块只渲染那些在模板中回显的块。所以'product.info.additional'可以使用echo $this->getChildHtml()而'product.info'可以使用echo $this->getChildHtml('block_name')

请提供您的模块config.xml