Magento在view.phtml中包含一个CUSTOM phtml文件

use*_*108 6 php magento

我正在尝试研究如何创建自定义的phtml文件以包含在view.phtml上(并最终从任何默认的Magento phtml文件中调用).

我创建了一个单独的phtml文件,其中包含我想要的内容,名为productbadges.phtml

这将作为最后一项提取

我理解标注通常是

<?php echo $this->getChildHtml('phtmlfilename') ?>
Run Code Online (Sandbox Code Playgroud)

但是我知道我需要向catalog.xml添加一些内容,以便Magento识别出标注并可以获取正确的文件.但我没有正确理解Magento的XML语法.

有人可以帮忙吗?

Zac*_*ler 6

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模板和块的使用方式不一致.


eye*_*onu 6

您可以使用

<?php echo $this->getLayout()->createBlock('core/template')->setTemplate('goodtest/test.phtml')->toHtml(); ?>
Run Code Online (Sandbox Code Playgroud)

另见:

如何在magento的specfic页面调用.phtml块?

想要使用锚标记在另一个phtml文件中调用一个phtml文件


vic*_*cch 5

鉴于您提供的信息,我只能提供一般解决方案.

首先,您需要找到此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或者是它的子类型.