Magento - 支持多店铺系统的开发(转)

Magento支持多店铺,但是,即便如此,如果你的扩展没考虑多店铺,结果你的系统也只能支持单店铺。

支持多店铺的开发一般就是遵循一些基本原则:
1.查询那些和店铺有关的数据,必须加入store过滤
2.存储店铺有关的数据,必须指定store

II. 查询相关店铺相关的数据例:

1. 前端查询某当前店铺下的所有产品数据:
 

Php代码
  1. $collection = Mage::getModel('catalog/product')->getCollection();//默认装载当前店铺下的产品  

$collection = Mage::getModel('catalog/product')->getCollection();//默认装载当前店铺下的产品


如果想查询指定店铺下的产品,需明确指定店铺ID,在前面代码基础上增加:
 

Php代码
  1. $collection = $collection->setStoreId(3); // 3为某店铺ID  

$collection = $collection->setStoreId(3); // 3为某店铺ID



2. 前端装载当前店铺的某个产品
 

Php代码
  1. $prd = Mage::getModel('catalog/product')->load(112); // 112是产品的id  

$prd = Mage::getModel('catalog/product')->load(112); // 112是产品的id


这里不用指定店铺id,默认转载当前店铺的数据,如果明确载入某个店铺下的产品,应在load之前指定店铺ID
 

Php代码
  1. $prd->setStoreId(3); // 店铺ID号  

$prd->setStoreId(3); // 店铺ID号



3. 前端查询某当前店铺下的所有分类数据
与装载产品非常类似
 

Php代码
  1. $collection = Mage::getModel('catalog/category')->getCollection(); //默认装载当前店铺的所有分类。  

$collection = Mage::getModel('catalog/category')->getCollection(); //默认装载当前店铺的所有分类。


如果指定要装载某个店铺下的分类,增加如下代码:
 

Php代码
  1. $collection = $collection->setStoreId(3); // 3为店铺ID  

$collection = $collection->setStoreId(3); // 3为店铺ID


4. 前端装载一个Category
与装载产品非常类似
 

Php代码
  1. $model = Mage::getModel('catalog/category')->load(12); // 12是分类的id  

$model = Mage::getModel('catalog/category')->load(12); // 12是分类的id


这里不用指定店铺id,默认转载当前店铺的数据,如果明确载入某个店铺下的分类,应在load之前指定店铺ID
 

Php代码
  1. $model->setStoreId(3); // 店铺ID号  

$model->setStoreId(3); // 店铺ID号



5. 前端获得配置数据
当然,首先要知道你所要检索的配置数据path,同前极类似:
 

Php代码
  1. Mage::getStoreConfig('cartz/configuration/brand_root'); //装载当前店铺下的数据  

Mage::getStoreConfig('cartz/configuration/brand_root'); //装载当前店铺下的数据


以下代码达到同样效果
 

Php代码
  1. Mage::getStoreConfig('cartz/configuration/brand_root', Mage::app()->getStore()->getId());  

Mage::getStoreConfig('cartz/configuration/brand_root', Mage::app()->getStore()->getId());


第二个参数Mage::app()->getStore()->getId()即为当前店铺ID

如果想获得某个店铺下的配置,需明确指定店铺ID.
 

Php代码
  1. Mage::getStoreConfig('cartz/configuration/brand_root', 3); //3为某店铺ID.  

Mage::getStoreConfig('cartz/configuration/brand_root', 3); //3为某店铺ID.



II. 后台店铺相关的数据管理存储:
一旦你建立了多个店铺,你就会发现在很多页面都有一个Store Switcher:

你如果也想让自己的后台页面有一个这样的swithcer,可以在合适的地方调用这个block,比如,在你的controller的 action方法中加入下面的代码
 

Php代码
  1. if (!Mage::app()->isSingleStoreMode()) {  
  2.   $this->_addLeft($this->getLayout()->createBlock('store_switcher'));  
  3. }  

if (!Mage::app()->isSingleStoreMode()) {
  $this->_addLeft($this->getLayout()->createBlock('store_switcher'));
}


就可以实现上述目的。有了这个基础方便接下来店铺数据切换。比如,当切换到某一个店铺时,加载该店铺下的单个或者多个产品时,别忘记根据 switcher传入的store参数值正确调用setStoreId。

 

原文地址:http://koda.javaeye.com/blog/651918

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值