質問: ' class="' . trim($class) . '"'; } echo '<li' . $class . '>'; // render the menu item. switch ($item->type) : case 'separator': case 'url': case 'component': case 'heading': require jmodulehelper::getlayoutpath('mod_menu', 'default_' . $item->type); break; default: require jmodulehelper::getlayoutpath('mod_menu', 'default_url'); break; endswitch; // the next item is deeper. if ($item->deeper) { echo '<ul class="nav-child unstyled small lvl_'.($num++).'>'; } elseif ($item->shallower) { // the next item is shallower. echo '</li>'; echo str_repeat('</ul></li>', $item->level_diff); } else { // the next item is on the same level. echo '</li>'; } } ?></ul> これはここで重要なコードです。 { echo '<ul class="nav-child unstyled small lvl_'.($num++).'>'; } 問題は、私のサイトを初期化すると、すべてのサブメニューレイヤーにプラス1が追加されますが、レイヤーが親に最も近いときに最初からやり直さないことです。例これは私が欲しいものです <ul class="lvl_1"> <li> <ul class="lvl_2"> </ul> </li> </ul> <ul class="lvl_1"> <li> <ul class="lvl_2"> </ul> </li> </ul> これは私が得るものです <ul class="lvl_1"> <li> <ul class="lvl_2"> </ul> </li> </ul> <ul class="lvl_3"> <li> <ul class="lvl_4"> </ul> </li> </ul> これはおそらく修正が非常に簡単です。
回答: これは、私が過去のjoomla 2.5サイトで行ったメニューモジュールのオーバーライドからのもので、同じ要件を扱っています。ここに、当時のローカル開発バージョンに存在していたdefault.phpファイルの初期バージョンのコードを貼り付けます。最終バージョンのコードを後でさらに修正または改善した可能性がありますが、そのコードにアクセスして、ここに貼り付けることはできません。慎重に使用するか、問題を報告してください。投稿をここで編集します。アイテム(li)レベルと共に、サブulにもクラスを割り当てます。<?php /** * @package joomla.site * @subpackage mod_menu * @copyright copyright (c) 2005 - 2014 open source matters, inc. all rights reserved. * @license gnu general public license version 2 or later; see license.txt */ // no direct access. defined('_jexec') or die; // note. it is important to remove spaces between elements. ?> <ul class="menu<?php echo $class_sfx;?>"<?php $tag = ''; if ($params->get('tag_id')!=null) { $tag = $params->get('tag_id').''; echo ' id="'.$tag.'"'; } ?>> <?php foreach ($list as $i => &$item) : $class = 'item-'.$item->id; if ($item->id == $active_id) { $class .= ' current'; } if (in_array($item->id, $path)) { $class .= ' active'; } elseif ($item->type == 'alias') { $aliastoid = $item->params->get('aliasoptions'); if (count($path) > 0 && $aliastoid == $path[count($path)-1]) { $class .= ' active'; } elseif (in_array($aliastoid, $path)) { $class .= ' alias-parent-active'; } } if ($item->deeper) { $class .= ' deeper'; } if ($item->level == 1) { $class .= ' items-level1'; } if ($item->level == 2) { $class .= ' items-level2'; } if ($item->level == 3) { $class .= ' items-level3'; } if ($item->level == 4) { $class .= ' items-level4'; } if ($item->parent) { $class .= ' parent'; } if (!empty($class)) { $class = ' class="'.trim($class) .'"'; } echo '<li'.$class.'>'; // render the menu item. switch ($item->type) : case 'separator': case 'url': case 'component': require jmodulehelper::getlayoutpath('mod_menu', 'default_'.$item->type); break; default: require jmodulehelper::getlayoutpath('mod_menu', 'default_url'); break; endswitch; // the next item is deeper. if ($item->deeper) { echo '<ul'; if($item->level == 1) {echo " class='first-subs'";} if($item->level == 2) {echo " class='second-subs'";}if($item->level == 3) {echo " class='third-subs'";} echo '>'; } // the next item is shallower. elseif ($item->shallower) { echo '</li>'; echo str_repeat('</ul></li>', $item->level_diff); } // the next item is on the same level. else { echo '</li>'; } endforeach; ?></ul>