是否可以通过查询字符串更改Magento模板?
我正在开发一个自定义模板,有时我想检查一下是否有什么东西,所以我想通过查询字符串更改默认主题的主题。
我正在寻找这样的事情:
?_主题=默认
这样的事情是否存在?
答案 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');
}
}
确实非常有助于设计调整。工作完成后,应禁用观察者或停用模块,直到下次