我正在为magento编写一个自定义模块,并在这里遇到一些问题。我的布局xml不起作用。即使我没有得到任何例外或记录。我也通过管理面板缓存刷新和重新索引后尝试了。打印问候消息,放在IndexController.php下,但布局不加载。
布局xml文件放在下面
/var/www/magento/app/design/frontend/default/default/layout/wsplugin.xml
config.xml中
<?xml version="1.0"?>
<config>
<modules>
<NAMESPACE_WSPlugin>
<version>0.1.0</version>
<depends>
<Mage_Catalog />
</depends>
</NAMESPACE_WSPlugin>
</modules>
<frontend>
<routers>
<wsplugin>
<use>standard</use>
<args>
<module>NAMESPACE_WSPlugin</module>
<frontName>wsplugin</frontName>
</args>
</wsplugin>
</routers>
<layout>
<updates>
<wsplugin>
<file>wsplugin.xml</file>
</wsplugin>
</updates>
</layout>
</frontend>
<global>
<blocks>
<wsplugin>
<class>NAMESPACE_WSPlugin_Block</class>
</wsplugin>
</blocks>
<helpers>
<wsplugin>
<class>NAMESPACE_WSPlugin_Helper</class>
</wsplugin>
</helpers>
</global>
</config>
IndexController.php
<?php
class NAMESPACE_WSPlugin_IndexController extends Mage_Core_Controller_Front_Action {
public function indexAction() {
$this->loadLayout();
$this->renderLayout();
echo 'hello message';
}
}
?>
WSPlugin.php (在NAMESPACE / WSPlugin / Block下)
<?php
class NAMESPACE_WSPlugin_Block_WSPlugin extends Mage_Core_Block_Template {
public function getWSPlugin() {
return "get WS Plugin under Block";
}
}
wsplugin.xml
<?xml version="1.0"?>
<layout version="0.1.0">
<default>
<reference name="content">
</reference>
</default>
<wsplugin_index_index>
<reference name="content">
<block type="wsplugin/wsplugin" name="wsplugin" template="wsplugin/wsplugin.phtml" />
</reference>
</wsplugin_index_index>
</layout>
wsplugin.phtml
<h4><?php echo 'Welcome in WS Plugin';
echo $this->getWSPlugin();
?></h4>
答案 0 :(得分:1)
这是布局句柄标记的问题。
请看下面的例子:
<?xml version="1.0"?>
<layout version="0.1.0">
<mymodule_adminhtml_mymodule_index>
<reference name="content">
<block type="mymodule/adminhtml_mymodule" name="mymodule" />
</reference>
</mymodule_adminhtml_mymodule_index>
</layout>
请尝试以上格式!
答案 1 :(得分:0)
您确定在app/etc/modules/NAMESPACE_WSPlugin.xml
下放置了模块XML文件吗?
<config>
<modules>
<NAMESPACE_WSPlugin>
<active>true</active>
<codePool>community</codePool>
</NAMESPACE_WSPlugin>
</modules>
</config>
同时检查您的模块是否显示在System->Configuration->Advanced->Advanced->Disable Modules Output
最好将布局置于app/design/frontend/base/default
。
答案 2 :(得分:0)
在您的布局文件wsplugin.xml
中,您应该使用
<block type="core/template" name="wsplugin" template="wsplugin/wsplugin.phtml" />