2012-07-30 118 views
0

有關打開購物車的快速問題,其中是否設置了分機狀態和位置?我可以在代碼Opencart在哪裏擴展狀態和位置設置?

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

看,也

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

但是我不能看到這些被定義?

回答

1

起初,看着你的擴展文件(如「支付/ free_checkout.php」)和搜索類似的東西

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

這是存儲到數據庫設置(你可以去更深入的設置模型,如果你想的話)

之後,打開admin/index.php並查看38-48行。 你可以看到,系統從數據庫獲取數據並將數據存儲到配置對象中。

+0

感謝回去我的號碼,我可以看到設置表用於存儲有關的擴展信息,但我看不到位置和啓用/禁用狀態存儲在哪裏? – 2012-07-31 06:27:37

+0

我沒有找到任何位置提及(我檢查最後opencart版本)。但是如果你想找到狀態。查看擴展表單(例如payment/free_checkout.php)。您會發現名爲extensionname_status的字段(選擇框「free_checkout_status」)。當你發送這個表單到服務器時,它會將它存儲到數據庫中($ this-> model_setting_setting-> editSetting ... //查看我的答案)。 – hadvig 2012-07-31 10:18:57

+0

是的,這似乎是正確的,感謝您的幫助 – 2012-08-01 09:49:34

0

在Opencart位置由模塊使用。它們設置在管理員下方的擴展/模塊中。當您單擊保存 - 這將它們保存到數據庫表oc_settings的modulename_module下

當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'])); 
    } 
} 

其創建的配置 - 所有的大規模陣列當前商店ID的設置。

之後位置控制器(column_left.php,column_right.php,content_top.php和content_bottom.php)通過表oc_extension中的擴展並找到需要顯示的所有模塊。

然後它通過這個龐大的陣列CONFIG並收集這些模塊的設置 - 這一切都被存儲在一個陣列$ module_data

則控制器使用這些設置basicly推出應該是模塊的每個控制器所示。它爲foreach循環中的每個模塊傳遞控制器路由和$設置,並在結果中獲取模塊的呈現。

你可以在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); 

希望這有助於獲得從那裏數據。

您也可以使用此模塊來消耗你的Opencart的位置超級方便 Extra positions Unlimited