我在Magento中设置了一个带有一个自定义小部件的自定义模块。小部件应该在前端呈现一些HTML。因此,我创建了一个自定义.phtml文件并在widget.xml中配置它
<?xml version="1.0"?>
<widgets>
<startslider_slider type="startslider/slider ">
<name>Slider Startpage</name>
<description type="desc">Adds a slider</description>
<parameters>
<the_text>
<label>myTestText</label>
<visible>1</visible>
<required>1</required>
<type>text</type>
</the_text>
<template translate="label">
<label>Frontend Template</label>
<visible>1</visible>
<required>1</required>
<type>select</type>
<values>
<three translate="label">
<value>startslider/slider-3.phtml</value>
<label>Slider with three blocks</label>
</three>
<four translate="label">
<value>startslider/slider-4.phtml</value>
<label>Slider with four blocks</label>
</four>
</values>
</template>
</parameters>
</startslider_slider>
</widgets>
我可以在后端({widget type="startslider/slider" the_text="blabla" template="startslider/slider-3.phtml"}
)中插入和配置窗口小部件,并在前端执行块类的_toHtml()方法,并输出一些文本,仅用于测试。但是.phtml模板的内容从未显示过。我想知道Magento是否找不到.phtml?
我将.phtml放在以下位置:
magento-vhost/app/design/frontend/default/myCustomTheme/template/startslider/slider-3.phtml
magento-vhost/app/design/frontend/default/default/template/startslider/slider-3.phtml
magento-vhost/app/design/frontend/base/default/template/startslider/slider-3.phtml
我忘了什么吗?我需要配置吗?否则使用自定义.phtml?
感谢您的任何提示! 亚历
答案 0 :(得分:10)
它可能有太多可能的东西,但这里有一些东西要尝试。
您的startslider/slider
小部件从哪个类继承?如果它不是Mage_Core_Block_Template
那么你没有模板小部件块。
您为窗口小部件创建了_toHtml
方法 - 此窗口小部件仍会调用parent::_toHtml();
。如果不是,则永远不会运行模板渲染代码。
什么是
var_dump($this->getData());
var_dump($this->getTemplate());
var_dump($this->getTemplateFile());
从_toHtml
方法渲染?这些路径是否与文件系统完全匹配(包括字母大小写)?