覆盖并使用 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
}
}"
尽管您必须知道编码才能继续。
我想编辑并向 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
}
}"
尽管您必须知道编码才能继续。