我正在尝试研究如何创建自定义的phtml文件以包含在view.phtml上(并最终从任何默认的Magento phtml文件中调用).
我创建了一个单独的phtml文件,其中包含我想要的内容,名为productbadges.phtml
这将作为最后一项提取
我理解标注通常是
<?php echo $this->getChildHtml('phtmlfilename') ?>
Run Code Online (Sandbox Code Playgroud)
但是我知道我需要向catalog.xml添加一些内容,以便Magento识别出标注并可以获取正确的文件.但我没有正确理解Magento的XML语法.
有人可以帮忙吗?
vicch的回应是正确的做法.
但是,知道有另一种方法也很有帮助:
$block = $this->getLayout()->createBlock(
'Mage_Core_Block_Template',
'choose_a_block_name',
array('template' => 'folder/myphtmlfile.phtml')
);
Run Code Online (Sandbox Code Playgroud)
我发布这个是为了一般知识.这不是可接受的方式,因为它与Magento模板和块的使用方式不一致.
您可以使用
<?php echo $this->getLayout()->createBlock('core/template')->setTemplate('goodtest/test.phtml')->toHtml(); ?>
Run Code Online (Sandbox Code Playgroud)
另见:
如何在magento的specfic页面调用.phtml块?
和
想要使用锚标记在另一个phtml文件中调用一个phtml文件
鉴于您提供的信息,我只能提供一般解决方案.
首先,您需要找到此view.phtml的布局XML.你应该寻找像这样的东西:
<block type="..." name="..." ... template="../view.phtml">
Run Code Online (Sandbox Code Playgroud)
要在包装块下直接添加新模板的声明,它应该是:
<block type="..." name="..." ... template="../view.phtml">
<block type="..." name="phtmlfilename" template="../phtmlfilename.phtml"/>
...
</block>
Run Code Online (Sandbox Code Playgroud)
也可以在其他地方引用outter块:
<reference name="[name_of_view.phtml_block]">
<block type="..." name="phtmlfilename" template="../phtmlfilename.phtml"/>
</reference>
Run Code Online (Sandbox Code Playgroud)
新模板的类型是类名,它应该是core/template
或者是它的子类型.