Скрытие категорий 3 уровня в меню

Помогите пожалуйста сделать в меню возможность скрывать n+ категорию и вместо неё выводить ссылку "Посмотреть все", которая будет открывать страницу родительской категории и была отличной от списка категорий, либо без отличия даже (может в следующих обновлениях уже полностью решить), а сейчас хотябы код для реализации. Спасибо!

Также было бы хорошо это осуществить в следующих обновлениях для всех!)

6 ответов
a
Николай Черванюк
#
13 декабря 2018 18:18

В данном случае скрываются категории 2-го уровня, необходимо скрыть категории 3-го уровня.

a
Евгений Леман
programmer
#
13 декабря 2018 18:36

Разумеется сразу об этом говорить не надо :сарказм:

a
Евгений Леман
programmer
#
13 декабря 2018 18:33

Откройте для редактирования шаблон index.html и найдите там строки №664-666:

{foreach $cat.childs as $subcat}
{if isset($subcat.params.mainmenu_hide)}{continue}{/if}
<li class="submenu__item">

Замените их на следующие:

{$_submenu_item_overflow = false}
{$_submenu_item_overflow_anchor_places = false}
{$_submenu_item_count = 0}
{foreach $cat.childs as $subcat}
{if isset($subcat.params.mainmenu_hide)}{continue}{/if}
{$_submenu_item_count = $_submenu_item_count+1}
{if !$_submenu_item_overflow && $_submenu_item_count > 3}
	{$_submenu_item_overflow = true}
{/if}
{if $_submenu_item_overflow && !$_submenu_item_overflow_anchor_places}
	<li class="submenu__item submenu__item-overflow_anchor">
		<div class="menu-item__wrapper">
			<a class="submenu__item-title" href="{$cat.url}">
				<div class="submenu__item-title-text">
					<div class="subtitle-text">[`Go to category`]</div>
				</div>
			</a>
		</div>
	</li>
	{$_submenu_item_overflow_anchor_places = true}
{/if}
<li class="submenu__item{if $_submenu_item_overflow} submenu__item-overflow{/if}">

В строке {if !$_submenu_item_overflow && $_submenu_item_count > 3} цифра является указателем максимального для отображения числа подкатегорий. Меняйте как хотите.

Откройте user.css и добавьте там строки:

@media (min-width:1242px){
	.horizontal-menu .submenu__item-overflow{display:none !important}
}
@media (max-width:1241px){
	.submenu__item-overflow_anchor{display:none !important}
}

По идее должно сработать. Только для горизонтального меню.

a
Евгений Леман
programmer
#
13 декабря 2018 18:41

Для третьего уровня почти то же самое, но в другом месте. Найдите в index.html строки №684-686:

{foreach $subcat.childs as $subsubcat}
{if isset($subsubcat.params.mainmenu_hide)}{continue}{/if}
<li class="submenu__item-li"></li>

Замените на:

{$_submenu_item_overflow = false}
{$_submenu_item_overflow_anchor_places = false}
{$_submenu_item_count = 0}
{foreach $subcat.childs as $subsubcat}
{if isset($subsubcat.params.mainmenu_hide)}{continue}{/if}
{$_submenu_item_count = $_submenu_item_count+1}
{if !$_submenu_item_overflow && $_submenu_item_count > 3}
	{$_submenu_item_overflow = true}
{/if}
{if $_submenu_item_overflow && !$_submenu_item_overflow_anchor_places}
	<li class="submenu__item-li submenu__item-overflow_anchor">
		<a class="submenu__item-li-link" href="{$subcat.url}">
			<div class="submenu__item-title-text">
				<div class="submenu__item-li-text">[`Go to category`]</div>
			</div>
		</a>
	</li>
	{$_submenu_item_overflow_anchor_places = true}
{/if}
<li class="submenu__item-li{if $_submenu_item_overflow} submenu__item-overflow{/if}">

Для user.css всё то же самое.

a
Николай Черванюк
#
14 декабря 2018 12:22

Огромное спасибо! Все получилось даже лучше чем предполагал )) Функция немаловажна, думаю стоит включить ее в дальнейшие обновления!

a
Фархад
designer
#
14 декабря 2018 16:56

Здравствуйте!

По какому адресу можно посмотреть итог работы?

Спасибо!

Чтобы добавить комментарий, зарегистрируйтесь или войдите