From 70cdc7f361613ec0aa2996e8659eb15778e32429 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Bu=CC=88nemann?= Date: Tue, 9 Apr 2019 22:36:12 +0200 Subject: [PATCH] Fix wrong skin, template, locale in ESI blocks if they differ from the layout name. --- .../Nexcessnet/Turpentine/Model/Observer/Esi.php | 7 ++++++- .../Turpentine/controllers/EsiController.php | 14 +++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/code/community/Nexcessnet/Turpentine/Model/Observer/Esi.php b/app/code/community/Nexcessnet/Turpentine/Model/Observer/Esi.php index b1b533467..9375733e7 100755 --- a/app/code/community/Nexcessnet/Turpentine/Model/Observer/Esi.php +++ b/app/code/community/Nexcessnet/Turpentine/Model/Observer/Esi.php @@ -344,7 +344,12 @@ protected function _getEsiData($blockObject, $esiOptions) { $esiData = new Varien_Object(); $esiData->setStoreId(Mage::app()->getStore()->getId()); $esiData->setDesignPackage(Mage::getDesign()->getPackageName()); - $esiData->setDesignTheme(Mage::getDesign()->getTheme('layout')); + $esiData->setDesignTheme(array( + 'layout' => Mage::getDesign()->getTheme('layout'), + 'template' => Mage::getDesign()->getTheme('template'), + 'skin' => Mage::getDesign()->getTheme('skin'), + 'locale' => Mage::getDesign()->getTheme('locale') + )); $esiData->setNameInLayout($blockObject->getNameInLayout()); $esiData->setBlockType(get_class($blockObject)); $esiData->setLayoutHandles($this->_getBlockLayoutHandles($blockObject)); diff --git a/app/code/community/Nexcessnet/Turpentine/controllers/EsiController.php b/app/code/community/Nexcessnet/Turpentine/controllers/EsiController.php index 0e74e66ec..e063e7912 100644 --- a/app/code/community/Nexcessnet/Turpentine/controllers/EsiController.php +++ b/app/code/community/Nexcessnet/Turpentine/controllers/EsiController.php @@ -183,9 +183,17 @@ protected function _getEsiBlock($esiData) { } } $layout = Mage::getSingleton('core/layout'); - Mage::getSingleton('core/design_package') - ->setPackageName($esiData->getDesignPackage()) - ->setTheme($esiData->getDesignTheme()); + $package = Mage::getSingleton('core/design_package') + ->setPackageName($esiData->getDesignPackage()); + $theme = $esiData->getDesignTheme(); + if (is_array($theme)) { + foreach ($theme as $type => $name) { + $package->setTheme($type, $name); + } + } else { + // for backwards compatibility during upgrades + $package->setTheme($theme); + } // This is, (roughly), the start of Action->loadLayout // - Mimicking Action->addActionLayoutHandles (Though we are using the esi data to set)