Magento布局 - 未呈现/显示内容

aru*_*mar 7 xml configuration layout magento

我已经阅读了各种Magento教程以及关于布局的Magento书籍,但我遇到了以下问题.

我创建了一个自定义模块,位于app/code/local/Company/Module /中.我创建了一个位于Company/Module/Block/Ablock.php中的块Company_Module_Block_Ablock.我<config> ... <frontend><layout><updates><module><file>module.xml在Company/Module/etc/config.xml中定义了

config.xml也有

<global>
   <blocks>
      <module>
         <class>Company_Module_Block</class>
      </module>
   </blocks>
</global>
Run Code Online (Sandbox Code Playgroud)

在这个module.xml里面我有:

<layout>
    <company_module_index_index>
        <reference name="content">
            <block type="module/ablock" name="myablock" template="module/ablock.phtml" />
        </reference>
    </company_module_index_index>
</layout>
Run Code Online (Sandbox Code Playgroud)

我创建了一个Company/Module/controllers/IndexController.php并在那里定义了一个indexAction

$this->loadLayout();
$this->renderLayout();
Run Code Online (Sandbox Code Playgroud)

但无论我尝试什么,我都无法显示我的ablock.phtml.ablock.phtml位于app/design/frontend/company/default/template/module/ablock.phtml中.该主题已启用,通常在该网站上工作.

我甚至尝试在布局中更改module.xml,因此它甚至不使用模板,甚至不显示任何内容.像这样 -

<reference name="content">
<block type="core/text">
    <action method="setText">
        <text>Testing</text>
    </action>
</block>
</reference>
Run Code Online (Sandbox Code Playgroud)

顺便说一句,自定义主题工作正常,其他页面的内容显示在正确的位置.

我有SetEnv MAGE IS DEVELOPER MODE 1.htaccess,它应该有助于显示警告和事物.但是我的systems.log和exceptions.log中没有错误.(是的日志记录已打开)

任何人都有任何建议如何解决这个问题或发现配置或代码中的错误?

我的下一个选择似乎是破解核心模块代码并记录我的module.xml被加载和解析的位置以查看那里发生了什么.

谢谢.

Ala*_*orm 33

调试布局更新XML问题的步骤:

  1. 您的XML文件(local.xmlmodule.xml)是否已加载到系统中

  2. 您在布局文件中使用的句柄标记是否与为您的请求生成的句柄相匹配?

调试步骤1的最快方法是,在显示错误的开发人员模式下,故意向Layout Update XML文件中引入一个格式错误的错误.

<layout <!-- notice missing closing taglayout -->
    <company_module_index_index>
        <reference name="content">
            <block type="module/ablock" name="myablock" template="module/ablock.phtml" />
        </reference>
    </company_module_index_index>
</layout>
Run Code Online (Sandbox Code Playgroud)

如果启用了开发人员模式并且您已清除缓存,则加载具有上述内容的任何页面都将导致错误.这让您知道Magento正在尝试加载您的XML文件.如果页面加载没有问题,这意味着您的XML文件位于错误的位置,或者您的XML配置错误config.xml.

接下来是你检查你的布局句柄.你要确保你使用正确的.你可以通过调用下面的视图被用于特定请求,布局手柄后,loadLayoutrenderLayout要求

//from a controller action
$this->loadLayout();
$this->renderLayout();
var_dump(Mage::getSingleton('core/layout')->getUpdate()->getHandles());
exit("bailing early at ".__LINE__." in ".__FILE__);
Run Code Online (Sandbox Code Playgroud)

我发现上面的项目通常会处理90%的布局问题.一定要经历几次这个过程,因为它很容易错过一步,并且当它不是时就会假设一切正常.我常常冒这个风险,我创建Commerce Bug(商业调试扩展)的部分原因是为了快速提供这些信息,并一目了然地帮助调试问题.

根据您在下面的评论,问题似乎是您正在使用的布局句柄.系统生成的句柄是

module_module_test
Run Code Online (Sandbox Code Playgroud)

但是,您在layout.xml中定义的句柄是

company_module_index_index
Run Code Online (Sandbox Code Playgroud)

这是"完整操作名称"句柄.典型的语法是

frontname_controllername_actionname
Run Code Online (Sandbox Code Playgroud)

将手柄更改为module_module_test,您应该设置.