如何通过查询字符串更改Magento主题?

时间:2013-06-27 20:07:58

标签: string magento themes

是否可以通过查询字符串更改Magento模板?

我正在开发一个自定义模板,有时我想检查一下是否有什么东西,所以我想通过查询字符串更改默认主题的主题。

我正在寻找这样的事情:

?_主题=默认

这样的事情是否存在?

3 个答案:

答案 0 :(得分:4)

编程:

您可以编写一个正在侦听事件<controller_action_predispatch>

的观察者

观察者方法可能如下所示:

public function changeTheme(){

   if (Mage::app()->getRequest()->getParam('layout_switch') == '1'){
       Mage::getDesign()->setArea(‘frontend’)
                        ->setPackageName(Mage::app()->getRequest()->getParam('package'))
                        ->setTheme(Mage::app()->getRequest()->getParam('theme'));

   }
   return;
}

}

然后你只需要用例如

来调用你的页面
yourdomain.com/index.php/layout_switch/1/package/default/theme/default

答案 1 :(得分:1)

简短的回答是不,你不能(据我所知)

但是,如果它是您的本地安装(您仅将其用作开发环境!),您可以使用技巧:

Create another Store view并将您想要的任何主题分配给该商店视图,然后像yourstore.com/?___store=storecode

一样访问它

答案 2 :(得分:1)

就像1-2-3一样简单。:)创建一个新的dev主题并将当前实时主题中的所有文件复制到新主题(app / design和sking)。然后观察controller_action_predispatch事件,然后在观察者函数中:

$controllerAction = $observer->getControllerAction();
if ($controllerAction->getLayout()->getArea() == Mage_Core_Model_App_Area::AREA_FRONTEND) {
$ipAddress = Mage::helper('core/http')->getRemoteAddr();
$ipAddresses = array('xxx.xxx.xxx.xxx');

if (in_array($ipAddress, $ipAddresses)) {
Mage::getDesign()->setTheme('theme-wanted');
}
}

确实非常有助于设计调整。工作完成后,应禁用观察者或停用模块,直到下次