2

我知道有类似的问题,但没有一个可以解决我的问题。

我在 /override/classes/controller/ 中放置了一个 FrontController.php 文件

它包含以下代码:

Class FrontController extends FrontControllerCore{
    public function displayHeader(){
        if(!self::$initialized) $this->init();

        $this->context->smarty->assign('test_ok','okok');

        return parent::displayHeader();       
    } 
}//end FrontController

从我的自定义主题中,在 header.tpl 我放置了这样的测试代码

{$test_ok}

得到这个:

注意:未定义的索引:test_ok 在 [...]/cache/smarty/compile/81/a3/76/81a3760f9c0cb8c9ff677a0e7b59d8962cdaaeda.file.header.tpl.php 第 147 行

注意:尝试在第 147 行的 [...]/cache/smarty/compile/81/a3/76/81a3760f9c0cb8c9ff677a0e7b59d8962cdaaeda.file.header.tpl.php 中获取非对象的属性


我还尝试直接在 FrontControllerCore.php 中分配 smarty var(仅用于测试),但得到了相同的通知。


任何想法?

4

3 回答 3

3

创建覆盖时,您需要重新创建类索引。

为此,只需删除文件/cache/class_index.php然后重新创建它(确保chmod666以便 Prestashop 可以编写它(当然,您也可以只删除文件的内容)。

于 2013-07-04T14:08:25.113 回答
1

在 Prestashop 1.5 和更高版本中不调用函数displayHeader() 因为它被标记为已弃用。因此,当您覆盖未调用函数时,什么都不会发生,并且您不会在输出中得到任何结果。

正如我在这里看到的,来自 user1145716 的答案对您的情况更有帮助,您可以覆盖initHeader()函数以查看输出结果。

于 2014-04-29T04:18:20.607 回答
0

小心点 !在 PS1.5 方法 displayHeader() 已被弃用,所以你必须使用 initHeader() 然后它会工作,我有同样的问题。

于 2013-08-12T09:57:25.030 回答