magento開發 -- 支持多店鋪係統的開發
Magento支持多店鋪,但是,即便如此,如果你的擴展沒考慮多店鋪,結果你的係統也隻能支持單店鋪。
支持多店鋪的開發一般就是遵循一些基本原則:
1.查詢那些和店鋪有關的數據,必須加入store過濾
2.存儲店鋪有關的數據,必須指定store
II. 查詢相關店鋪相關的數據例:
1. 前端查詢某當前店鋪下的所有產品數據:
$collection = Mage::getModel('catalog/product')->getCollection();//默認裝載當前店鋪下的產品
如果想查詢指定店鋪下的產品,需明確指定店鋪ID,在前麵代碼基礎上增加:
$collection = $collection->setStoreId(3); // 3為某店鋪ID
2. 前端裝載當前店鋪的某個產品
$prd = Mage::getModel('catalog/product')->load(112); // 112是產品的id
這裏不用指定店鋪id,默認轉載當前店鋪的數據,如果明確載入某個店鋪下的產品,應在load之前指定店鋪ID
$prd->setStoreId(3); // 店鋪ID號
3. 前端查詢某當前店鋪下的所有分類數據
與裝載產品非常類似
$collection = Mage::getModel('catalog/category')->getCollection(); //默認裝載當前店鋪的所有分類。
如果指定要裝載某個店鋪下的分類,增加如下代碼:
$collection = $collection->setStoreId(3); // 3為店鋪ID
4. 前端裝載一個Category
與裝載產品非常類似
$model = Mage::getModel('catalog/category')->load(12); // 12是分類的id
這裏不用指定店鋪id,默認轉載當前店鋪的數據,如果明確載入某個店鋪下的分類,應在load之前指定店鋪ID
$model->setStoreId(3); // 店鋪ID號
5. 前端獲得配置數據
當然,首先要知道你所要檢索的配置數據path,同前極類似:
Mage::getStoreConfig('cartz/configuration/brand_root'); //裝載當前店鋪下的數據
以下代碼達到同樣效果
Mage::getStoreConfig('cartz/configuration/brand_root', Mage::app()->getStore()->getId());
第二個參數Mage::app()->getStore()->getId()即為當前店鋪ID
如果想獲得某個店鋪下的配置,需明確指定店鋪ID.
Mage::getStoreConfig('cartz/configuration/brand_root', 3); //3為某店鋪ID.
II. 後台店鋪相關的數據管理存儲:
一旦你建立了多個店鋪,你就會發現在很多頁麵都有一個Store Switcher:
你如果也想讓自己的後台頁麵有一個這樣的swithcer,可以在合適的地方調用這個block,比如,在你的controller的action方法中加入下麵的代碼
if (!Mage::app()->isSingleStoreMode()) { $this->_addLeft($this->getLayout()->createBlock('store_switcher')); }
就可以實現上述目的。有了這個基礎方便接下來店鋪數據切換。比如,當切換到某一個店鋪時,加載該店鋪下的單個或者多個產品時,別忘記根據switcher傳入的store參數值正確調用setStoreId。
源文:https://koda.javaeye.com/blog/651918
最後更新:2017-04-02 05:21:04