クエリ文字列を介して 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
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');
}
}
実際、デザインの微調整に非常に役立ちます。作業が終了したら、次回までオブザーバーを無効にするか、モジュールを無効にする必要があります