1

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

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

我正在寻找这样的东西:

?_theme=默认

这样的事情存在吗?

4

3 回答 3

5

以编程方式:

您可以编写一个正在监听事件的观察者<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
于 2013-06-27T22:14:14.597 回答
1

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

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

创建另一个商店视图并将您想要的任何主题分配给该商店视图,然后像访问它一样yourstore.com/?___store=storecode

于 2013-06-27T21:46:24.200 回答
1

就像 1-2-3 一样简单。:) 创建一个新的开发主题并将所有文件从当前实时主题复制到新主题(应用程序/设计和皮肤)。然后观察 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');
}
}

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

于 2013-07-18T09:46:09.753 回答