diff --git a/app/code/Magento/Catalog/Helper/Product/View.php b/app/code/Magento/Catalog/Helper/Product/View.php index 1973e8fbf09519027f1ce8e14c38b7b86177d5c0..8b38045df59d69aac367b3d30a3b6b976a10d683 100644 --- a/app/code/Magento/Catalog/Helper/Product/View.php +++ b/app/code/Magento/Catalog/Helper/Product/View.php @@ -116,24 +116,26 @@ class View extends \Magento\Framework\App\Helper\AbstractHelper $pageConfig->setPageLayout($settings->getPageLayout()); } + $urlSafeSku = rawurlencode($product->getSku()); + // Load default page handles and page configurations if ($params && $params->getBeforeHandles()) { foreach ($params->getBeforeHandles() as $handle) { $resultPage->addPageLayoutHandles( - ['id' => $product->getId(), 'sku' => $product->getSku(), 'type' => $product->getTypeId()], + ['id' => $product->getId(), 'sku' => $urlSafeSku, 'type' => $product->getTypeId()], $handle ); } } $resultPage->addPageLayoutHandles( - ['id' => $product->getId(), 'sku' => $product->getSku(), 'type' => $product->getTypeId()] + ['id' => $product->getId(), 'sku' => $urlSafeSku, 'type' => $product->getTypeId()] ); if ($params && $params->getAfterHandles()) { foreach ($params->getAfterHandles() as $handle) { $resultPage->addPageLayoutHandles( - ['id' => $product->getId(), 'sku' => $product->getSku(), 'type' => $product->getTypeId()], + ['id' => $product->getId(), 'sku' => $urlSafeSku, 'type' => $product->getTypeId()], $handle ); } diff --git a/app/code/Magento/PageCache/Model/Observer/ProcessLayoutRenderElement.php b/app/code/Magento/PageCache/Model/Observer/ProcessLayoutRenderElement.php index fd266341f782b1a41ce9bd366aa51dcc408eee2e..159afc6e90ed4107e4364c4ed086e38f21fbe535 100644 --- a/app/code/Magento/PageCache/Model/Observer/ProcessLayoutRenderElement.php +++ b/app/code/Magento/PageCache/Model/Observer/ProcessLayoutRenderElement.php @@ -37,7 +37,7 @@ class ProcessLayoutRenderElement 'page_cache/block/esi', [ 'blocks' => json_encode([$block->getNameInLayout()]), - 'handles' => urlencode(json_encode($layout->getUpdate()->getHandles())) + 'handles' => json_encode($layout->getUpdate()->getHandles()) ] ); return sprintf('<esi:include src="%s" />', $url); diff --git a/app/code/Magento/Review/Controller/Product/ListAction.php b/app/code/Magento/Review/Controller/Product/ListAction.php index 9669b04f91c7c683749aad291f3f4dacbfd05b47..9774547e52779a5de78e4053a5b8b4613cf19596 100644 --- a/app/code/Magento/Review/Controller/Product/ListAction.php +++ b/app/code/Magento/Review/Controller/Product/ListAction.php @@ -25,8 +25,10 @@ class ListAction extends \Magento\Review\Controller\Product $pageConfig->setPageLayout($product->getPageLayout()); } $update = $this->_view->getLayout()->getUpdate(); + + $urlSafeSku = rawurlencode($product->getSku()); $this->_view->addPageLayoutHandles( - ['id' => $product->getId(), 'sku' => $product->getSku(), 'type' => $product->getTypeId()] + ['id' => $product->getId(), 'sku' => $urlSafeSku, 'type' => $product->getTypeId()] ); $this->_view->loadLayoutUpdates(); diff --git a/lib/internal/Magento/Framework/View/Layout/Reader/Container.php b/lib/internal/Magento/Framework/View/Layout/Reader/Container.php index cf392399edb8cbb5e1dec8d4821eb30a984f9751..230e6bd9c6cd5e778c65c52c749cd362ff6c7ebe 100644 --- a/lib/internal/Magento/Framework/View/Layout/Reader/Container.php +++ b/lib/internal/Magento/Framework/View/Layout/Reader/Container.php @@ -86,7 +86,8 @@ class Container implements Layout\ReaderInterface default: break; } - return $this->readerPool->interpret($readerContext, $currentElement); + $this->readerPool->interpret($readerContext, $currentElement); + return $this; } /** diff --git a/lib/internal/Magento/Framework/View/Layout/Reader/Move.php b/lib/internal/Magento/Framework/View/Layout/Reader/Move.php index 9d0fe73d2b066118b3447bd99077d77c91be285e..e9b1c6185838bba3e8b0b43b2c996bf9c4ce443c 100644 --- a/lib/internal/Magento/Framework/View/Layout/Reader/Move.php +++ b/lib/internal/Magento/Framework/View/Layout/Reader/Move.php @@ -34,7 +34,7 @@ class Move implements Layout\ReaderInterface public function interpret(Context $readerContext, Layout\Element $currentElement) { $this->scheduleMove($readerContext->getScheduledStructure(), $currentElement); - return false; + return $this; } /** diff --git a/lib/internal/Magento/Framework/View/Layout/Reader/Remove.php b/lib/internal/Magento/Framework/View/Layout/Reader/Remove.php index 3d0a9522e1146d04fc4ea63ca44314b6d8b4b661..3f5cfcce00093459553cd8c26201ac426b63c30f 100644 --- a/lib/internal/Magento/Framework/View/Layout/Reader/Remove.php +++ b/lib/internal/Magento/Framework/View/Layout/Reader/Remove.php @@ -36,6 +36,6 @@ class Remove implements Layout\ReaderInterface { $scheduledStructure = $readerContext->getScheduledStructure(); $scheduledStructure->setElementToRemoveList((string)$currentElement->getAttribute('name')); - return false; + return $this; } } diff --git a/lib/internal/Magento/Framework/View/Page/Config/Reader/Body.php b/lib/internal/Magento/Framework/View/Page/Config/Reader/Body.php index 95311e008f5875e21fbbc4961ca47895c2e11c50..2d779eb0fb10f110b03800631c25e051bbfda02d 100644 --- a/lib/internal/Magento/Framework/View/Page/Config/Reader/Body.php +++ b/lib/internal/Magento/Framework/View/Page/Config/Reader/Body.php @@ -63,10 +63,11 @@ class Body implements Layout\ReaderInterface /** @var \Magento\Framework\View\Layout\Element $element */ foreach ($bodyElement as $element) { if ($element->getName() === self::BODY_ATTRIBUTE) { - $this->setBodyAttributeTosStructure($readerContext, $element); + $this->setBodyAttributeToStructure($readerContext, $element); } } - return $this->readerPool->interpret($readerContext, $bodyElement); + $this->readerPool->interpret($readerContext, $bodyElement); + return $this; } /** @@ -76,7 +77,7 @@ class Body implements Layout\ReaderInterface * @param Layout\Element $element * @return $this */ - protected function setBodyAttributeTosStructure(Layout\Reader\Context $readerContext, Layout\Element $element) + protected function setBodyAttributeToStructure(Layout\Reader\Context $readerContext, Layout\Element $element) { if ($element->getAttribute('name') == PageConfig::BODY_ATTRIBUTE_CLASS) { $readerContext->getPageConfigStructure()->setBodyClass($element->getAttribute('value'));