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

String 如何通过查询字符串更改Magento主题?,string,magento,themes,String,Magento,Themes,是否可以通过查询字符串更改Magento模板 我正在开发一个自定义模板,有时我想检查我是否弄坏了什么,所以我想通过查询字符串更改默认模板的主题 我渴望得到这样的东西: public function changeTheme(){ if (Mage::app()->getRequest()->getParam('layout_switch') == '1'){ Mage::getDesign()->setArea(‘frontend’)

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

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

我渴望得到这样的东西:

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;
}
?_主题=默认值


这样的事情存在吗?

简单的回答是不,据我所知,你不能

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


然后将您想要的主题分配给该商店视图,然后像yourstore.com/?\uuuuuuuu store=storecode一样访问它。简短的回答是不,据我所知,您不能

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

并将您想要的主题分配给该存储视图,然后像yourstore.com/?\uuuuuuu store=storecode那样以编程方式访问它:

您可以编写一个正在侦听事件的观察者

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

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
以编程方式:

您可以编写一个正在侦听事件的观察者

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

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-2-3:创建一个新的开发主题,并将当前live主题中的所有文件复制到新的应用/设计和sking主题中。然后观察控制器\动作\预触发事件,然后在观察者功能中简单地:

$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');
}
}

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

简单到1-2-3。创建一个新的开发主题,并将当前live主题中的所有文件复制到新的应用程序/设计和sking主题中。然后观察控制器\动作\预触发事件,然后在观察者功能中简单地:

$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');
}
}

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

Hi,这太棒了,但我不想编码存档。Hi,这太棒了,但我不想编码存档。