我试图通过覆盖来隐藏仪表板上的"帮助"按钮。但这种超控并没有被使用。所以我想知道我做错了什么?为什么不使用覆盖?
我在classes/controller/AdminController.php
中找到了它。然后我创建了一个新文件:override/classes/controller/AdminController.php
。
我无法使覆盖工作,所以我试图检查是否考虑到了它
<?php
class AdminControllerCoreOverride extends AdminControllerCore
{
echo 'askdjfkdjfksl';
}
?>
但什么也没发生。我删除了缓存:index_cache,并且在性能菜单中没有关闭覆盖。在index_cache.php
中,我发现AdminController,但覆盖为false。
PS:使用Prestashop 1.6
如果手动创建覆盖文件,则必须删除文件cache/class_index.php
才能使覆盖文件工作。
然后,在override/classes/controller/AdminController.php
中,您必须覆盖这样的函数:
<?php
class AdminController extends AdminControllerCore
{
public function initPageHeaderToolbar()
{
Your code
}
}
您不需要将?>
放在此文件的末尾。
我遇到了类似的问题(PS7)。在我的案例中,问题是由文件权限引起的。Prestashop需要对要覆盖的文件的写入权限否则将忽略该文件,而不会显示任何警告/错误消息。您可以在没有任何帮助的情况下疯狂地删除class_index.php文件。
此外,由于某种原因,每当我对超控控制器进行任何更改时,我都必须重置模块。
顺便说一句,在PS7中,cache_index位于/app/cache/dev文件夹(和/app/cache/prod文件夹)下。
你可以试试这个:
将类名从AdminCoreControllerOverride更新为AdminCoreOverrideController
和AdminControllerCore到AdminController
<?php
class AdminCoreOverrideController extends AdminController
{
public function init() {
parent::init();
}
}
然后你可以通过以下链接在浏览器中进行测试:
http://localhost/YOUR_ADMIN_DIR/index.php?controller=AdminCoreOverride