Guest User

Untitled

a guest
Feb 21st, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. <referenceContainer name="top.links">
  2. <block class="MagentoFrameworkViewElementHtmlLinkCurrent" name="collection">
  3. <arguments>
  4. <argument name="label" xsi:type="string">collection</argument>
  5. <argument name="path" xsi:type="string">collection</argument>
  6. </arguments>
  7. </block>
  8. </referenceContainer>
  9.  
  10. <?xml version="1.0"?>
  11. <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  12. xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
  13. <type name="MagentoThemeBlockHtmlTopmenu">
  14. <plugin name="add_cms_menu" type="{VendorName}{ModuleName}PluginTopmenu" sortOrder="1" />
  15. </type>
  16. </config>
  17.  
  18. appcode{VendorName}{ModuleName}PluginTopmenu.php
  19.  
  20.  
  21.  
  22. <?php
  23. namespace {VendorName}{ModuleName}Plugin;
  24. use MagentoFrameworkDataTreeNodeFactory;
  25. class Topmenu
  26. {
  27. protected $nodeFactory;
  28. protected $_storeManager;
  29. protected $_pageFactory;
  30. protected $_urlBuilder;
  31.  
  32. public function __construct(
  33. NodeFactory $nodeFactory,
  34. MagentoCmsModelPageFactory $pageFactory,
  35. MagentoStoreModelStoreManagerInterface $storeManager,
  36. MagentoFrameworkUrlInterface $urlBuilder
  37. ) {
  38. $this->nodeFactory = $nodeFactory;
  39. $this->_pageFactory = $pageFactory;
  40. $this->_storeManager = $storeManager;
  41. $this->_urlBuilder = $urlBuilder;
  42. }
  43. public function beforeGetHtml(
  44. MagentoThemeBlockHtmlTopmenu $subject,
  45. $outermostClass = '',
  46. $childrenWrapClass = '',
  47. $limit = 0
  48. ) {
  49. /* Showing Cms page About us at menu */
  50. $page = $this->getCmspage('about-us');
  51. if($page == null){
  52. return;
  53. }
  54.  
  55.  
  56. $node = $this->nodeFactory->create(
  57. [
  58. 'data' => [
  59. 'name' => $page->getTitle(),
  60. 'id' => $page->getIdentifier(),
  61. 'url' => $this->_urlBuilder->getUrl(null, ['_direct' => $page->getIdentifier()]),
  62. 'has_active' => false,
  63. 'is_active' => false // (expression to determine if menu item is selected or not)
  64. ],
  65. 'idField' => 'id',
  66. 'tree' => $subject->getMenu()->getTree()
  67. ]
  68. );
  69. $subject->getMenu()->addChild($node);
  70. }
  71. protected function getCmspage($identifier){
  72.  
  73. $page = $this->_pageFactory->create();
  74. $pageId = $page->checkIdentifier($identifier, $this->_storeManager->getStore()->getId());
  75.  
  76. if (!$pageId) {
  77. return null;
  78. }
  79. $page->setStoreId($this->_storeManager->getStore()->getId());
  80. if (!$page->load($pageId)) {
  81. return null;
  82. }
  83.  
  84. if (!$page->getId()) {
  85. return null;
  86. }
  87.  
  88. return $page;
  89. }
Add Comment
Please, Sign In to add comment