在magento的某个website中,已经有一个storeview A,现在要求在这个website下再创建一个新的storeview B,现在要求对于storeview B只有主页和分类页应用新的样式,其他页面还是用回storeview A的样式。
解决思路如下:
(1) 在skin和design下,为store B创建各一个新的folder,store B所有相关的样式文件都必须放在新的folder下。
(2) 重写appcodecoreMageCoreControllerVarienAction.php这个文件的function addActionLayoutHandles()如下:
- public function addActionLayoutHandles()
- {
- $update = $this->getLayout()->getUpdate();
- // load store handle
- $update->addHandle('STORE_'.Mage::app()->getStore()->getCode());
- // load theme handle
- $package = Mage::getSingleton('core/design_package');
- $actionName=$this->getFullActionName();
- //通过action的名称判断当前是哪个页面, 如果当前的action是"cms_index_defaultIndex" 或 "catalog_category_view" 就使用新的theme
- if( "cms_index_defaultIndex"==$actionName
- && "catalog_category_view"==$actionName )
- {
- $package->setTheme("newThemeName");
- }
- $update->addHandle('THEME_'.$package->getArea().'_'.$package->getPackageName().'_'.$package->getTheme('layout'));
- // load action handle
- $update->addHandle(strtolower($this->getFullActionName()));
- return $this;
- }