在magento的现有模块中添加Block

时间:2010-11-12 10:35:52

标签: magento

我已定制客户模块以满足我的要求。我能够重写客户模块的块类。我正在尝试在此模块中添加一个自定义块类,这在现有客户模块中不存在,但我不知道如何实现此目的。

我的代码在config.xml中看起来像

 <blocks>            
        <customer>
           <rewrite>                          
<widget_name>Mynamespace_Customer_Block_Widget_Name</widget_name>                   
<form_register>Mynamespace_Customer_Block_Form_Register</form_register>
<form_edit>Mynamespace_Customer_Block_Form_Edit</form_edit>
           </rewrite>                   
        </customer>  

     </blocks>

我在客户模块的Form目录下创建了一个名为'Test.php'

的新块类

客户布局文件看起来像

<reference name="my.account.wrapper">
            <block type="customer/form_test" name="customer_test" template="customer/form/test.phtml"/>
        </reference>   

但它没有执行块类文件。 是否应该在此模块的config.xml文件中添加任何内容?

请帮助如何将此块与现有模块集成。

感谢。

2 个答案:

答案 0 :(得分:4)

您不应该真正向客户模块添加块,您应该将它们添加到您自己的模块中。如果您想继续使用客户模块,请检查以确保您的块名为Mage_Customer_Block_Form_Test并扩展Mage_Core_Block_Template。否则,将类创建为Mynamespace_Customer_Block_Form_Test并将其保存在模块目录中。然后,在config.xml中为您的班级添加块定义:

<blocks>
  <mynamespace_customer>
    <class>Mynamespace_Customer_Block</class>
  </mynamespace_customer> 
</blocks>

然后您应该可以将块加载为mynamespace_customer/form_test

如果您使用客户以外的模块名称​​,则可能更容易调试问题。一般来说,这是一个坏主意,可能会导致系统中的错误。

希望有所帮助!

谢谢, 乔

答案 1 :(得分:2)

您可能已经意识到这一点,但请考虑检查LayoutViewer以查看布局认为它正在使用的内容。

虽然我确定您的示例config.xml只是一个示例,但请确保您已记住为form_test创建重写并且您的模块有一个有效的块部分。

BTW,LayoutViewer可以真正为Magento Connect正确打包。链接文件缺少必要的配置来启用模块,如果可以从PEAR访问它将更有用。