2

我正在为 magento 编写一个自定义模块并且在这里遇到了一些问题。我的布局 xml 不起作用。即使我没有得到任何异常或日志。在通过管理面板刷新缓存和重新索引后,我也尝试过。打印了hello 消息,该消息位于 IndexController.php 下,但未加载布局。

布局xml文件放在 /var/www/magento/app/design/frontend/default/default/layout/wsplugin.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>

索引控制器.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>
4

3 回答 3

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>

请尝试上述格式!

于 2014-09-02T10:29:35.437 回答
0

只是为了确定您是否将模块 XML 文件放在app/etc/modules/NAMESPACE_WSPlugin.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.

于 2013-09-17T15:31:50.970 回答
0

在您的布局文件中wsplugin.xml,您应该使用

<block type="core/template" name="wsplugin" template="wsplugin/wsplugin.phtml" />

于 2013-09-17T21:49:01.837 回答