在 Prestashop 中定义新全局变量的位置

Where define new global variable in Prestashop

文件 defines.inc.php 包含多个全局变量,但如果我想定义新变量,哪个文件最好?

如果我更新 Prestashop,文件 defines.inc.php 会重置,我会丢失我的全局变量。

可能在 settings.inc.php 中,但此文件没有版本控制。

我建议创建您自己的模块(可能是 'dummy' 模块 :)),并在那里声明您的全局变量。

例如创建一个名为 'mymodule' 的模块,主文件 mymodule.php 应该是:

// Here you can define your global vars
define('MY_CUSTOM_VAR', 100);

class MyModule extends MyModule
{
    public function __construct()
    {
         // See documentation
    }

    public function install(){ return parent::install(); }
}

这样您就可以更新您的 PrestaShop 版本而不会丢失您的全局变量 ;)

您可以在 config/defines.inc.php 旁边创建一个文件 config/defines_custom.inc.php。在启动时,Prestashop 会检查此文件是否存在。如果存在,则将其包含在默认值之前。

您可以在config/config.inc.php中找到相关代码:

$currentDir = dirname(__FILE__);

/* Custom defines made by users */
if (is_file($currentDir.'/defines_custom.inc.php')) {
    include_once($currentDir.'/defines_custom.inc.php');
}
require_once($currentDir.'/defines.inc.php');

例如,您可以通过这种方式在不触及默认文件的情况下将模式 dev 设置为:

define('_PS_MODE_DEV_', true);

并且在默认文件中,不会出现这个定义:

if (!defined('_PS_MODE_DEV_')) {
    define('_PS_MODE_DEV_', false);
}