是否可以通过查询字符串更改 Magento 模板?
我正在开发一个自定义模板,有时我想检查我是否破坏了某些东西,所以我想通过查询字符串更改默认模板的主题。
我正在寻找这样的东西:
?_theme=默认
这样的事情存在吗?
以编程方式:
您可以编写一个正在监听事件的观察者<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
简短的回答是不,你不能(据我所知)
但是,如果它是您的本地安装(仅用作开发环境!),您可以使用一个技巧:
创建另一个商店视图并将您想要的任何主题分配给该商店视图,然后像访问它一样yourstore.com/?___store=storecode
就像 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');
}
}
确实对设计调整非常有帮助。工作完成后,应禁用观察者或停用模块,直到下一次