覆盖并使用 prestashop 模块中的前端控制器功能 [1.6.x.x]

Override and use front controller features in a prestashop module [1.6.x.x]

我想编辑并向 prestashop 商店定位器页面添加功能。 Prestashop 的文档不是很清楚,我想知道是否可以在自定义模块中实现控制器。 我想创建一个能够扩展 StoreFrontController 及其功能的模块,而无需从头开始。 可能吗 ?你有什么文件给我吗?

初学者, 最好的。

由于您有很多要求,因此您必须覆盖 class StoresController.php

您的模块文件夹应如下所示:

/mymodule
    /mymodule.php
    /config.xml
    /override
         /controllers
              /front
                   StoresController.php
    /views
         /templates
              /front
                   stores.tpl

StoresController.php 中,您必须覆盖 initContent():

<?php

class StoresController extends StoresControllerCore
{

    /**
     * Assign template vars related to page content
     * @see FrontController::initContent()
     */
    public function initContent()
    {
        parent::initContent();

        // here add any smarty variables you want

        $this->setTemplate(_PS_MODULE_DIR_.'mymodule/views/templates/front/stores.tpl');
    }
}

现在您可以在此控制器中添加任意数量的变量,并在您自己的模块中自定义其模板。


我们在模块中创建覆盖,它只会在安装时解析一次。如果您的模块已经安装,则必须将其卸载并重新安装。然后您的覆盖文件将被复制到根 /override 文件夹。

在您的模块覆盖中所做的任何更改都不会反映到根覆盖文件夹中。因此,每次要进行更改时,您都必须卸载并安装模块。

所以我建议您直接在根覆盖文件夹中进行所有更改,完成后将此文件复制回您的模块文件夹。而如果你不想卸载你的模块并重新安装它来声明这个文件,你可以直接把它放在根override文件夹中并删除文件/cache/class_index.php,这样Prestashop就知道添加了一个overrides。

如有任何问题:)

您可以像

那样重写前端控制器
`"/modules/mymodule/override/controllers/front/StoresController.php" and in this fine add class "class StoresControllerCore extends FrontController {
public function initContent()
    {
        parent::initContent();
//here do whatever you like
}
}"

尽管您必须知道编码才能继续。