• Всем привет. Подскажите пожалуйста, как сделать вот такое меню http://prntscr.com/oooiri.
    Вот начало кода

    <ul class="main-menu">
    	<li class="hover-menu">
    	 	<a href="#" class="drop">услуги <span class="car"></span></a>
    	 	<div class="hover-menu-box">
    	 		<div class="hover-menu-box-head">
    	 			<h3>Услуги</h3>
    	 			<a href="#">Все услуги</a>
    	 		</div>
    	 		<div class="hover-menu-scroll">
    	 			<div class="hover-menu-scroll-inn">
    			 		<ul>
    			 			<li>
    			 				<span>Детская стоматология</span>
    			 				<ul>
    			 					<li><a href="#">Герметизация фиссур</a></li>
    			 					<li><a href="#">Исправление прикуса у детей</a></li>
    			 					<li><a href="#">Лечение кариеса у детей</a></li>
    			 					<li><a href="#">Лечение десен у детей</a></li>
    			 					<li><a href="#">Все услуги раздела ></a></li>
    			 				</ul>
    			 			</li>
    			 			<li>
    			 				<span>Имплантология</span>
    			 				...						

    wp_nav_menu делает ul>li>ul>li. А тут Еще заголовок раздела в span. Вот как его вставить?

    • Тема изменена 4 года, 7 месяцев назад пользователем noress.
Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Если я не ошибся речь идёт об обычном многоуровневнем меню. Его в можно сделать в админке. Довавляете в меню нужную страницу или запись. Затем наводить курсор на добавленный элемент меню и при появлении значка крест со стрелками нажав левую кнопку мышки сдвигание этот этот элемент в право. Так образуется второй уровень меню. Аналогично можно создать и третий.

    Не совсем обычное. Вот подпункты услуги — они не ссылки, а span. А как сделать «Все услуги раздела»? И как это все вместить в общее меню. Ведь такая выпадайка блатная только у услуг, остальные нормально выпадают. Наверно придется Меню услуг отдельно делать. И рядом поставить с основным меню). Чет только такое в голову пришло

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

    У меня лишь только верстка, которую хочу интегрировать с вордпресс. Пока сайт на временном хостинге (https://wine.ha6.ru/). Кое какую интеграцию уже провел. Вот Добрался до меню. В услугах должны быть подкатегории услуг (жирным) и подподкатегории услуг(списком). Если была бы структура выпадаек одинакова, то не было бы особо проблем. Но тут только с услугами такая заморочка, а с другими пунктами все просто. И вот я хз как это сдружить

    Я думаю услуги сделать с помощью get_page_children() и wp_query, а остальные пункты обычным wp_nav_menu. Что скажете? Или все таки как то можно этот комбайн собрать?

    Пока не знаю, можно ли все это вместе собрать. Но если вы не фанат чистого CSS то думаю что плагин WP Mega Menu поможет все это реализовать. Или же вам придется искать тему где элементов меню различного уровня заданы разные классы CSS.

    используйте walker для меню.
    в гугле много информации, как пример — https://misha.blog/wordpress/nav-menu-walkers.html

    Я начал использовать walker. Но любые изменения, например в start_lvl функции затрагивает все вложения, а мне надо, чтобы только затронуло подкатегорию, а подподкатегория осталась та же.
    Вот код

    
    class Child_Wrap extends Walker_Nav_Menu
    {
        function start_lvl(&$output, $depth = 0, $args = array())
        {
            $indent = str_repeat("\t", $depth);
            if($depth == 0){
            	$output .= "\n$indent<div class=\"hover-menu-box\"><div class=\"hover-menu-box-head\"><h3>Услуги</h3><a href=\"#\">Все услуги</a></div><div class=\"hover-menu-scroll\"><div class=\"hover-menu-scroll-inn\"><ul class=\"sub-menu\">\n";
        	} else {
        		$output .= "\n$indent<ul>\n"; 
        	}
        }
        function end_lvl(&$output, $depth = 0, $args = array())
        {
            $indent = str_repeat("\t", $depth);
            $output .= "$indent</ul></div></div></div>\n";
        }
    }
    

    Так то все работает, но он применяется на всю цепочку родителя. Когда я ставлю if($depth == 0){, то он применяется только к первой дочке родителя, а ко второй не применяется((.

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Тема «Меню большое» закрыта для новых ответов.