Satico
О боги, меня поняли))) О чудо!
Да, все абсолютно верно! Точнее не бывает!
SeVlad
java вообще никаким боком к ВП и php. (вот JavaScript=js, другое дело)
Учитывая выше изложенное я всё же ещё раз рекомендую — забыть про всякие мутные фрейморки (да и вообще любые) и начать с азов, перечисленных мной выше.
Я несколько лет гордо избегал фремворки, и сделал много сайтов сам с нуля, фреймворками пользуюсь всего 3 месяца. Считаю что я «заслужил» быстрей делать сайты)
Между просим uikit вовсе не мутный фреймворк, просто чуть менее известный.
Ничего не вижу постыдного изучать такие фтуки)
А за совет по JavaScript=js спасибо! Начну с него изучать.
и сделал много сайтов сам с нуля,
Не зная php и даже не отличая java от js?.. однако2. 🙂
фреймворками пользуюсь всего 3 месяца. Считаю что я «заслужил» быстрей делать сайты)
Быстрее (да и безопаснее) делать как раз без ненужных навесков. Тем более не обладая необходимыми знаниям и опытом.
Тема из оф каталога + дочка — наше всё 🙂
Между просим uikit вовсе не мутный фреймворк, просто чуть менее известный.
С популярным фреймворками получить помощь весьма низка, а уж с «чуть менее известными» и вовсе стремиться к нулю.
mazletop,
О боги, меня поняли))) О чудо!
Да, все абсолютно верно! Точнее не бывает!
Правильно заданный вопрос — это уже половина успеха 🙂 Сейчас приведу в порядок код и выложу. Будет добавлять и обертку и 2 класса в во вложенный ul.
mazletop,
Откатите всё назад до исходного состояния (до регистрации меню). Все предыдущие созданные вами «волкеры» удалите. Добавьте в файл функций:
/* Кастомизация выпадающего меню с классами Uikit */
class Satico_Dropdown_Walker_Nav_Menu extends Walker_Nav_Menu {
function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat( "\t", $depth );
$output .= "\n$indent<div class=\"uk-navbar-dropdown\"><ul class=\"uk-nav uk-navbar-dropdown-nav sub-menu\">\n";
}
function end_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat( "\t", $depth );
$output .= "$indent</ul></div>\n";
}
}
В файле header при вызове функции wp_nav_menu в конце добавляете новую строку (новый элемент массива):
'theme_location' => 'uk-navbar-nav',
'depth' => 0,
'menu_class' => 'uk-navbar-nav',
'container' => false, // эта строка должна заканчиваться запятой!
'walker' => new Satico_Dropdown_Walker_Nav_Menu()
На выходе должно получится:
http://prntscr.com/f2u4af
http://prnt.sc/f2u6g7
Пробуйте.
-
Ответ изменён 8 лет, 1 месяц назад пользователем
Satico.
Satico
Да, всё получилось, всё работает! Даже не верится что проблема решена, ура!
—
Подскажите пожалуйста ещё один небольшой момент, есть ещё иконочка там подсказывающая что меню выпадающая, вот скрин: http://prntscr.com/f2v3ji
Вот так это выглядит <a href="#" uk-icon="icon: chevron-down">Блог</a>
Она находится над <div class="uk-navbar-dropdown">
Попробовал сделать так:
/* Кастомизация выпадающего меню с классами Uikit */
class Satico_Dropdown_Walker_Nav_Menu extends Walker_Nav_Menu {
function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat( "\t", $depth );
$output .= "\n$indent<a uk-icon=\"icon: chevron-down\"><div class=\"uk-navbar-dropdown\"><ul class=\"uk-nav uk-navbar-dropdown-nav sub-menu\">\n";
}
function end_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat( "\t", $depth );
$output .= "$indent</ul></div>\n";
}
}
Вот попробовал вставить по аналогии:
<a uk-icon=\"icon: chevron-down\">
Иконка появилась, по так же появился лишний
<a href="#">Пунк меню</a>
<a uk-icon="icon: chevron-down">
<div class="uk-navbar-dropdown">...
Как то возможно грамотно решить этот вопрос?
—
Забыл, там же есть ещё
<li class="uk-active"><a href="#">123</a></li>
А как сделать чтобы у активного пункта меню подствечивалось классом uk-active
что он активный?
-
Ответ изменён 8 лет, 1 месяц назад пользователем
mazletop.
-
Ответ изменён 8 лет, 1 месяц назад пользователем
mazletop.
-
Ответ изменён 8 лет, 1 месяц назад пользователем
mazletop.
SeVlad
Спасибо за советы, буду стараться быстрей всё осваивать.
Вот попробовал вставить по аналогии:
Верхний код править не нужно:)
Добавьте этот код в файл функций (сразу после волкера), чтобы всё в одном месте было.
// Добавляем атрибут uk-icon к элементу меню (тег a), который содержит подменю
add_filter( 'nav_menu_link_attributes', 'add_class_to_items_link', 10, 3 );
function add_class_to_items_link( $atts, $item, $args ) {
$hasChildren = ( in_array('menu-item-has-children', $item->classes) );
if ($hasChildren) {
$atts['uk-icon'] = 'icon: chevron-down';
}
return $atts;
}
// Добавляем класс uk-active к активному элементу меню (тег li)
add_filter( 'nav_menu_css_class' , 'special_nav_class' , 10 , 2 );
function special_nav_class ( $classes, $item ) {
if ( in_array('current-page-ancestor', $classes) || in_array('current-menu-item', $classes) ) {
$classes[] = 'uk-active ';
}
return $classes;
}
Должно так получится:
http://prntscr.com/f2vsn9
Проверьте, у меня работает.
-
Ответ изменён 8 лет, 1 месяц назад пользователем
Satico.
Satico
Всё работает как нужно, спасибо огромное… У меня слов нету.
От радости благим матом ругаться хочется)))