我是magento的新手并且总是有问题。
目前,我设法添加了订阅弹出消息,并希望将子块添加到我的主块。
代码:(我的自定义模块为My_Module
)
<reference name="before_body_end">
<block type="newsletter/subscribe" name="newsletter_popup" as="newsletter_popup" template="popup/subscribe.phtml">
<block type="Module/popup_newsletter" name="newsletter11" />
</block>
</reference name="before_body_end">
并在subscribe.phtml
中尝试以下内容:
var_dump($this->getChildHtml('newsletter11'))
但结果是:
的字符串(0)&#34;&#34;
我也尝试以这种方式从模板加载块:
var_dump($this->getLayout()->createBlock('module/popup_newsletter'));
但结果为boolean(false).
我想要做的是从子块(Newsletter.php
)中调用一个方法,然后输出一些文本,这个块现在有这两种方法:
puplic function test(){
return 'this is test';
}
public function _toHtml()
{
return test();
}
我无法看到我的错误。
任何人都可以帮助我,谢天谢地,我不知道您是否需要更多代码发布。如果您需要,请告诉我
提前致谢。
更新 config.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<My_Module>
<version>1.0.1</version>
</My_Module>
</modules>
<global>
<models>
<my_module>
<class>My_Module_Model</class>
</my_module>
</models>
<helpers>
<my_module>
<class>My_Module_Helper</class>
</my_module>
</helpers>
<blocks>
<my_module>
<class>My_Module_Block</class>
</my_module>
</blocks>
</global>
<frontend>
<routers>
<My_Module>
<use>standard</use>
<args>
<module>My_Module</module>
<frontName>my</frontName>
</args>
</My_Module>
</routers>
</frontend>
答案 0 :(得分:3)
在模板(phtml)文件中创建块的对象。请尝试以下代码
$customBlock = $this->getLayout()->getBlock('block_name'); // You can use newsletter11 in that block_name
调用阻止功能
echo $customBlock->test();
答案 1 :(得分:2)
<?php echo $this->getLayout()
->createBlock('cms/block')
->setBlockId('seo-homepage')
->toHtml();
?>
其中seo-homepage是您的静态块标识符
答案 2 :(得分:2)
这对我有用
$ customBlock = $ this-&gt; getLayout() - &gt; getBlockSingleton(&#39; block-class-name&#39;);
答案 3 :(得分:0)
你可以简单地添加块
$ this-&gt; getLayout() - &gt; createBlock('路径/文件路径')