Как подсчитать пункты меню навигации?

Я создаю пользовательский ходок для моего навигационного меню. Цель состоит в том, чтобы разбить меню на столбцы следующим образом:

введите описание изображения здесь>> </p>

<p> Я могу легко определить, где я нахожусь в списке, посмотрев <code>---- +: = 0 =: + ----</code>. Я не знаю, сколько элементов находится в общем меню. </p>

<p> Как я могу понять это изнутри ходока? </p>

<p> <strong> Обновлено: </STRONG> </p>

<p> Я понимаю, что есть несколько других способов создания столбцов. Однако у всех есть свои недостатки: </p>

<ol>
<li> <p> <strong> Поплавки CSS. </strong> Как показано ниже в @sagive, это может быть достигнуто путем размещения всех элементов списка. Проблема в том, что список изменяет порядок. Вместо того, чтобы спускать первый столбец, а затем переходить ко второму, список будет проходить через все четыре столбца в первой строке, а затем по всем четырем столбцам во второй строке. Это нарушает порядок. </p> </li>
<li> <p> <strong> Колонки CSS. </strong> Это  почти  идеальное решение. Это даст мне именно то, что я хочу - за исключением того, что IE этого не делает. Даже в IE 9. Это делает его непригодным для основного веб-сайта. </p> </li>
<li> <p> <strong> jQuery. </strong> С помощью некоторого javascript на стороне клиента я мог взломать список и сделать его макетом так, как я хочу. Однако это грязно, и он ломается для людей, у которых отключен js. </p> </li>
<li> <p> <strong> PHP. </strong> Это метод, о котором я спрашиваю в этом вопросе. Я разбиваю список на четыре отдельных неупорядоченных списка, выгружаю каждый из html, а затем использую CSS для размещения списков, чтобы сделать четыре разных столбца. Это может быть сложно сделать в PHP, но результат выглядит одинаково для всех браузеров. Это делает его лучшим вариантом, я считаю. </p> </li>
</ol>
<p> <strong> Решение: </STRONG> </p>

<p> Для тех, кто может следовать, вот код, который я, наконец, использовал, чтобы получить ответ: </p>

<pre><code>---- +: = 1 = + ----</code></pre></body></html>

6 голосов | спросил Axeva 3 SatEurope/Moscow2011-12-03T02:57:31+04:00Europe/Moscow12bEurope/MoscowSat, 03 Dec 2011 02:57:31 +0400 2011, 02:57:31

4 ответа


10

Вызвать wp_get_nav_menu_object, чтобы получить объект меню, который даст вам количество элементов для этого меню.

Пример:

// Get menu object
$my_menu = wp_get_nav_menu_object( 'your-menu-name-or-slug' );

// Echo count of items in menu
echo $my_menu->count;

Надеюсь, что это поможет.

ответил t31os 3 SatEurope/Moscow2011-12-03T18:34:04+04:00Europe/Moscow12bEurope/MoscowSat, 03 Dec 2011 18:34:04 +0400 2011, 18:34:04
0

Я знаю, что вы уже нашли решение и не знаете, что именно точно , что вы ищете, но я недавно написал плагин для использования на сайте клиента и создает классы для каждого меню, подменю и пункта меню. Это называется Расширенные навигационные меню. Если вы в конечном итоге используете его, не стесняйтесь отправлять мне запросы функций.

ответил Caio Costa 3 SatEurope/Moscow2011-12-03T20:31:50+04:00Europe/Moscow12bEurope/MoscowSat, 03 Dec 2011 20:31:50 +0400 2011, 20:31:50
0

Разве вы не думаете (и жаль, если я груб), что его гораздо проще и проще просто плавать: слева; все «li» и помещаем их в div с тем, что структура backgroung как изображение?

Пример:

<style type="text/css">
.fourPartMenu {

    border: 1px solid #444;
    width: 800px;
    padding: 10px 15px;
}

.fourPartMenu ul {
    list-style: circle; // replace with your img
    padding: 0px;
    margin: 0px;
}

.fourPartMenu ul li {
    float: left;
    width: 190px;
}

</style>

<div class="fourPartMenu">
    <ul>
        <li><a href="#">One</a></li>
        <li><a href="#">Two</a></li>
        <li><a href="#">Three</a></li>
        <li><a href="#">Four</a></li>
        <li><a href="#">Five</a></li>
        <li><a href="#">Six</a></li>
        <li><a href="#">Seven</a></li>
        <li><a href="#">Eight</a></li>
        <li><a href="#">Nine</a></li>
        <li><a href="#">Ten</a></li>
    </ul>
</div>

Я думаю, что это было бы намного проще реализовать, но .. я знаю, что не совсем то, что может последовать за вашим жестким свежим взглядом:)

ответил Sagive SEO 3 SatEurope/Moscow2011-12-03T03:25:12+04:00Europe/Moscow12bEurope/MoscowSat, 03 Dec 2011 03:25:12 +0400 2011, 03:25:12
0

Почему бы просто не использовать функцию array_chunk () ?

Предполагая, что вы построили массив готовых тегов <li>, ваш код для их разбиения и отображения может выглядеть следующим образом:

$columns = array_chunk( $myArray, 4 );
foreach ( $columns as $column ) {
    echo '<li>' . $column . '</ul>';
}
ответил M. Sage 23 Jpm1000000pmFri, 23 Jan 2015 22:17:05 +030015 2015, 22:17:05

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132