Перейти к содержимому


Вывод дочерних пунктов меню при выборе родительского


  • Вы не можете ответить в тему
В этой теме нет ответов

#1 rvsport

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений
  • ГородМосква
Репутация: 0

Отправлено 05 Ноябрь 2019 - 11:43

Подскажите пожалуйста как указать условие при выборе родительского пункта меню показывать только его потомков? Как я понимаю при наступлении условия выбора родительского пункта должен меняться массив $items, но к сожалению добиться у меня этого не получается. Подскажите как это сделать

Использую ООП, в массив $items записываются все пункты меню (родительские и дочерние). В шаблоне перебираю массив и вывожу все пункты. Но вот как указать условие, чтобы выводить только дочерние пункты меню не могу понять. Код в шаблоне:
<nav>
			<?php foreach ($items as $item) { ?>
				<?=printItem($item, $items, $childrens, $active)?>
			<?php } ?>
		</nav>  
в функцию передается массив со всеми пунктами меню ($items), массив содержащий дочерние пункты ($childrens) и массив активного пункта.
Код функции:
<?php function printItem($item, &$items, $childrens, $active) { ?>
	<?php if (count($items) == 0) return; ?>
	<div>
		<a <?php if (in_array($item->id, $active)) { ?>class="active"<?php } ?> <?php if ($item->external) { ?>rel="external"<?php } ?> href="<?=$item->link?>"><?=$item->title?></a>
		<?php
			while(true) {
				$key = array_search($item->id, $childrens);
				if (!$key) break;
				unset($childrens[$key]);
		?>
		<?=printItem($items[$key], $items, $childrens, $active)?>
		<?php } ?>
	</div>
<?php unset($items[$item->id]); } ?>

Во вложении массив представлен в файле items.html. childrens.html - массив дочерних пунктов, в котором ключ это id дочернего пункта, а значение id родительского пункта. case_menu_new.hrml - код шаблона.

Прикрепленные файлы

  • Прикрепленный файл  menu.zip   4,67К   1 Количество загрузок:






Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных