Бывают случаи, когда необходимо вывести список категорий в две колонки. Это можно сделать с помощью приема который позволяет заменить традиционный 1-колоночный вывод рубрик в блоге на отображение рубрик в 2 колонки.
Для этого нам нужно найти в файле Вашей темы (чаще всего в sidebar.php) стандартный код вывода рубрик, обычно это:
<?php wp_list_categories() ?>
И заменить его на:
<?php $cats = explode("<br />",wp_list_categories('title_li=&echo=0&depth=1&style=none')); $cat_n = count($cats) - 1; for ($i=0;$i< $cat_n;$i++): if ($i<$cat_n/2): $cat_left = $cat_left.'<li>'.$cats[$i].'</li>'; elseif ($i>=$cat_n/2): $cat_right = $cat_right.'<li>'.$cats[$i].'</li>'; endif; endfor; ?> <ul class="left"><?php echo $cat_left;?></ul> <ul class="right"><?php echo $cat_right;?></ul>
Вот и все! Теперь список Ваших категорий выведется в два столбца.
Также приведу пример с выводом рубрик в четыре колонки:
<?php $cats = explode("<br />",wp_list_categories('title_li=&echo=0&depth=1&style=none')); $cat_n = count($cats) - 1; for ($i=0;$i<$cat_n;$i++): if ($i<$cat_n/4): $cat_one = $cat_one.'<li>'.$cats[$i].'</li>'; elseif ($i>=$cat_n/4 && $i<($cat_n/4)*2): $cat_two = $cat_two.'<li>'.$cats[$i].'</li>'; elseif ($i>=($cat_n/4)*2 && $i<($cat_n/4)*3): $cat_three = $cat_three.'<li>'.$cats[$i].'</li>'; elseif ($i>=($cat_n/4)*3): $cat_four = $cat_four.'<li>'.$cats[$i].'</li>'; endif; endfor; ?> <ul class="clientsCol"><?php echo $cat_one;?></ul> <ul class="clientsCol"><?php echo $cat_two;?></ul> <ul class="clientsCol"><?php echo $cat_three;?></ul> <ul class="clientsCol"><?php echo $cat_four;?></ul>
Дальше уже наверное будет понятно и Вы сможете сами переделать код под три и больше колонок. Если нет, спрашивайте в комментариях!
действительно, интересное решение. давно хотел сделать вывод списка в несколько колонок. нужно будет попробовать.....
У вас ошибка в первом примере, тег li не закрыт
Deimos, да применил. Я к вам попал как раз по запросу с яндекса, очень интересовала эта фишка. Я поставил на один из сайтов шаблон, у которого широкий сайдбар внутри поделен на 2 колонки, каждая заполняется соотвествующим инклудом. А мне не нужно ничего кроме рубрик. Вот и хотел убрать инклуды и создать 2 колонки рубрик. Перерыл все доки, как запросом выдрать список категорий, но так и не нашел. О вашем решении даже и не подумал, что можно просто распарсить результат работы апи. Спасибо вам большое, очень помогли.
Да, решение интересное =) Особенно подит, когда сайдбар одноколоночный и широкий. Пустует место возле списка рубрик.
эм.. а как к этому стили прикрутить? а то у меня правая колонка на левую прыгает =\
Добрый день! У меня что-то не получилось. Может поможете, плиз? Версия WP 3.0.1. Шаблон - http://www.wpbot.ru/?p=494. Вероятно, не работает из-за использования плагина MyCategoryOrder.
не работает вообще никак. как отображалось в одну колонку, так и дальше....
А как можно увеличить высоту поста при поиске по рубрикам? Просто когда я нажимаю на рубрику, у меня появляется список, но сами посты очень узкие и поэтому определить, что это за пост можно только по заголовкам.
Спасибо! Сначала не ставилась, потом в стиль добавил:
ul.left {
float:left;
width: 42%;
}
ul.right {
float:right;
width: 42%;
И все стало норм. Только сейчас думаю над тем, как поставить возле каждой рубрики кол-во постов?
Проще сделать так:
добавить в functions.php
register_sidebar(array('name'=>'sidebar_categories','id'=>'sidebar_categories', 'before_widget'=>'','after_widget'=>''));
В sidebar.php
dynamic_sidebar('sidebar_categories');
в style.css
.categories li{
width:50%;
float: left;
}
И все это заполнить виджетом.
Извинияюсь,
register_sidebar(array('name'=>'sidebar_categories','id'=>'sidebar_categories', 'before_widget'=>'<div class="categories">','after_widget'=>'</div>'));
Интересует отображение рубрик в 3 колонки, можно код?
Ильяс, спасибо, напомнил про возможность вывода нового виджета.
Сделал по твоей технологии.
Ждем этой приколюшки в твоем новом шаблоне - пусть он станет еще лучше 😉