为什么Magento在我的模板文件中查找“base / default”?

时间:2011-08-12 14:12:53

标签: magento themes magento-1.5

我用块类创建了一个非常简单的模块。此块使用自定义模板调用类方法,以根据当前时间确定它是否应显示(如果支持已打开,则显示电话号码)。这在我的本地开发服务器和远程开发服务器上运行良好。它似乎在我们的主站点上运行良好,但我们今天早上在主服务器上看到了日志中的错误。

错误看起来像这样:

  

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扩展,我找不到任何文档。也许这就是问题所在,但我在本地服务器上有相同的扩展名,而且这个问题没有出现。

有什么想法吗?

=============================

Orderbyphone.php

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;
    }
}

orderbyphone.pthml

<?php if($this->showBanner()): ?>
    <div><div class='orderbyphone'>Order By Phone 800-VALUEPET (800-825-8373)</div></div>
<?php endif; ?>

通过将以下内容添加到布局更新XML

,将此块添加到CMS页面
<block type="vps_general/banner_orderbyphone" name="orderbyphone">
    <action method="setWidth"><name>400</name></action>
</block>

1 个答案:

答案 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下找到。

关心,亚历山德罗