Kami menggunakan modul Codazon MegaMenu untuk menu utama, tetapi pautan tidak mempunyai tag tajuk. Saya ingin mengatasi ini supaya atribut tajuk ditambahkan pada pautan kategori dengan nilainya ialah nama kategori.
Saya mencipta modul saya sendiri dan menyalin kaedah khusus (_getHtml) di mana saya mencipta teg untuk pautan kategori dan cuba menambah teg tajuk. Saya rasa saya melakukan segala-galanya dengan betul, tetapi selepas memuat semula halaman saya tidak pernah melihat tajuk itu muncul.
Saya menyegarkan/membersihkan cache, menaik taraf dan menyegarkan fail statik.
Ini ialah fail Blok/Widget dalam modul saya (asalnya terletak dalam apl/kod/Codazon/MegaMenu/Blok/Widget):
<?php namespace MyModule\MegaMenu\Block\Widget; use Codazon\MegaMenu\Block\Widget\CategoriesTree as OriginalCategoriesTree; class CategoriesTree extends OriginalCategoriesTree { protected function _getHtml( \Magento\Framework\Data\Tree\Node $menuTree, $childrenWrapClass, $limit, $colBrakes = [] ) { $html = ''; $col = 1; $itemCount = $this->getData('item_count'); $children = $menuTree->getChildren(); $parentLevel = $menuTree->getLevel(); $childLevel = ($parentLevel === null) ? 1 : $parentLevel + 1; $counter = 1; $itemPosition = 1; $childrenCount = $children->count(); $parentPositionClass = $menuTree->getPositionClass(); $itemPositionClassPrefix = $parentPositionClass ? $parentPositionClass . '-' : 'nav-'; foreach ($children as $child) { $child->setLevel($childLevel); $child->setIsFirst($counter == 1); $child->setIsLast($counter == $childrenCount); $child->setPositionClass($itemPositionClassPrefix . $counter); $outermostClassCode = ''; $outermostClass = $menuTree->getOutermostClass(); if ($childLevel == 0 && $outermostClass) { $outermostClassCode = ' class="' . $outermostClass . '" '; $child->setClass($outermostClass); } if ($this->shouldAddNewColumn($colBrakes, $counter)) { $col = 24/ceil($childrenCount/$limit); $html .= '</ul></li><li class="col-sm-'.$col.'"><ul>'; } $html .= '<li ' . $this->_getRenderedMenuItemAttributes($child) . '>'; $html .= '<a class="menu-link" href="' . $child->getUrl() . '" ' . $outermostClassCode . ' title="' . $this->escapeHtml($child->getName()) . '"><span>' . $this->escapeHtml( $child->getName() ) . '</span></a>' . $this->_addSubMenu( $child, $childLevel, $childrenWrapClass, $limit ) . '</li>'; $itemPosition++; if($itemCount){ if($itemCount == $counter){ break; } } $counter++; } if (is_array($colBrakes) && count($colBrakes) && $limit) { $html = '<li class="col-sm-'.$col.'"><ul>' . $html . '</ul></li>'; } return $html; } }
Ini di.xml saya:
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <preference for="Codazon\MegaMenu\Block\Widget\CategoriesTree" type="MyModule\MegaMenu\Block\Widget\CategoriesTree" /> </config>
Ini modul saya.xml:
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="MyModule_MegaMenu" setup_version="1.0.0"> <sequence> <module name="Codazon_MegaMenu"/> </sequence> </module> </config>
Ada idea mengapa ini tidak berkesan? Ini kali pertama saya membuat liputan seperti ini.
Terima kasih!
Saya rasa anda perlu menambah semua kebergantungan blok induk dalam blok modul.