閱讀135 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go ruby和MinGW的一次融合
  下一篇:go magento -- 在導出CSV時進行轉碼以保證用excel打開有中文的CSV文件時不會亂碼