Ejemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function addPageLayoutHandles(array $parameters = array(), $defaultHandle = null)
 {
     $pluginInfo = $this->pluginList->getNext($this->subjectType, 'addPageLayoutHandles');
     if (!$pluginInfo) {
         return parent::addPageLayoutHandles($parameters, $defaultHandle);
     } else {
         return $this->___callPlugins('addPageLayoutHandles', func_get_args(), $pluginInfo);
     }
 }
Ejemplo n.º 2
0
 public function testAddPageLayoutHandlesWithDefaultHandle()
 {
     $defaultHandle = 'default_handle';
     $parameters = ['key_one' => 'val_one', 'key_two' => 'val_two'];
     $expected = ['default_handle', 'default_handle_key_one_val_one', 'default_handle_key_two_val_two'];
     $this->request->expects($this->never())->method('getFullActionName');
     $this->layoutMerge->expects($this->any())->method('addHandle')->with($expected)->willReturnSelf();
     $this->page->addPageLayoutHandles($parameters, $defaultHandle);
 }
Ejemplo n.º 3
0
 /**
  * Init layout for viewing product page
  *
  * @param \Magento\Framework\View\Result\Page $resultPage
  * @param \Magento\Catalog\Model\Product $product
  * @param null|\Magento\Framework\Object $params
  * @return \Magento\Catalog\Helper\Product\View
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 public function initProductLayout(ResultPage $resultPage, $product, $params = null)
 {
     $settings = $this->_catalogDesign->getDesignSettings($product);
     $pageConfig = $resultPage->getConfig();
     if ($settings->getCustomDesign()) {
         $this->_catalogDesign->applyCustomDesign($settings->getCustomDesign());
     }
     // Apply custom page layout
     if ($settings->getPageLayout()) {
         $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' => $urlSafeSku, 'type' => $product->getTypeId()], $handle);
         }
     }
     $resultPage->addPageLayoutHandles(['id' => $product->getId(), 'sku' => $urlSafeSku, 'type' => $product->getTypeId()]);
     if ($params && $params->getAfterHandles()) {
         foreach ($params->getAfterHandles() as $handle) {
             $resultPage->addPageLayoutHandles(['id' => $product->getId(), 'sku' => $urlSafeSku, 'type' => $product->getTypeId()], $handle);
         }
     }
     // Apply custom layout update once layout is loaded
     $update = $resultPage->getLayout()->getUpdate();
     $layoutUpdates = $settings->getLayoutUpdates();
     if ($layoutUpdates) {
         if (is_array($layoutUpdates)) {
             foreach ($layoutUpdates as $layoutUpdate) {
                 $update->addUpdate($layoutUpdate);
             }
         }
     }
     $currentCategory = $this->_coreRegistry->registry('current_category');
     $controllerClass = $this->_request->getFullActionName();
     if ($controllerClass != 'catalog-product-view') {
         $pageConfig->addBodyClass('catalog-product-view');
     }
     $pageConfig->addBodyClass('product-' . $product->getUrlKey());
     if ($currentCategory instanceof \Magento\Catalog\Model\Category) {
         $pageConfig->addBodyClass('categorypath-' . $this->categoryUrlPathGenerator->getUrlPath($currentCategory))->addBodyClass('category-' . $currentCategory->getUrlKey());
     }
     return $this;
 }
Ejemplo n.º 4
0
 /**
  * Add layout updates handles associated with the action page
  *
  * @param array|null $parameters page parameters
  * @param string|null $defaultHandle
  * @return bool
  */
 public function addPageLayoutHandles(array $parameters = [], $defaultHandle = null)
 {
     return $this->page->addPageLayoutHandles($parameters, $defaultHandle);
 }