布局不会加载到Magento的自定义模块中

时间:2013-09-17 13:27:50

标签: xml magento magento-1.7

我正在为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>

3 个答案:

答案 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" />