Opencart扩展状态和位置设置在哪里


Opencart where are extension status and position set?

关于打开购物车的快速问题,扩展状态和位置设置在哪里?我可以在代码中看到

$postion = $this->config->get($extension . '_position');

以及

'status'      => $this->config->get($extension . '_status') 

然而,我看不出这些是在哪里定义的?

首先,查看扩展文件(例如"payment/free_checkout.php")并搜索类似的内容

$this->model_setting_setting->editSetting( 'free_checkout', $this->request->post);

这是设置存储到数据库中的地方(如果您愿意,您可以深入设置模型)

之后,打开admin/index.php并查看第38-48行。您可以看到,系统从数据库中获取数据,并将数据存储到配置对象中。

在Opencart中,模块使用位置。它们设置在管理下的扩展/模块中。当您单击保存时,它会将它们保存到modulename_module 下的数据库表oc_settings中

当Opencart启动时-在INDEX.php中有以下代码

// Settings
$query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0' OR store_id = '" . (int)$config->get('config_store_id') . "' ORDER BY store_id ASC");
foreach ($query->rows as $setting) {
    if (!$setting['serialized']) {
        $config->set($setting['key'], $setting['value']);
    } else {
        $config->set($setting['key'], unserialize($setting['value']));
    }
}

它创建了config-一个包含当前商店id的所有设置的庞大数组。

然后,位置控制器(column_left.php、column_right.php、content_top.php和content_bottom.php)遍历oc_extension表中的扩展,找到需要显示的所有模块。

然后它通过这个庞大的数组CONFIG并收集这些模块的设置-这些都存储在数组$module_data 中

则控制器使用这些设置来基本启动应该显示的模块的每个控制器。它为foreach循环中的每个模块传递控制器路由和$settings,结果得到模块的渲染。

您可以访问php文件中的任何位置的配置——它可以是另一个控制器、模型甚至tpl文件。

$this->config->get(...)

如果你愿意,你可以直接进入databes oc_settings,并使用这些功能从那里获取数据

$this->load->model('setting/setting'); // remeber to always load the model.
$this->model_setting_setting->editSetting( 'free_checkout', $this->request->post);

希望这能有所帮助。

此外,您还可以使用此模块为您的露天矿SUPER轻松扩展职位数量额外位置无限制