本文整理汇总了PHP中Magento\Framework\App\ViewInterface::generateLayoutXml方法的典型用法代码示例。如果您正苦于以下问题:PHP ViewInterface::generateLayoutXml方法的具体用法?PHP ViewInterface::generateLayoutXml怎么用?PHP ViewInterface::generateLayoutXml使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Magento\Framework\App\ViewInterface
的用法示例。
在下文中一共展示了ViewInterface::generateLayoutXml方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: _renderPage
/**
* Renders CMS page
*
* @param Action $action
* @param int $pageId
* @param bool $renderLayout
* @return bool
*/
protected function _renderPage(Action $action, $pageId = null, $renderLayout = true)
{
if (!is_null($pageId) && $pageId !== $this->_page->getId()) {
$delimiterPosition = strrpos($pageId, '|');
if ($delimiterPosition) {
$pageId = substr($pageId, 0, $delimiterPosition);
}
$this->_page->setStoreId($this->_storeManager->getStore()->getId());
if (!$this->_page->load($pageId)) {
return false;
}
}
if (!$this->_page->getId()) {
return false;
}
$inRange = $this->_localeDate->isScopeDateInInterval(null, $this->_page->getCustomThemeFrom(), $this->_page->getCustomThemeTo());
if ($this->_page->getCustomTheme()) {
if ($inRange) {
$this->_design->setDesignTheme($this->_page->getCustomTheme());
}
}
if ($this->_page->getPageLayout()) {
if ($this->_page->getCustomPageLayout() && $this->_page->getCustomPageLayout() != 'empty' && $inRange) {
$handle = $this->_page->getCustomPageLayout();
} else {
$handle = $this->_page->getPageLayout();
}
$this->pageConfig->setPageLayout($handle);
}
$this->_view->getPage()->initLayout();
$this->_view->getLayout()->getUpdate()->addHandle('cms_page_view');
$this->_view->addPageLayoutHandles(array('id' => $this->_page->getIdentifier()));
$this->_eventManager->dispatch('cms_page_render', array('page' => $this->_page, 'controller_action' => $action));
$this->_view->loadLayoutUpdates();
if ($this->_page->getCustomLayoutUpdateXml() && $inRange) {
$layoutUpdate = $this->_page->getCustomLayoutUpdateXml();
} else {
$layoutUpdate = $this->_page->getLayoutUpdateXml();
}
if (!empty($layoutUpdate)) {
$this->_view->getLayout()->getUpdate()->addUpdate($layoutUpdate);
}
$this->_view->generateLayoutXml()->generateLayoutBlocks();
$contentHeadingBlock = $this->_view->getLayout()->getBlock('page_content_heading');
if ($contentHeadingBlock) {
$contentHeading = $this->_escaper->escapeHtml($this->_page->getContentHeading());
$contentHeadingBlock->setContentHeading($contentHeading);
}
/* @TODO: Move catalog and checkout storage types to appropriate modules */
$messageBlock = $this->_view->getLayout()->getMessagesBlock();
$messageBlock->addStorageType($this->messageManager->getDefaultGroup());
$messageBlock->addMessages($this->messageManager->getMessages(true));
if ($renderLayout) {
$this->_view->renderLayout();
}
return true;
}
示例2: _initConfigureResultLayout
/**
* Init composite product configuration layout
*
* $isOk - true or false, whether action was completed nicely or with some error
* If $isOk is FALSE (some error during configuration), so $productType must be null
*
* @param bool $isOk
* @param string $productType
* @return $this
*/
protected function _initConfigureResultLayout($isOk, $productType)
{
$update = $this->_view->getLayout()->getUpdate();
if ($isOk) {
$update->addHandle('CATALOG_PRODUCT_COMPOSITE_CONFIGURE')->addHandle('catalog_product_view_type_' . $productType);
} else {
$update->addHandle('CATALOG_PRODUCT_COMPOSITE_CONFIGURE_ERROR');
}
$this->_view->loadLayoutUpdates();
$this->_view->generateLayoutXml();
$this->_view->generateLayoutBlocks();
return $this;
}
示例3: initProductLayout
/**
* Inits layout for viewing product page
*
* @param \Magento\Catalog\Model\Product $product
* @param \Magento\Framework\App\Action\Action $controller
* @param null|\Magento\Framework\Object $params
*
* @return \Magento\Catalog\Helper\Product\View
*/
public function initProductLayout($product, $controller, $params = null)
{
$settings = $this->_catalogDesign->getDesignSettings($product);
if ($settings->getCustomDesign()) {
$this->_catalogDesign->applyCustomDesign($settings->getCustomDesign());
}
$update = $this->_view->getLayout()->getUpdate();
$update->addHandle('default');
if ($params && $params->getBeforeHandles()) {
foreach ($params->getBeforeHandles() as $handle) {
$this->_view->addPageLayoutHandles(array('id' => $product->getId(), 'sku' => $product->getSku(), 'type' => $product->getTypeId()), $handle);
}
}
$this->_view->addPageLayoutHandles(array('id' => $product->getId(), 'sku' => $product->getSku(), 'type' => $product->getTypeId()));
if ($params && $params->getAfterHandles()) {
foreach ($params->getAfterHandles() as $handle) {
$this->_view->addPageLayoutHandles(array('id' => $product->getId(), 'sku' => $product->getSku(), 'type' => $product->getTypeId()), $handle);
}
}
$this->_view->loadLayoutUpdates();
// Apply custom layout update once layout is loaded
$layoutUpdates = $settings->getLayoutUpdates();
if ($layoutUpdates) {
if (is_array($layoutUpdates)) {
foreach ($layoutUpdates as $layoutUpdate) {
$update->addUpdate($layoutUpdate);
}
}
}
$this->_view->generateLayoutXml();
$this->_view->generateLayoutBlocks();
// Apply custom layout (page) template once the blocks are generated
if ($settings->getPageLayout()) {
$this->_pageLayout->applyTemplate($settings->getPageLayout());
}
$currentCategory = $this->_coreRegistry->registry('current_category');
$root = $this->_view->getLayout()->getBlock('root');
if ($root) {
$controllerClass = $this->_request->getFullActionName();
if ($controllerClass != 'catalog-product-view') {
$root->addBodyClass('catalog-product-view');
}
$root->addBodyClass('product-' . $product->getUrlKey());
if ($currentCategory instanceof \Magento\Catalog\Model\Category) {
$root->addBodyClass('categorypath-' . $currentCategory->getUrlPath())->addBodyClass('category-' . $currentCategory->getUrlKey());
}
}
return $this;
}