Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <referenceContainer name="top.links">
- <block class="MagentoFrameworkViewElementHtmlLinkCurrent" name="collection">
- <arguments>
- <argument name="label" xsi:type="string">collection</argument>
- <argument name="path" xsi:type="string">collection</argument>
- </arguments>
- </block>
- </referenceContainer>
- <?xml version="1.0"?>
- <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
- <type name="MagentoThemeBlockHtmlTopmenu">
- <plugin name="add_cms_menu" type="{VendorName}{ModuleName}PluginTopmenu" sortOrder="1" />
- </type>
- </config>
- appcode{VendorName}{ModuleName}PluginTopmenu.php
- <?php
- namespace {VendorName}{ModuleName}Plugin;
- use MagentoFrameworkDataTreeNodeFactory;
- class Topmenu
- {
- protected $nodeFactory;
- protected $_storeManager;
- protected $_pageFactory;
- protected $_urlBuilder;
- public function __construct(
- NodeFactory $nodeFactory,
- MagentoCmsModelPageFactory $pageFactory,
- MagentoStoreModelStoreManagerInterface $storeManager,
- MagentoFrameworkUrlInterface $urlBuilder
- ) {
- $this->nodeFactory = $nodeFactory;
- $this->_pageFactory = $pageFactory;
- $this->_storeManager = $storeManager;
- $this->_urlBuilder = $urlBuilder;
- }
- public function beforeGetHtml(
- MagentoThemeBlockHtmlTopmenu $subject,
- $outermostClass = '',
- $childrenWrapClass = '',
- $limit = 0
- ) {
- /* Showing Cms page About us at menu */
- $page = $this->getCmspage('about-us');
- if($page == null){
- return;
- }
- $node = $this->nodeFactory->create(
- [
- 'data' => [
- 'name' => $page->getTitle(),
- 'id' => $page->getIdentifier(),
- 'url' => $this->_urlBuilder->getUrl(null, ['_direct' => $page->getIdentifier()]),
- 'has_active' => false,
- 'is_active' => false // (expression to determine if menu item is selected or not)
- ],
- 'idField' => 'id',
- 'tree' => $subject->getMenu()->getTree()
- ]
- );
- $subject->getMenu()->addChild($node);
- }
- protected function getCmspage($identifier){
- $page = $this->_pageFactory->create();
- $pageId = $page->checkIdentifier($identifier, $this->_storeManager->getStore()->getId());
- if (!$pageId) {
- return null;
- }
- $page->setStoreId($this->_storeManager->getStore()->getId());
- if (!$page->load($pageId)) {
- return null;
- }
- if (!$page->getId()) {
- return null;
- }
- return $page;
- }
Add Comment
Please, Sign In to add comment