我用块类创建了一个非常简单的模块。此块使用自定义模板调用类方法,以根据当前时间确定它是否应显示(如果支持已打开,则显示电话号码)。这在我的本地开发服务器和远程开发服务器上运行良好。它似乎在我们的主站点上运行良好,但我们今天早上在主服务器上看到了日志中的错误。
错误看起来像这样:
2011-08-11T18:14:49 + 00:00 ERR(3):警告:包含(/chroot/home/valuepet/valuepetsupplies.com/html/app/design/frontend/base/default/template/ general / banner / orderbyphone.phtml)[function.include]:无法打开流:第370行/chroot/home/valuepet/valuepetsupplies.com/html/var/ait_rewrite/67b58abff9e6bd7b400bb2fc1903bf2f.php中没有此类文件或目录
2011-08-11T18:14:49 + 00:00 ERR(3):警告:include()[function.include]:打开'/chroot/home/valuepet/valuepetsupplies.com/html/app/失败design / frontend / base / default / template / general / banner / orderbyphone.phtml'for inclusion(include_path ='/ chroot / home / valuepet / valuepetsupplies.com / html / app / code / local:/ chroot / home / valuepet / valuepetsupplies.com/html/app/code/community:/chroot/home/valuepet/valuepetsupplies.com/html/app/code/core:/chroot/home/valuepet/valuepetsupplies.com/html/lib:.:/usr / share / pear')在第370行的/chroot/home/valuepet/valuepetsupplies.com/html/var/ait_rewrite/67b58abff9e6bd7b400bb2fc1903bf2f.php
我写的模块在frontend/base/default
中没有任何内容......这些都在我们的自定义主题中。那么为什么它会在base
中查找文件?
我添加了一些日志消息,发现它并不总是偶尔在base
中寻找文件。因此,这表明网站中的任何一个页面都错误地调用了块,或者发生了一些奇怪的事情,导致这种情况随机发生。
您将从错误消息中注意到它正在使用某些PHP脚本的 AIT重写。有人对这个有经验么?它附带了另一个AITOC扩展,我找不到任何文档。也许这就是问题所在,但我在本地服务器上有相同的扩展名,而且这个问题没有出现。
有什么想法吗?
=============================
class VPS_General_Block_Banner_Orderbyphone extends Mage_Core_Block_Template
{
protected $hours;
protected function _construct()
{
//GMT times for hours of operation
$this->hours = array('start' => 15,//15
'end' => 21);//20
parent::_construct();
$this->setTemplate("general/banner/orderbyphone.phtml");
}
/**
* Return true if you should show the OrderByPhone banner, false otherwise
* @return Boolean
*/
public function showBanner()
{
$GMTHour = (int)date('G');
if(($GMTHour < $this->hours['start']) || ($GMTHour >= $this->hours['end']))
{
return false;
}
return true;
}
}
<?php if($this->showBanner()): ?>
<div><div class='orderbyphone'>Order By Phone 800-VALUEPET (800-825-8373)</div></div>
<?php endif; ?>
<block type="vps_general/banner_orderbyphone" name="orderbyphone">
<action method="setWidth"><name>400</name></action>
</block>
答案 0 :(得分:2)
考虑到Magento的搜索模板资产的级联方式,它在/base/default/
中找不到资产的事实并不一定意味着您指定了该路径。
事实上,如果您告诉Magento在/yourpackage/yourtheme/
路径中加载模板资产,并且Magento找不到该资产,它将在/base/default/
路径中搜索相同的资产。
如果它在/base/default/
中找不到,则抛出异常表示资源不属于/base/default/
而不是/yourpackage/yourtheme/
} path。
我不知道是不是这样,但也许它可以帮到你一点。
换句话说:您确定要查找的资源位于/yourpackage/yourtheme/
路径吗?
请注意Unix / Linux下文件名区分大小写的事实,因此在Windows下找不到的内容不一定在Unix / Linux下找到。
关心,亚历山德罗