布局不显示在前端模块 magento

Posted

技术标签:

【中文标题】布局不显示在前端模块 magento【英文标题】:Layout not display on frontend Module magento 【发布时间】:2014-11-25 23:04:32 【问题描述】:

magento 模块中的前端无法加载布局存在一些问题。

config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Way_SaleWithus>
            <version>1.0.0</version>
        </Way_SaleWithus>
    </modules>
    <frontend>
        <routers>
            <SaleWithus>
                <use>standard</use>
                <args>
                    <module>Way_SaleWithus</module>
                    <frontName>SaleWithus</frontName>
                </args>
            </SaleWithus>
        </routers>
        <layout>
            <updates>
                <SaleWithus>
                    <file>SaleWithus.xml</file>
                </SaleWithus>
            </updates>
        </layout>
    </frontend>  
</config>

SaleWithus.xml 位置:app/design/frontend/base/default/layout/SaleWithus.xml

<?xml version="1.0" encoding="UTF-8"?>
    <layout version="0.1.0">
        <SaleWithus_index_index>
            <reference name="content">
                <block type="core/template" name="SaleWithus" template="SaleWithus/SaleWithus.phtml" />
            </reference>
        </SaleWithus_index_index>
    </layout>

SaleWithus.phtml 位置 app/design/frontend/base/default/template/SaleWithus/SaleWithus.phtml

<div>
<h4>Hello World!!</h4>
</div>

IndexController.php

<?php
class Way_SaleWithus_IndexController extends Mage_Core_Controller_Front_Action

    public function indexAction()
    
//         if ($this->_getSession()->isLoggedIn()) 
//            $this->_redirect('*/*/');
//            return;
//        
//        $this->getResponse()->setHeader('Login-Required', 'true');
//        $this->loadLayout();
//        $this->_initLayoutMessages('customer/session');
//        $this->_initLayoutMessages('catalog/session');
//        $this->renderLayout();
        $this->loadLayout();
            $this->renderLayout();
            echo "subhash";
    
    protected function _getSession()
    
        return Mage::getSingleton('customer/session');
    

?>

我的代码哪里出错了?

【问题讨论】:

有几件事很突出,您的布局文件称为 saleus.xml,但在您的 config.xml 中它被列为 sales.xml。此外,您的 config.xml 缺少结束 标记,最后列出的 phtml 文件被命名为 saleus.xml,但应具有扩展名 .phtml 以匹配块的模板定义。 现在请更改所有代码,但要保持不变 @LazyLion 在 magento 中激活日志并密切关注它们。通常在那里抛出布局错误。此外,在布局 xml 中将“SaleWithus_index_index”更改为“saleWithus_index_index”。 2014-10-01T08:15:30+00:00 ERR (3):警告:simplexml_load_string():实体:第 1 行:解析器错误:XML 声明仅在文档开头允许在 F:\xampp\htdocs\magento\test2\app\code\core\Mage\Core\Model\Layout\Update.php 行 450 2014-10-01T08:15:30+00:00 ERR (3):警告:simplexml_load_string():<?xml version="1.0"?>在第 450 行的 F:\xampp\htdocs\magento\test2\app\code\core\Mage\Core\Model\Layout\Update.php 你能帮我解决这个错误吗 现在我仍然无法得到任何错误或任何输出 【参考方案1】:

您的 xml 存在一些重大问题,应该如下所示。

  <?xml version="1.0"?>
    <config>
      <modules>
        <Way_SaleWithus>
          <version>0.1.0</version>
        </Way_SaleWithus>
      </modules>
      <frontend>
        <routers>
          <salewithus>
            <use>standard</use>
              <args>
                <module>Way_SaleWithus</module>
                <frontName>salewithus</frontName>
              </args>
          </salewithus>
        </routers>
            <layout>
              <updates>
                <salewithus>
                  <file>salewithus.xml</file>
                </salewithus>
              </updates>
            </layout>
      </frontend>>
    </config> 

【讨论】:

【参考方案2】:

在 Magento 中,除了类名,最好用小写字母设置。函数名称也只能是驼峰字母。

上面的 config.xml 混淆了所有类型的英文字母大小写。问题来了。如果一切正常,layout.xml 必须如下:

<?xml version="1.0" encoding="UTF-8"?>
    <layout version="0.1.0">
        <salewithus_index_index>
            <reference name="content">
                <block type="core/template" name="salewithus" template="SaleWithus/salesithus.phtml" />
            </reference>
        </salewithus_index_index>
    </layout>

Config.xml 必须如下:

<?xml version="1.0"?>
    <config>
      <modules>
        <Way_SaleWithus>
          <version>0.1.0</version>
        </Way_SaleWithus>
      </modules>
      <frontend>
        <routers>
          <salewithus>
            <use>standard</use>
              <args>
                <module>Way_SaleWithus</module>
                <frontName>salewithus</frontName>
              </args>
          </salewithus>
        </routers>
            <layout>
              <updates>
                <salewithus>
                  <file>salewithus.xml</file>
                </salewithus>
              </updates>
            </layout>
      </frontend>>
    </config>

修改你的模板文件名,如下路径:app/design/frontend/base/default/template/SaleWithus/salewithus.phtml

Layout.xml 如下路径:Location : app/design/frontend/base/default/layout/salewithus.xml

【讨论】:

以上是关于布局不显示在前端模块 magento的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的属性在 Magento 1.9.1.0 前端显示位置不正确?

Magento网站运行原理解析

Magento中的Authorize.net付款在选择时不显示信用卡表格

Magento 2.4 页面损坏的布局

Paypal 没有显示在我的 magento 1.9.2.3 商店中

前端magento的发货区域“没有可用的发货信息”