Php 未加载Magento块模板文件
我正在尝试做一些非常基本的事情:编辑类别产品页面模板的一小部分。我将Php 未加载Magento块模板文件,php,magento,Php,Magento,我正在尝试做一些非常基本的事情:编辑类别产品页面模板的一小部分。我将pager.phtml从../base/default/template/page/html/复制到我自己主题的template/page/html文件夹中,并在新文件中更改了我需要更改的内容。不幸的是,前端没有任何改变 我尝试过启用“模板路径提示”,它明确显示了正在加载的自定义模板。当我清空我的主题的pager.phtml时,所有的内容都会保留下来(就好像它仍在加载默认模板一样)。当我编辑默认模板时,仍然没有任何更改!啊哈!它
pager.phtml
从../base/default/template/page/html/
复制到我自己主题的template/page/html
文件夹中,并在新文件中更改了我需要更改的内容。不幸的是,前端没有任何改变
我尝试过启用“模板路径提示”,它明确显示了正在加载的自定义模板。当我清空我的主题的pager.phtml
时,所有的内容都会保留下来(就好像它仍在加载默认模板一样)。当我编辑默认模板时,仍然没有任何更改!啊哈!它必须被缓存
但我已经禁用了缓存(这是一个开发站点),并尝试刷新所有缓存。没有什么变化。我在这个网站上编辑了许多模板,它们都按预期工作,这是唯一给我带来麻烦的pager.phtml
如果有人能给我指出正确的方向,或者甚至向我提出更多的调试想法,那就太好了。提前感谢。也请尝试:
站点是否使用litespeed或任何其他缓存实用程序?可能还需要清理那些缓存 如果您的缓存已关闭,并且您编辑的
base/default
package/theme无效,则听起来您编辑的文件是错误的
碰巧的是,它是1.4版本上的1.3模板,因为寻呼机设置在两个版本之间发生了变化,并且会导致您所描述的特殊问题
您是否测试过重写另一个.phtml
文件,以查看它是否实际工作(即,您是否正确设置了它)
最后,缓存是最后一种手段,您是否安装了APC/Eaccelerator,并将mtime
/stat
参数设置为false?因为这将忽略文件修改时间,并直接从其内部缓存提供数据。Apache/PHP重启将证明这一点
通过运行进行验证
php -i | grep mtime
php -i | grep stat
或者通过创建测试
phpinfo()代码>文件如果您的缓存已关闭,并且您编辑的基本/默认
包/主题无效,则听起来您编辑的文件是错误的
碰巧的是,它是1.4版本上的1.3模板,因为寻呼机设置在两个版本之间发生了变化,并且会导致您所描述的特殊问题
您是否测试过重写另一个.phtml
文件,以查看它是否实际工作(即,您是否正确设置了它)
最后,缓存是最后一种手段,您是否安装了APC/Eaccelerator,并将mtime
/stat
参数设置为false?因为这将忽略文件修改时间,并直接从其内部缓存提供数据。Apache/PHP重启将证明这一点
通过运行进行验证
php -i | grep mtime
php -i | grep stat
或者通过创建测试phpinfo()代码>文件请检查路径。说真的,与Magento一起工作会让人们(包括我自己)错过一些比明显程度低一级的事情
一旦你做到了,跳到
app/code/core/Mage/Core/Block/Template.php
查找包含模板文件的行
$includeFilePath = realpath($this->_viewDir . DS . $fileName);
if (strpos($includeFilePath, realpath($this->_viewDir)) === 0 || $this->_getAllowSymlinks()) {
include $includeFilePath;
} else {
Mage::log('Not valid template file:'.$fileName, Zend_Log::CRIT, null, null, true);
}
并添加调试代码,以了解为什么不包括phtml 请检查路径。说真的,与Magento一起工作会让人们(包括我自己)错过一些比明显程度低一级的事情
一旦你做到了,跳到
app/code/core/Mage/Core/Block/Template.php
查找包含模板文件的行
$includeFilePath = realpath($this->_viewDir . DS . $fileName);
if (strpos($includeFilePath, realpath($this->_viewDir)) === 0 || $this->_getAllowSymlinks()) {
include $includeFilePath;
} else {
Mage::log('Not valid template file:'.$fileName, Zend_Log::CRIT, null, null, true);
}
并添加调试代码,以了解为什么不包括phtml 在系统->配置->常规->设计->包中检查您的设计设置(示例:默认)
系统->配置->常规->设计->主题->默认(设置主题目录名称)。在系统->配置->常规->设计->包中检查设计设置(示例:默认)
系统->配置->常规->设计->主题->默认设置(设置主题目录名称)。重新索引与模板/布局无关。它只用于目录。我不会说它与模板“无关”。这取决于您在模板中更改的内容。如果要在模板文件中更新目录中的某些内容,则在重新索引.1之前,更改将不可见。您不应该更改.phtml
文件中的任何内容,它仅用于输出。2.您描述的是一个无限循环-要获得要更新的模板,您需要重新编制索引;但是模板首先是提示重新索引的文件…你是对的,你不应该在模板文件中做这样的事情。。。但这并不意味着人们不这样做。我每天都在模板中做一些我不应该做的事情,主要是为了在我将事情转移到适当的模块类之前进行测试/开发,但仅仅因为这不是最佳实践并不意味着它没有用处或人们不这样做。但你的答案与问题无关。重新索引将如何帮助他的模板文件显示。索引仅用于目录数据。索引与模板/布局无关。它只用于目录。我不会说它与模板“无关”。这取决于您在模板中更改的内容。如果要在模板文件中更新目录中的某些内容,则在重新索引.1之前,更改将不可见。您不应该更改.phtml
文件中的任何内容,它仅用于输出。2.您描述的是一个无限循环-要获得要更新的模板,您需要重新编制索引;但是模板是首先提示重新索引的文件…你是对的,你应该