天天看點

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: 

magento開發 -- 支援多店鋪系統的開發

你如果也想讓自己的背景頁面有一個這樣的swithcer,可以在合适的地方調用這個block,比如,在你的controller的action方法中加入下面的代碼 

if (!mage::app()->issinglestoremode()) {

$this->_addleft($this->getlayout()->createblock('store_switcher'));

}

就可以實作上述目的。有了這個基礎友善接下來店鋪資料切換。比如,當切換到某一個店鋪時,加載該店鋪下的單個或者多個産品時,别忘記根據switcher傳入的store參數值正确調用setstoreid。 

源文:http://koda.javaeye.com/blog/651918

繼續閱讀