【问题标题】:Magento module works on localhost but not on remote hostMagento 模块适用于本地主机,但不适用于远程主机
【发布时间】:2012-08-31 22:54:19
【问题描述】:

我知道这是一个愚蠢的问题,但我已经彻底调查了所有文件名、目录和类名上的所有大写和小写。一切似乎都已经正确。但是,在远程主机上以某种方式未加载块文件 .phtml。布局 xml 已经加载,因为我可以看到 CSS 和 JS 文件已加载。

仅供参考,管理后端工作完美,只有未加载的前端块。不知道为什么前端块文件没有加载到远程主机上。

我给了我的模块名称,类似于 ModuleABCD。连续几个大写字母可以吗?提前感谢您的任何回复。

<?xml version="1.0"?>
<layout>
    <modulename_index_index>
    <reference name="head">
    <action method="addItem"><type>skin_css</type><name>modulename.css</name></action>
          <action method="addItem"><type>skin_js</type><name>modulename.js</name></action>
    </reference>
    <reference name="content">
          <block type="modulename/modulename" name="modulename" template="modulename.phtml"/>
    </reference>
    </modulename_index_index>
</layout>  

【问题讨论】:

  • 发布指定模板路径的相关布局 XML。此外,您是否在 var/log/system.xml 中看到无效的模板错误?是否创建了块类实例?主题设置是否相同?是否刷新了远程缓存?
  • 感谢 Benmarks。我检查了 var/log 目录,它是空的,我认为没有发生错误或异常。块类没有被实例化,因为块 .php 文件没有被执行。主题使用默认,这里没有设置更改都是默认的。缓存被禁用,var/cache 已被删除(尽管每次我访问该站点时都会重新创建它)。

标签: magento


【解决方案1】:

鉴于您的布局文件似乎正在加载,我建议您在 ./demo.php 文件中执行以下操作,您可以通过浏览器在 http://site.com/demo.php 运行该文件:

<?php

ini_set('display_errors',true);

include 'app/Mage.php';

Mage::setIsDeveloperMode(true);
Mage::app();

Zend_Debug::dump(Mage::getBlockClassName('classgroup/blockname');

Zend_Debug::dump(Mage::app()->getLayout()->createBlock('classgroup/blockname'));

【讨论】:

  • 感谢您的提示,基准。上面的脚本给了我“找不到文件”错误。现在我知道罪魁祸首在哪里了。看来我为 .php 块文件 (ModuleABCD.php) 提供了错误的名称。因为即使类名为 Company_ModuleABCD_Block_ModuleABCD,Magento 也会查找 Moduleabcd.php。好吧,每一天对我来说都是新课:)。谢谢你的帮助,先生!
  • 视情况而定。如果您指定&lt;block type="[class group]/moduleabcd" .../&gt;,那么您写的内容是正确的。如果您指定&lt;block type="[class group]/moduleABCD" .../&gt;,那么它将查找 ModuleABCD.php 文件。这只是区分大小写的文件系统的问题,我猜你的远程主机是,而你的开发环境不是:-)
猜你喜欢
  • 2017-05-01
  • 1970-01-01
  • 2016-01-14
  • 2011-02-03
  • 1970-01-01
  • 2012-09-23
  • 2019-07-29
  • 1970-01-01
  • 2011-02-16
相关资源
最近更新 更多