【问题标题】:Magento - How to add custom block to Checkout success pageMagento - 如何将自定义块添加到结帐成功页面
【发布时间】:2010-12-23 11:21:27
【问题描述】:

我想通过向页面添加块的方式向结帐成功页面添加一些信息(无需复制模板页面并更改它)。

我查看了可下载的模块并尝试复制它,但没有成功。 我有一个自定义模块,我尝试过这样做:

1) 将块文件添加到: ...\app\code\local\SHANI\MyModule\Block\checkout\Details.php

class SHANI_MyModule_Block_Checkout_Details extends Mage_Checkout_Block_Onepage_Success
{
}

2) 将模板文件添加到: ...\app\design\frontend\default\default\template\mymodule\checkout\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>

是这样的吗?我错过了什么?

//////////////////////////////////更新///// //////////////////////////////////////

我已经尝试像 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”下不起作用?

【问题讨论】:

  • 我在成功页面上创建了一个块,使用与您相同的代码片段,但我使用了 mymodule/checkout_details 块类型,并且我在 SHANI_MyModule_Block_Checkout_Details 类中使用了 php 标签。它对我有用。

标签: php magento


【解决方案1】:

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

<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-&gt;getChildHtml('yourblockname') 或将 output="toHtml" 添加到布局中的块中

【讨论】:

  • 您能解释一下如何在模板或布局中对您的块调用 getChildHtml() 或 toHtml() 吗?
  • 我不确定我是否理解.. 我将 mymodule.xml 文件更改为: 并没有接缝显示我在 details.phtml 中回显的文本/跨度>
【解决方案2】:

试试

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

在父模板内,xml 中没有 output=""。

您还可以查看日志以获取其他信息。

为了确保它现在是你的块的错替换它

type="core/template"

如果你的模块是

SHANI_MyModule_Block_Checkout_Details

那么类型应该是

type="mymodule/checkout_details"

【讨论】:

  • 什么是“父模板”?
【解决方案3】:

&lt;block type="core/template" name="parent" template="parent.phtml&gt;

&lt;block type="core/template" name="child" template="child" /&gt;

&lt;/block&gt;

如果你把这个 print $this-&gt;getChildHtml('child') 放入 parent.phtml,Magento 应该在 parent.phtml 中渲染 child.phtml

至于您的其他问题...有些块渲染所有子块,但有些块仅渲染那些在其模板中回显的块。所以'product.info.additional'可以使用echo $this-&gt;getChildHtml(),'product.info'可以使用echo $this-&gt;getChildHtml('block_name')

请提供你的模块 config.xml

【讨论】:

    猜你喜欢
    • 2012-09-11
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多