Создание меню (списка рубрик) с активным пунктом меню.
На одной из страниц возникла необходимость вывести список рубрик (таксономий), которые оформлены в виде меню
$terms_personal = get_terms("personal");
$count = count($terms_personal);
if($count > 0){
echo '<ul id="personal">';
foreach ($terms_personal as $term_workman) {
echo "<li>" . $term_workman->name . "</li>";
}
echo '</ul>';
}
Таким образом получаем список рубрик
<ul id="personal"> <li>Администраторы</li> <li>Консультанты</li> <li>и т.д.</li> </ul>
Однако есть необходимость чтобы первый пункт меню li содержал в себе class=»active», который в свою очередь исчезал и появлялся при переходе на другой пункт меню.
(вариант при запуске страницы)
<ul id="personal"> <li class="active">Администраторы</li> <li>Консультанты</li> <li>и т.д.</li> </ul>
(вариант при переходе на вкладку «Консультанты»)
<ul id="personal"> <li>Администраторы</li> <li class="active">Консультанты</li> <li>и т.д.</li> </ul>
Не проверял на практике, чисто теоретический код накидал:
$post_terms = get_the_terms( $post->ID, 'personal' ); $terms_personal = get_terms("personal"); if(count($terms_personal) > 0){ echo '<ul id="personal">'; foreach ($terms_personal as $term_workman) { $class = ( isset($post_terms[0]) && $post_terms[0]->term_id == $term_workman->term_id ) ? "item active" : "item"; echo "<li class='{$class}'>" . $term_workman->name . "</li>"; } echo '</ul>'; }Списибо за код. Попробовал его использовать. При загрузке страницы у html-кода появляется class='item', который берется из переменной $class. Однако класс "active" так и не появился у первой строки меню после загрузки страницы.
Когда вы более подробно расскажите, как построено ваше веб-приложение, тогда можно будет рассуждать, как сделать правильнее.
« Однако есть необходимость чтобы первый пункт меню li содержал в себе class=»active», который в свою очередь исчезал и появлялся при переходе на другой пункт меню. »
Что это значит? Просто мышкой водить по пунктам? При переходе в нужный тёрм? Полную логику опишите работы с таким меню.
Ну я через WordPress пытаюсь сделать вывод постов как в этом jQuery-плагине https://vestride.github.io/Shuffle/
Собственно я у себя на "Денвере" уже практически все сделал. Подключил скрипт, настроил стили. Настроил вывод картинок через произвольные типы записей и вывел меню.
То-есть по сути все-работает. Но на старте выводятся абсолютно все данные и выводятся они немного криво из-за того, что у первой строки (хотя необязательно какой строки) отсутствует класс "active". Однако если нажать на любую кнопку, то класс "active" появляется у выбранного пункта меню, но это уже работа скрипта.
Если взять твой код и чуток доработать, то выйдет вот так:
$terms_personal = get_terms("personal"); $cnt = 1; if(count($terms_personal) > 0){ echo '<ul id="personal">'; foreach ($terms_personal as $term_workman) { if( $cnt == 1) echo "<li class='active'>" . $term_workman->name . "</li>"; else echo "<li>" . $term_workman->name . "</li>"; ++$cnt; } echo '</ul>'; }