![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-cms/Block/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Cms\Block; use Magento\Store\Model\ScopeInterface; /** * Cms page content block * * @api * @since 100.0.2 */ class Page extends \Magento\Framework\View\Element\AbstractBlock implements \Magento\Framework\DataObject\IdentityInterface { /** * @var \Magento\Cms\Model\Template\FilterProvider */ protected $_filterProvider; /** * @var \Magento\Cms\Model\Page */ protected $_page; /** * @var \Magento\Store\Model\StoreManagerInterface */ protected $_storeManager; /** * @var \Magento\Cms\Model\PageFactory */ protected $_pageFactory; /** * @var \Magento\Framework\View\Page\Config */ protected $pageConfig; /** * Construct * * @param \Magento\Framework\View\Element\Context $context * @param \Magento\Cms\Model\Page $page * @param \Magento\Cms\Model\Template\FilterProvider $filterProvider * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param \Magento\Cms\Model\PageFactory $pageFactory * @param \Magento\Framework\View\Page\Config $pageConfig * @param array $data */ public function __construct( \Magento\Framework\View\Element\Context $context, \Magento\Cms\Model\Page $page, \Magento\Cms\Model\Template\FilterProvider $filterProvider, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Cms\Model\PageFactory $pageFactory, \Magento\Framework\View\Page\Config $pageConfig, array $data = [] ) { parent::__construct($context, $data); // used singleton (instead factory) because there exist dependencies on \Magento\Cms\Helper\Page $this->_page = $page; $this->_filterProvider = $filterProvider; $this->_storeManager = $storeManager; $this->_pageFactory = $pageFactory; $this->pageConfig = $pageConfig; } /** * Retrieve Page instance * * @return \Magento\Cms\Model\Page */ public function getPage() { if (!$this->hasData('page')) { if ($this->getPageId()) { /** @var \Magento\Cms\Model\Page $page */ $page = $this->_pageFactory->create(); $page->setStoreId($this->_storeManager->getStore()->getId())->load($this->getPageId(), 'identifier'); } else { $page = $this->_page; } $this->setData('page', $page); } return $this->getData('page'); } /** * Prepare global layout * * @return $this */ protected function _prepareLayout() { $page = $this->getPage(); $this->_addBreadcrumbs($page); $this->pageConfig->addBodyClass('cms-' . $page->getIdentifier()); $metaTitle = $page->getMetaTitle(); $this->pageConfig->getTitle()->set($metaTitle ? $metaTitle : $page->getTitle()); $this->pageConfig->setKeywords($page->getMetaKeywords()); $this->pageConfig->setDescription($page->getMetaDescription()); $pageMainTitle = $this->getLayout()->getBlock('page.main.title'); if ($pageMainTitle) { // Setting empty page title if content heading is absent $cmsTitle = $page->getContentHeading() ?: ' '; $pageMainTitle->setPageTitle($this->escapeHtml($cmsTitle)); } return parent::_prepareLayout(); } /** * Prepare breadcrumbs * * @param \Magento\Cms\Model\Page $page * @throws \Magento\Framework\Exception\LocalizedException * @return void */ protected function _addBreadcrumbs(\Magento\Cms\Model\Page $page) { $homePageIdentifier = $this->_scopeConfig->getValue( 'web/default/cms_home_page', ScopeInterface::SCOPE_STORE ); $homePageDelimiterPosition = $homePageIdentifier === null ? false : strrpos($homePageIdentifier, '|'); if ($homePageDelimiterPosition) { $homePageIdentifier = substr($homePageIdentifier, 0, $homePageDelimiterPosition); } $noRouteIdentifier = $this->_scopeConfig->getValue( 'web/default/cms_no_route', ScopeInterface::SCOPE_STORE ); $noRouteDelimiterPosition = $noRouteIdentifier === null ? false : strrpos($noRouteIdentifier, '|'); if ($noRouteDelimiterPosition) { $noRouteIdentifier = substr($noRouteIdentifier, 0, $noRouteDelimiterPosition); } if ($this->_scopeConfig->getValue('web/default/show_cms_breadcrumbs', ScopeInterface::SCOPE_STORE) && ($breadcrumbsBlock = $this->getLayout()->getBlock('breadcrumbs')) && $page->getIdentifier() !== $homePageIdentifier && $page->getIdentifier() !== $noRouteIdentifier ) { $breadcrumbsBlock->addCrumb( 'home', [ 'label' => __('Home'), 'title' => __('Go to Home Page'), 'link' => $this->_storeManager->getStore()->getBaseUrl() ] ); $breadcrumbsBlock->addCrumb('cms_page', ['label' => $page->getTitle(), 'title' => $page->getTitle()]); } } /** * Prepare HTML content * * @return string */ protected function _toHtml() { $html = $this->_filterProvider->getPageFilter()->filter($this->getPage()->getContent()); return $html; } /** * Return identifiers for produced content * * @return array */ public function getIdentities() { return [\Magento\Cms\Model\Page::CACHE_TAG . '_' . $this->getPage()->getId()]; } }