gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 01:45:41 24 4
gpt4 key购买 nike

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

我创建了一个自定义模块,位于 app/code/local/Company/Module/。我在 Company/Module/Block/Ablock.php 中创建了一个 block 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>

在这个 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>

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

$this->loadLayout();
$this->renderLayout();

但无论我尝试什么,我都无法显示我的 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>

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

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

有人对如何解决这个问题有任何建议,或者可以发现配置或代码中的错误吗?

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

谢谢。

最佳答案

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

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

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

调试第 1 步的最快方法是,在显示错误的开发人员模式下,故意向您的布局更新 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>

如果开发者模式已打开并且您已清除缓存,则加载任何具有上述内容的页面都将导致错误。这让您知道 Magento 正在尝试加载您的 XML 文件。如果页面加载没有问题,这意味着您的 XML 文件位于错误的位置,或者您在 config.xml 中错误配置了 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__);

我发现上述项目通常可以解决 90% 的布局问题。一定要完成这个过程几次,因为很容易错过一个步骤,并假设某些事情没有问题。冒着我一贯的托儿风险,这也是我创建 Commerce Bug 的部分原因(商业调试扩展)是为了快速、一目了然地提供这些信息,以帮助解决调试问题。

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

module_module_test

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

company_module_index_index

这是“完整的 Action 名称”句柄。典型的语法是

frontname_controllername_actionname

将句柄更改为 module_module_test,您应该已设置好。

关于xml - Magento 布局 - 内容未呈现/显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7048354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com