Всем привет! Сегодня на seo-mayak.com мы научимся создавать шаблоны для страниц категорий или рубрик, как угодно, на популярной CMS WordPress.
Тема довольно интересная и думаю многим этот урок придется по душе, так как львиная доля сообщества веб-мастеров понятия не имеет о том, что разработчики WordPress предусмотрели впечатляющую систему шаблонов, с помощью которой можно изменять структуру страниц с категориями до неузнаваемости.
О чем это я? Всем известно, что WordPress формирует страницы категорий в виде анонсов записей, где выводятся 5 или более анонсов, в зависимости от настроек.
Для моего блога, такое положение вещей вполне приемлемо, что нельзя сказать про сайты с кулинарной тематикой или авто сайты, интернет магазины и т.д, где зачастую требуется сделать из категорий каталоги.
Вот я и решил сделать из данной статьи наглядное пособие по созданию иллюстрированных каталогов из страниц с категориями.
Кроме того я обещал одному моему постоянному читателю помочь с оформлением рубрик на его сайте с кулинарной тематикой, хотя я уверен, что данный материал будет полезен для многих веб-мастеров. Поехали!
Система шаблонов для категорий
Не так давно вышла моя статья, где я описал два способа создания шаблонов страниц и один из способов основывался на иерархии файлов. Что это такое?
В WordPress заложена логика, исходя из которой формируется «семейка» файлов, где каждый член семьи знает свое место. Помните детскую сказку про репку — «Дедка за репку, бабка за дедку, внучка за бабку» и т.д.
Примерно по такой же схеме работает иерархическая система шаблонов WordPress, с той лишь разницей, что если нет «дедки», то его заменит «бабка», а если нет «дедки» и «бабки», то отдуваться придется «внучке».
Иерархия файлов-шаблонов для категорий (рубрик) выглядит следующим образом:
category-slug.php -> category-id.php -> category.php -> archive.php -> index.php
Теперь давайте разберемся, что за цепочку файлов я здесь привел.
category-slug.php — данный файл имеет наивысший приоритет в иерархической системе шаблонов категорий, где sung — это условное название рубрики, вернее ее ярлык.
Давайте рассмотрим такой пример. Допустим рубрика называется «Мясные блюда». Для того, чтобы узнать какой у нее ярлык, надо пройти: адимн-панель -> Рубрики и кликнуть по названию нужной категории. На открывшейся странице мы увидим поле «Ярлык»:
Если мы создадим файл и таким названием:
category-myasnye-blyuda.php
И поместим его в корень темы, туда, где находятся файлы header.php, single.php, sidebar.php и т.д, то именно к нему в первую очередь обратится WordPress при выводе страницы с рубрикой «Мясные блюда».
category-id.php — файл, занимающий второе место в иерархической цепочке, в название которого входит ID страницы.
Многое я уже описал статье про шаблоны страниц, ссылку на которую я приводил выше, поэтому не буду повторятся.
category.php — файл, занимающий третье место в иерархической системе приоритетов. Файл с таким названием довольно часто используется разработчиками шаблонов WordPress. Именно на него возлагают функцию вывода всех страниц с категориями.
archive.php — данный файл занимает четвертое место в иерархии файлов-шаблонов и также довольно часто используется в темах WordPress. Но моем блоге именно archive.php отвечает за вывод рубрик.
index.php — файл, замыкающий на себе все иерархический цепочки файлов-шаблонов, будь-то шаблоны для главной или статической страниц, страниц категорий и т.д. И это понятно, ведь самые простейшие шаблоны могут состоять всего из двух файлов: index.php и файла стилей style.css.
Итак, с иерархией шаблонов категорий мы немного разобрались, надеюсь объяснил понятно. Теперь, как и обещал, я расскажу, как наполнить файл-шаблон, чтобы из рубрики получился иллюстрированный каталог.
Как сделать из категории иллюстрированный каталог
Создаем файл category-sung.php или category-id.php, кому как нравится, я для примера создам на своем кулинарном блоге файл category-salaty.php. Далее наполняем файл тегами шаблона, такими как:
<?php get_header(); ?> <?php get_sidebar(); ?> <?php get_footer(); ?>
Следующим шагом вставляем индивидуальные стили, отвечающие за дизайн страницы, например:
<?php get_header(); ?> <div class="span-24" id="contentwrap"> <div class="span-16"> <div id="content"> <!--Здесь будет код вывода категории--> </div> </div> <?php get_sidebars(); ?> </div> <?php get_footer(); ?>
У вас наверняка другие кассы и идентификаторы. Посмотрите как прописаны стили и теги в файлах page.php, single.php и т.д. В общем придется поэкспериментировать, чтобы достичь корректного отображения страницы. Все эксперименты советую проводить на Денвере.
На разных сайтах по разному организована структура категорий и многие вебмастера используют дочерние категории, так называемые, подрубрики. Дело в том, что коды вывода постов из рубрик и подрубрик отличаются. Давайте разберем каждую ситуацию в отдельности.
Шаблон для категории без подкатегорий
Итак, если у категории нет дочерних категорий, то код шаблона будет выглядеть так:
<!--Выводим шапку--> <?php get_header(); ?> <!--Индивидуальные стили--> <div class="span-24" id="contentwrap"> <div class="span-16"> <div id="content"> <!--Заголовок рубрики--> <h2><?php single_cat_title(); ?></h2> <!--Код вывода заголовков постов из категории с миниатюрами--> <div class="katalog"> <ul><?php query_posts('category__in=625&showposts=100'); ?> <?php while (have_posts()) : the_post(); ?> <li> <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(array(80,70)); ?></a> <a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a><br/> </li> <?php endwhile; ?> </ul> </div> <!--Конец кода вывода постов из категории--> </div> </div> <!--Тег вывода сайдбара--> <?php get_sidebars(); ?> </div> <!--Конец индивидуальных стилей--> <!--Тег вывода подвала--> <?php get_footer(); ?>
Хочу обратить Ваше внимание на несколько строчек:
Строчка №10.
<div class="katalog">
На этой строчки прописан css класс, для которого в файле style css надо прописать стили. Данный класс распространяется на все заголовки постов и миниатюры на странице.
Строчка №11.
<ul><?php query_posts('category__in=625&showposts=100'); ?>
Надо сказать, что вывод списка постов с определенной категории в данном коде организован с помощью функции query_posts(), которая может принимать множество параметров, что позволяет настроить довольно гибкую сортировку.
В будущем обязательно опишу возможности данной функции, как всегда, во всех подробностях, но я не могу сказать точно, когда выйдет статья, так что следите за обновлениями блога.
Сейчас же я хочу отметить два момента:
1. category__in=625
Здесь надо указать ID категории из которой будут выводится информация category__in=625, где 625 — ID категории. Также можно вывести посты из нескольких рубрик, для этого надо прописать ID соответствующих категорий через запятую — category__in=625,344,555.
2. showposts=100
Здесь задается количество постов для вывода на странице, где 100 — количество постов. Если не прописывать данное значение, то функция query_posts() возьмет его из настоек WordPress, но потом не надо удивляться, что на странице будет отображаться всего 5 — 10 постов.
Строчка №14.
<a href="<?php the_permalink() ?>"><?php the_post_thumbnail(array(120,100)); ?></a>
Данная строчка отвечает за вывод миниатюры, которая будет являться ссылкой на пост. Если Вы не хотите чтобы миниатюра была ссылкой, то уберите конструкцию и оставьте только функцию:
<?php the_post_thumbnail(array(120,100)); ?>
Но обратить Ваше внимания я хотел совсем на другое. В функции the_post_thumbnail() в качестве параметра заданы размеры миниатюры —(array(120,100)), которые можно изменить на свое усмотрение.
Закидываем созданный файл в корень темы и теперь в файле style.css нам надо прописать стили для класса .katalog. Рассмотрим два варианта:
Вариант№1. Если стоит задача вывести миниатюры в несколько рядов и чтобы при этом заголовки располагались под картинками, в виде ссылок, то стили должны выглядеть так:
.katalog { /* общие стили для блока */ width: 99%; /* общая ширина блока */ margin: 0 auto; /* внешние отступы сверху и снизу, а также выравнивание по центру */ } .katalog li{ /* стили для элементов списка */ float: left; /* миниатюры располагаются слева от соседней */ height: 150px; /* высота ячейки с миниатюрой и заголовком */ width: 120px; /* ширина ячейки */ margin: 5px 10px 0 0; /* внешние отступы сверху и справа от ячейки */ overflow:hidden; /* скрываем все что не поместилось в ячейку */ } .katalog img{ /* здесь можно задать отдельные стили для миниатюр */ } .katalog a{ /* здесь можно задать отдельные стили для ссылок */ }
Теперь если я открою рубрику «Салаты», то увижу следующее:
Очень даже не плохо! Но можно сделать и по-другоиму.
Вариант №2. Немного подправим стили и миниатюры расположатся столбиков в два ряда:
.katalog li{ float:left; height:70px; margin-right:20px; margin-top:1px; overflow:hidden; width:250px; list-style-type: none; } .katalog { width: 700px; margin: 0 auto; } .katalog ul{ margin-bottom: 10px; padding-left: 20px !important; display: inline-block; } .katalog a{ font-size:14px; color:#0000CC; text-decoration: none; } .katalog img{ float: left; border-radius: 10px; border: 2px solid #ccc; margin-right: 10px; } .katalog a:hover{ color:#FF2B2B; }
Вуаля:
Здесь я не стал комментировать предназначение тех или иных селекторов и их значений. Если что не понятно, спрашивайте в комментариях. Идем дальше.
Шаблон для категорий с дочерними категориями
Сразу скажу, что из родительской категории мы возьмем только общий заголовок, иначе получатся повторения ссылок и миниатюр.
Для примера я возьму категорию со своего блога, которая называется «Создание блога». По схеме, описанной выше, создам файл category-sozdanie-bloga.php и наполню его следующим кодом:
<!--Выводим шапку--> <?php get_header(); ?> <!--Индивидуальные стили--> <div class="span-24" id="contentwrap"> <div class="span-16"> <div id="content"> <!--Заголовок рубрики--> <h2><?php single_cat_title(); ?></h2> <!--Код вывода заголовков постов с миниатюрами--> <div class="katalog"> <?php $cat_args=array( 'child_of' => 10, 'orderby' => 'name', 'order' => 'ASC' ); $categories=get_categories($cat_args); foreach($categories as $category) { $args=array( 'showposts' => -1, 'category__in' => array($category->term_id), 'caller_get_posts'=>1 ); $posts=get_posts($args); if ($posts) { echo '<h2>'.$category->name.'</h2> '; foreach($posts as $post) { setup_postdata($post); ?> <ul> <li> <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(array(80,70)); ?></a> <a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a><br/> </li> </ul> <?php } } } ?> </div> <!--Конец кода вывода постов из категории--> </div> </div> <!--Тег вывода сайдбара--> <?php get_sidebars(); ?> </div> <!--Конец индивидуальных стилей--> <!--Тег вывода подвала--> <?php get_footer(); ?>
Обратите внимание на строчку №13:
'child_of' => 10,
Здесь надо указать ID родительской категории.
Стили я возьму из второго варианта, немного подправлю некоторые значения и вот что получится:
По-моему не плохо! Может стоит заняться и переделать все страницы с рубриками. Как Вы считаете?
Как прикрутить постраничную навигацию к шаблону категории
После многочисленных просьб читателей, решил дополнить статью и рассказать, как прикрутить постраничную навигацию к конкретному шаблону категории.
Вариант №1. Шаблон для категории без подкатегорий.
<!--Выводим шапку--> <?php get_header(); ?> <!--Индивидуальные стили--> <div class="span-24" id="contentwrap"> <div class="span-16"> <div id="content"> <!--Заголовок рубрики--> <h2><?php single_cat_title(); ?></h2> <!--Код вывода заголовков постов из категории с миниатюрами--> <div class="katalog"> <ul><?php if (have_posts()) : while (have_posts()) : the_post(); ?> <li> <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(array(80,70)); ?></a> <a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a><br/> </li> <?php endwhile; else: ?> <h3><?php _e('К сожалению, по Вашему запросу ничего не найдено.'); ?></h3> <?php endif; ?> </ul> <!--КОД ВЫВОДА ПОСТРАНИЧНОЙ НАВИГАЦИИ--> </div> <!--Конец кода вывода постов из категории--> </div> </div> <!--Тег вывода сайдбара--> <?php get_sidebars(); ?> </div> <!--Конец индивидуальных стилей--> <!--Тег вывода подвала--> <?php get_footer(); ?>
Код вывода постраничной навигации должен вставляется в помеченную мной строчку №20.
Я изменил цикл вывода статей на стандартный цикл WordPress и теперь все параметры настроек должны прописываться в отдельной функции.
Например, изменим заданное в админке количество анонсов на желаемое количество для конкретной категории.
Для этого в файл functuons.php вставляем такую функцию:
add_action( 'pre_get_posts', 'mayak_category_announcement' ); function mayak_category_announcement( $query ) { if ($query->is_main_query() && is_category(7)) $query->set( 'posts_per_page', 5 ); }
В строчке №3, в условном теге is_category(), надо указать ID категории, на которое будет распространяться данное событие. Если ID не указать, то настройка будет применяться ко всем категориям.
В строчке №4, в качестве значения аргумента posts_per_page ставим желаемое количество отображаемых анонсов.
Теперь все должно работать. На этом все!
Кстати, кому интересно понять анатомию создания категорий на WordPress, прошу сюда.
Как выводить рубрики WordPress — все аргументы функции wp_list_categories().
В следующей статье я расскажу, как делать шаблоны для записей, так что следите за обновлениями блога.
До встречи!
С уважением, Виталий Кириллов
Статьи по теме:
Редактор для категорий (рубрик), меток и произвольных таксономий
Title, description, keywords и h1 для категорий (рубрик) WordPress
Картинки для категорий (рубрик) — изображения WordPress
Очень интересно! Спасибо, Виталий! Может, и стоит заняться)
Рад видеть Вас снова на блоге Наталья)
Очень хорошая статья, Виталий! Впрочем, как всегда. Надо заняться и попробовать переделать шаблоны рубрик. А то у меня страницы с рубриками открываются… ну очень неприглядными и неинтересными! Вот только время…
Спасибо Александр!
Cпасибо, вышло вполне красиво
Доброй ночи. спасибо за статью, у меня такой момент, сделала на одну подкатегорию салаті все получилось, а такое же хотела с другой подкатегорией, ид поменяла, закинула фйл но ничего не произошло. Хочу сделать вот как с салатом все категории по отдельности. Почему не получается не пойму.
Здравствуйте Юлия! Шаблон можно сделать для любой категории или подкатегории. У вас скорее всего где-то ошибка, ищите!
да вроде нету, шаблон тот же что и на те же салаты что получились, просто поменяла шапку и ид категории, но почему то не идет(
вот так, не могу понять почему, я в этом плохо разбираюсь,.только учусь, спасибо
Юлия воспользуйтесь преобразователем!
<!—Салаты—>
<?php get_header(); ?>
<div class="span-24" id="contentwrap">
<div class="span-16">
<div id="content">
<!—Салаты—>
<h2><?php single_cat_title(); ?></h2>
<div class="katalog1">
<ul><?php query_posts('category__in=87&showposts=50'); ?>
<?php while (have_posts()) : the_post(); ?>
<li>
<a href="<?php the_permalink() ?>"><?php the_post_thumbnail(array(80,70)); ?></a>
<a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a><br/>
</li>
<?php endwhile; ?>
</ul>
</div>
</div>
</div>
<?php graphene_posts_nav(); ?>
<?php get_footer(); ?>
и
<!—Закуски—>
<?php get_header(); ?>
<div class="span-24" id="contentwrap">
<div class="span-16">
<div id="content">
<!—Закуски—>
<h2><?php single_cat_title(); ?></h2>
<div class="katalog1">
<ul><?php query_posts('category__in=88&showposts=50'); ?>
<?php while (have_posts()) : the_post(); ?>
<li>
<a href="<?php the_permalink() ?>"><?php the_post_thumbnail(array(80,70)); ?></a>
<a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a><br/>
</li>
<?php endwhile; ?>
</ul>
</div>
</div>
</div>
<?php graphene_posts_nav(); ?>
<?php get_footer(); ?>
Юлия, кроме ID категории надо еще название файла изменить.
я изменяю конечно, скажите а вы вообще помогаете платно с сайтами? если да как с вами связаться?спасибб
Юлия, просто напишие через форму обратной связи.
Потрясающе! Вряд ли у меня хватит выдержки переделывать сайт, но это было бы здорово! Виталий, я Вам говорила, что Ваш блог — клондайк? Что же раньше не довелось повстречать его? Хотя всему свое время. Спасибо!
И вам спасибо Надежда за теплые слова!
Виталий, так материал для меня очень актуальный. На сайте много товаров, много категорий. Такого наворотила, чтобы как-то классифицировать, и даже руки опустила. Может, все-таки попробую на полигоне своем поковыряться.
Здравствуйте! Очень полезная статейка! Но у меня никак не получается организовать как у вас во втором варианте. каталог в два столбика. И сайт бар улетает и становиться справа после записей!
Добрый день очень полезная информация! а нет простенького плагина который организовал бы вывод статей на страницу каталога?
Здравствуйте! Я таких не знаю.
Немного не в тему, но не подскажете, как можно в категориях выводить заголовки анонсов статей в h2. Просто на главной и в самих записях все нормально выводится. Но в категория идет сплошным H1. Не пойму откуда он берется. Файла category.php у меня нет. Есть arhive.php. Нашел там такой код:
if (is_category()) {
echo '<h1>' . single_cat_title('', false) . '</h1>';
echo category_description();
} elseif (is_tag()) {
echo '<h1>' . single_tag_title('', false) . '</h1>';
} elseif (is_day()) {
Там название выводится в H1. Это нормально. Но как сделать заголовки анонсов с h1 в h2? Там походу какой-то код нужно прописать.
Здравствуйте. Вы мне не поможете? У меня рядом с рубриками вместо точки или стрелочки появились коды и не знаю как и где их убрать. Помогите пожалуйста!
Вопрос снят, уже разобралась)
Статья очень интересная, но чем больше читаю и узнаю про WordPress тем больше хочется вернуться к написанию сайтов на простом PHP без всяких извращений.
Подскажите, как закрыть от поиска одну из рубрик, заранее спасибо за ответ.
Андрей, вы имеете в виду закрыть рубрику от индексации, чтобы она не попала в поисковую выдачу или вы хотите исключить определенную рубрику из поиска сайта. Точнее пожалуйста, что значит закрыть от поиска?
Всех с новым годом.я бы хотел узнать ,у меня в рубриках исчезли цифры 1,2,3 переходы на следующие страницы,как мне их вернуть ?
Наконец-то дошли руки прикрутить постраничную навигацию. Код в конце статьи.
Ребят, спасибо большое. Очень долго искал такую информацию. Теперь наконец-то сделаю.
Виталий, спасибо за столь подробное описание очень нужных вещей. Пока пробую на тестовом блоге и столкнулся с такой непонятной для меня штукой.
Я специально задал параметр showposts небольшим, чтобы прикрутить постраничную навигацию без плагина.
Навигация отображается, но все её ссылки ведут на 404 страницу. В чем может быть проблема?
Дмитрий, ну наверняка проблема в самих ссылках, трудно сказать. Попробуйте сами разобраться, ну а если не получится, тогда мне придется разбирать ситуацию на своем локальном сервере.
Здравствуйте!
Хотел сделать шаблон для категории так как вы описали и столкнулся с такой проблемой:
за вывод категории у меня отвечает archive.php, я создаю файл category-xxx.php, но он не подхватывается вордпрессом, так как archive.php лежит не в корневой папке темы (как и другие файлы — single.php и подобные, которые я редактирую). Если я перемещаю category-xxx.php в корневую папку темы он подхватывается, но на сайте для этой категории — пустота.
Виталий, очень надеюсь на Вашу помощь! Спасибо.
Андрей, если файл подхватывается, значит проблема в содержании файла. Возможно расположение файла archive.php определено константой, но я не уверен. Причин может быть много.
Самый тупой и некчемный движок какой когда либо видел и автор статьи наглядно это продемонстрировал, для того чтобы вывести категории нужно квадратные колеса WordPress закруглить а они все равно получаются овальные и ни как на каталог не тянет,на php я бы все категории и под категории и статьи вывел одним файлом без всяких заморочек.
А здесь автор не написал откуда взялись превьюшки к рубликам ведь в WordPress нет привязки картинок к рубликам а нужно искать плагины которые тоже нужно править топором и рубанком чтобы на что то походило.А сколько запросов к базе дает WordPress? Когда название рублики в одной таблице описание в другой а картинка вообще у черта на куличках, могли бы хоть лишнее поле создать для картинки чтоб к рубликам привязать было легче и не изобретать велосипед.
Здравствуйте!
Прочитал Вашу статью, и тут же возникла мыль, сделать шаблон для категорий и подкатегорий в виде вертикального аккордиона. Тем более что на HTML в Ucoze, мне удалось его реализовать. Вся загвостка в том что, аккордионы не работают на одной странице больше одного, не знаю почему! Но методом тыка я на гуглил, который работает.
Пытался его вотнкнуть в WordPress? Ничего не получается, темболее я в этих делах полный профан, ковыряюсь чисто интуитивно.
Усли Вам интересно, то можете посмотреть как это работает тут: etaji.at.ua/load/1.
Надеюсь что мой коментарий, не останется без ответа.
Спасибо за внимание!
Здравствуйте! С аккордеонами я не связывался и мне не знакома их структура. Пришлите мне ссылочку, где вы нагуглили рабочий аккордеонами я попробую его установить на Денвер и разобраться. Но скорого ответа не обещаю.
Добрый день!
Думаю вывести в рубриках записи по рейтингу (буду использовать плагин WP-PostRatings, думаю, соображу как код плагина установить по аналогии с этой статьей).
Но вопрос в другом: как сделать так, чтоб на странице рубрики первые, например, ТРИ записи отражались с крупными миниатюрами, следующие — с 4-й по 10-ю — с миниатюрами помельче, а с 11-й по 100-ю — вообще без превьюшек?
Здравствуйте Владимир! В рамках комментария я не смогу ответить на Ваш вопрос. Такие вещи тянут на платную услугу.
Здравствуйте. Не подскажете как вывести на странице категории только ссылки на дочерние категории?
Здравствуйте Дмитрий! Как-то так:
Выводит только список всех сообщений…
Ах вон оно что) Сори, сразу не понял. Ну тогда как-то так:
Все как надо, спасибо!
Каталог из категории получился. Но список страниц пропал.
То есть у меня в рубрике 150 записей. Я указал showposts=50
в расчете, что будет три страницы. Но показывает только 50 последних записей, а остальных тупо нету и навигации постраничной нету(
(было 15 страниц по 10 записей и постраничная навигация, которую когда-то настраивал по инструкции с сайта Алаича)
Можно как то сохранить постраничную навигацию?
Димир, я выберу время и прикручу постраничную навигацию, потом отпишусь.
Здравствуйте, Виталий.
Еще не прикрутили, эту очень полезную вещь?
Здравствуйте Димир!
Если Вы устанавливали постраничную навигацию по моей статье, то сделать надо следующее.
После строчки:
Вставляем код вызова постраничной навигации:
И все дела!
Здравствуйте, Виталий.
Также как и у Вас постраничную навигацию для рубрик я делал по Алаичу.
В обычных рубриках вызов kama_pagenavi прекрасно работает.
А в индивидуальной рубрике, сделанной по этой, текущей, статье, kama_pagenavi работает не корректно.
Я в первом своем сообщении не точно описал проблему. Когда kama_pagenavi подключена — циферки страниц отображаются, но при клике на цифру «2» после её загрузки отображается все равно 1-я страница — первые 50 записей. Остальные же записи посмотреть невозможно. При клике на цифру «3» опять видим первую страницу категории. Хотя в командной строке отображается …/page/2 ну или /page/3
Димир, уточните какая структура у Вашего сайта, Вы используете подрубрики?
Речь идёт о дочерней рубрике.
Вот так у меня код выглядит:
<!—Код вывода заголовков постов из категории с миниатюрами—>
<div class="katalog">
<ul><?php query_posts('category__in=510&showposts=50'); ?> <!— seo-mayak.com/sozdanie-bloga/nastrojka-wordpress/shablony-dlya-kategorij-rubrik-wordpress.html —>
<?php while (have_posts()) : the_post(); ?>
<li>
<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><img src="<?php bloginfo('stylesheet_directory'); ?>/timthumb.php?src=<?php echo catch_that_image() ?>&h=90&w=90&q=100&zc=1" class="title_img" /></a>
<div class="katalog_vert"><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></div><br/>
</li>
<?php endwhile; ?>
</ul>
</div>
<!—Конец кода вывода постов из категории—>
Одну строчку пришлось изменить — поставил скрипт timthumb из своего шаблона, так как Ваш не показывал картинки.
Димир, я писал в статье, что за количество выводимых записей на одной странице отвечает параметр showposts. У вас в коде задано выводить 50 записей, так чему тут удивляться, что все 50 записей и отображаются. Задайте 10 записей и будет выводиться 10 и все дела. Можно вообще не прописывать данный параметр, тогда функция возьмет количество записей из настроек WordPress.
Я писал выше что у меня 150 записей в этой рубрике
но при этом сама постраничная навигация отображает активной ПЕРВУЮ страницу -как и есть по факту (в css у меня у активной страницы цвет фона другой).
Думаю некорректно указаны индивидуальные стили шаблона, поэтому и фон меняется.
Здравствуйте! Ситуация такая Категории обрамлены тегом ul (выводятся через виджет)
Подскажите пожалуйста как тегу ul задать свой класс? где что нужно прописать чтобы добавить класс для ul
Здравствуйте Алексей!
Вот как прописывается:
это то я знаю Это то что я хочу сделать только в коде шаблона нет ul тега Рубрики вставляю через виджет «Рубрики» и где этот тег с классом прописать не знаю
Как же я давно искал это решение! Наконец-то! Спасибо огромное что вы есть и есть этот пост!)) Придётся конечно повозиться (я искал плагин), но ничего, главное решение есть! Спасибо!
Здравствуйте! Что-то не совсем получилось — нет миниатюр, только названия. Подскажите что сделал не так? У меня стоит тема Graphene
Здравствуйте Рафаэль! А у Вас включена функция поддержки миниатюр?
А подскажите как на странице стандартной категории сделать вывод записей из одной категории а то ваш вариант рабочий только получилось что теперь на страницах категории выводятся последнии записи по очередно
было в index.php
<?php $options = get_option(‘mh_options’); ?>
<?php get_header(); ?>
<div class="wrapper clearfix">
<div class="main">
<section class="content <?php mh_content_class(); ?>">
<?php mh_before_page_content(); ?>
<?php if (category_description()) : ?>
<section class="cat-desc">
<?php echo category_description(); ?>
</section>
<?php endif; ?>
<?php mh_loop_content(); ?>
</section>
<?php get_sidebar(); ?>
</div>
<?php mh_second_sb(); ?>
</div>
<?php get_footer(); ?>
убрал
<?php mh_loop_content(); ?>
и стало
<?php $options = get_option(‘mh_options’); ?>
<?php get_header(); ?>
<div class="wrapper clearfix">
<div class="main">
<section class="content <?php mh_content_class(); ?>">
<?php mh_before_page_content(); ?>
<?php if (category_description()) : ?>
<section class="cat-desc">
<?php echo category_description(); ?>
</section>
<?php endif; ?>
<div class="katalog">
<ul><?php query_posts(‘showposts=100’); ?>
<?php while (have_posts()) : the_post(); ?>
<li>
<a href="<?php the_permalink() ?>"><?php the_post_thumbnail(array(80,70)); ?></a>
<a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a><br/>
</li>
<?php endwhile; ?>
</ul>
</div>
</section>
<?php get_sidebar(); ?>
</div>
<?php mh_second_sb(); ?>
</div>
<?php get_footer(); ?>
Чтобы записи выводились из определенной категории надо указать ID данной категории. В статье все описано, процитирую:
Надо сказать, что вывод списка постов с определенной категории в данном коде организован с помощью функции query_posts(), которая может принимать множество параметров, что позволяет настроить довольно гибкую сортировку.
Где 625 — id категории.
Здравствуйте.
Есть необходимость сделать общий шаблон для всех подрубрик одной рубрики.
-Автомобиль
—Ауди
—Запорожец
—Мерседес
—…
На ум приходит только category-audi.php, category-zaporojec.php и т.д.
Но если таких подкатегорий много? мне кажется клонирование таких файлов нагрузит сайт, увеличит объем шаблона, да и обломно будет размножать большое количество файлов.
Можно как-то присвоить шаблон всем подрубрикам рубрики?
category-automobil.php не прокатывает, с этим файлом работает только отображение самой категории Автомобиль, и на пордубрики не распространяется.
Здравствуйте! Да шаблон рубрики не распространяется на подрубрики. Здесь есть следующий вариант. Если у всех подрубрик должен быть одинаковый шаблон, то его можно сделать на основе файла category.php, а для основных рубрик сделать отдельные шаблоны, типа category-automobil.php.
Спасибо за статью, как раз то что искал. Думал как заменить посты в рубриках чтобы было легче ориентироваться пользователям. Очень помогли!)
Добрый день!
пытаюсь сделать доску объявлений
вопрос как настроить постоянные ссылки, чтобы выводились категория, дата и название (в ссылке)
и еще вопрос скажите пожалуйста если будет два одинаковых записи в один день как отобразится ссылка?
Извините если выражаюсь неграмотно, заранее спасибо
Здравствуйте Михаил!
Добавьте к выводу такие строки:
Здравствуйте. Воспользовалась вашей инструкцией, все получилось, за исключением одного момента. Не могу разобраться как в классах (вариант № 2), убрать разделение на два столбика. Мне нужно, чтобы они были в один столбец — миниатюра слева, рядом заголовок.
Здравствуйте! Подсказка: все дело в ширине ячейки, установите ширину ячейки равную ширине блока.
Сейчас у меня стили выглядят так
.katalog li{float:left; margin-right:20px;margin-top: -10px;margin-bottom: -10px;overflow:hidden;width:500px;list-style-type: none;}
.katalog {width: 500px;margin: 0 auto; line-height: 26px;}
.katalog ul{margin-bottom: 10px;padding-left: 20px !important;display: inline-block;}
.katalog a{font-size:15px;color:#544b40;text-decoration: none;}
.katalog img{float:left; margin-top: 5px;border-radius: 10px;border: 2px solid #ccc;margin-right: 10px;}
.katalog a:hover{color:#660000;}
.wp-post-image {margin:10px auto 3px;width:120px;height:100px;display: block;}
в категории 2 новости -верхняя нормально, а нижняя начинается посередине строки и частично заходит в заголовок верхней
Марина, уроки css в комментариях я давать не планировал, так как дело это не благодарное.
У вас указан внешний отступ вправо для каждой ячейки (margin-right:20px) и общая длина ячейки (width:500px) и общая длина блока (width: 500px). Так куда должны влезть 20px отступа вправо и вообще если у вас всего одна колонка, то зачем нужен этот отступ?
И здравствуйте!
Даже до начала эксперимента на своих сайтах выражаю Вам огромную благодарность за данный материал — он мне сейчас как никогда оказался нужен и полезен.
Буду в дальнейшем изучать ваш блог.
Подскажите, пожалуйста. В моей теме нет файла category.php, есть, наверное, как у вас archive.php. Чтобы сделать для рубрики с ярлыком shop другой шаблон-нужно создать файл archive-shop.php? Я создала такой, но на сайте ничего не изменилось.
Здравствуйте Любовь! Создавать файл надо под названием category-shop.php.
Спасибо большое! Всё получилось)
Отличная статья! Спасибо! А можно ли во втором варианте сделать так, чтобы названия дочерних рубрик были ссылками на эти рубрики.
Прочитал в комментах варианта отображения списка ссылок на рубрики, но применить на второй вариант не получилось((, чтоб и список записей тоже был. Спасибо за ответ.
Попробуем, но немного позже!
Спасибо! Статья Ваша очень помогла!
Вопрос:
На главной (index.php урл
localhost/siteBlogwp5.local/
)под слайдером и статьей идет вывод блогов(миниатюра,описание,ридмо) и стоит пагинация, щелкаем по пагинации и урл становитсяlocalhost/siteBlogwp5.local/page/2
./page/2 — это что такое? можно это тоже сделать как отдельно редактируемая страница?
Или что почитать на эту тему ,просто трудно понять только начал wp учить.
Добрый день. Прошу помощи, создал каталог из банков youandcredit.ru/banki, но при увеличении миниатюры к примеру более 140px ссылка внизу пропадает, т.е. происходит наложение картинки на текст, и как можно реализовать чтобы ссылка под картинкой была всегда в центре, т.к. на коротких названиях располагается справа. спасибо
Гуглил,гуглил и нешел то что искал) сейчас займусь экспериментами. позже отпишусь о результатах.
А как сделать страницу для категории /nastrojka-wordpress с родителем /sozdanie-bloga в твоем случае. Т.е. страницу для подкатегории.
Я сделал страницу с названием category-catalog.php вывожу туда весь каталог.
Теперь нужно создать страницу с определеными категориями. А в адресной строке было:
example.ru/catalog/podkategoriy/
Инсаф, просто назовите файл category-ярлык_подкатегории.php, а в шаблоне используйте код из варианта без подкатегорий, с указанием нужного id.
Здравствуйте, использую первый вариант. А как сделать, чтобы под миниатюрой отображалась не одна ссылка — название статьи, но и еще одна строка текста, нужно указать автора и цену.
Наталья Вы имеете в виду кусочек начала поста? Или какой-то конкретный участок текста?
Предполагается что на сайте много тех, кто может публиковать. Под каждой статьей указывается автор и ссылка на него, можно ли ее вывести вместе с миниатюрой каталога. И да, нужен кусочек начала поста. Но я уже думаю, что ваш вариант каталога мне наверное не подойдет, рубрик планируется штук 100. Конечно можно сделать столько много страниц дополнительных, но, наверное, это очень замедлит работу сайта. Я новичок, надеюсь задаю не слишком смешные вопросы.
<a href="» rel=»bookmark»> добавила вот это, появился автор поста. Но ссылка ведет не на его личный кабинет, как хотелось бы, а открывает все ту же публикацию, что и миниатюра.
?php the_author(); ?>
Наталья, я так понял вы решили проблему? Или еще что-то от меня требуется?
Виталий здравствуйте. С наступающим Вас Счастья и добра. Скажите пожалуйста, как перевести шаблон (тему) если плагин локализации не справляется с задачей. Плагин не полностью переводит. Я слышал,что не желательно править перевод в PHP файле. Спасибо.
Здравствуйте! Ерунда полная, берете и правьте php файл, самое главное найти где.
Да найти сложновато, тем более файлы нестандартные. Но вроде получается потихоньку через меню поиск (Ctrl+F) каждый проверяю.
Добрый вечер,и с наступающим вас.Я с вами надолго на вашем сайте кажется, и мой первый вопрос.
Сразу хочу сказать я не такой знаток всяких там кодов-
Пока сделал у себя так вот(код не буду приводить)код тот что под этими вашими словами.
Итак, если у категории нет дочерних категорий, то код шаблона будет выглядеть так:
——————
Я больше нечего не делал в файле style.cs не лазил вообще обновил страницу и вот что получилось
http://joxi.ru/XYmEqpos9Rzwm6
почему так получилось в файле style.cs не лазилЯ у вас вчера оставлял комент а вы удалили его-
Денис я ничего не удалял. В сайтостроении нужны определенные базовые знания, которые Вам даст только время. Даже бабушки учатся на моих статьях.
Добрый день!
А если на странице категории выводится множество записей, как добавить возможность пагинации?
Добавил в статью вариант кода, с возможностью вывода постраничной навигации.
Я добавила файлы category-ярлык.php, пробовала и category-id.php, и просто catergory.php, но шаблоны для рубрик все-равно берутся из файла index.php. Что я не так сделала? Вот файлы из моей темы
http://joxi.ru/8239dqwC64LZOr
Трудно сказать, у меня не было такой проблемы. Видимо особенности темы.
Спасибо Вам за Ваши труды! все предельно ясно и подробно обьяснили. Буду пробовать делать.
Здравствуйте! Отличный материал! Но вот я на своем сайте никак не могу сделать белый фон для описания рубрик. Пожалуйста, посмотрите в любой из рубрик на сайте — как это можно сделать? Спасибо.
Здравствуйте! Подскажите пожалуйста, можно ли настроить так чтобы название рубрики в которой нет записи тоже появлялась на странице. Если такое возможно, то что и куда нужно добавить?
Спасибо.
Здравствуйте Юлия! Почитайте вот эту статью, там есть ответ.
такой вопрос делал так как здесь описано… создавал файл category_slug.php
но мне сказали што ето очень жосткий кастиль…
тому вопрос если ето же самое описано в кодексе являетса ето кастилем?
Спасибо по поводу блока содержание статьи.
вопрос по теме. Как сделать вывод не статей, а вывод подкатегории родителя c миниатюрой и названием подрубрики.
Здравствуйте, все получилось, но некоторые названия дочерних подкатегорий выводятся то в середине то справа. а хотелось бы что бы все слева
вы написали
Стили я возьму из второго варианта, немного подправлю некоторые значения и вот что получится. Подскажите ваш код с исправлениями
Почему то пагинация не работает у меня
Здравствуйте, а как сделать разные шаблоны для:
1. Страница рубрики, где перечисляются все статьи.
2. Для самой статьи данной рубрики.
Антон, здравствуйте! Вот здесь и здесь почитайте.
Ответьте пожалуйста на мои вопросы
Вот мой css код.
Спасибо за статью!
А как отключить стандартный вывод записей в категориях? Они выводятся списком.
Ответ тут.
Возможно ли вывести название рубрики родительской, но исключить дочерние и одну рубрику с ID=1. Извините что не в тему немного.
Подскажите, а есть плагин, который бы делал что-то подобное?
Такого плагина я не знаю.
Здравствуйте, Виталий.
Не справляюсь, помогите, как изменить код что бы.
у меня страницы и категории смешаны в гл.меню:
Главная(с), В общем(к), Виды(к), Карта сайта(с), Контакты(с).
ВИДЫ — это категория (родительская), в меню. Хочу что бы при открытии псевдо-страниы ВИДЫ, выводился каталог подкатегорий(их много около 50) без статей и что бы они были ссылками на статьи в этих подкатегориях.
Виталий, ответьте же, прошу.
Я изучил АШТИМЭЛ, СИЭССЭС и ВОРДПРЕСС (Прикольно по русски их писать), а вот ПИЭЙЧПИ пока нет и в связи с этим не понимаю код. Не получается самому.
Хочу свой блок запилить правда пока на денвере его допиливаю.
Подскажите, Виталий, как модернизировать ваш код для того, что бы получилось выше описанное.
Чтобы на странице выводились подкатегории (кликабельные) катологом с миниатюрами без постов, что бы кликнул на миниатюрку или на название подкатегории и выходит обычная страница с постами.
Михаил попробуйте этот, но поставьте Ваши классы:
Или же ,
я привязал рубрики к странице, как сделать, что бы на странице отображались эти рубрики?
Вам надо чтобы посты выводились или подрубрики? Что-то я Вас не понял…
А что делать есть wp не видит category.php, category-36.php и т.д. А использует index.php
Возможно в шаблоне есть функция, принудительно подключающая index.php. Других вариантов не вижу.
Здравствуйте, скажите, а если нужно для двух, трех и более рубрик прописать
в файле функций отдельное количество анонсов в отличии от всех остальных рубрик
в постраничной навигации?
в файле функций в этой строке (третья строка в Вашем примере)
if ($query->is_main_query() && is_category(7))
как прописать вторую рубрику? (через запятую после цифры «7» — не получается).
В смысле не получается?
is_category(7, 8, 9)
где «7, 8, 9» — id категорий.
Можно так прописать:
if ($query->is_category(7, 8, 9))
Добрый день. Такой вопрос: имеется сайт с большим количеством рубрик, которые можно условно разделить на «основные» и «дополнительные». Каждая статья относится как минимум к двум рубрикам, по одной из обоих разделов. Нужно, чтобы на странице каждой «основной» рубрики находились ссылки на «дополнительные», при тыке на которые показывались бы статьи, относящиеся к обоим рубрикам одновременно. Такое возможно вообще?
В программировании нет ничего невозможного. В скором будущем выйдет статья «Миниатюры для категорий», где я собираюсь рассказать, как сделать каталог из подкатегорий. Следите за обновлениями.
Дело как раз в том, что подкатегорий там нет. Если бы были, то все было бы гораздо проще. Но их не делали, потому что тогда в каждой категории были бы одни и те же подкатегории, которые выводились бы на отдельных страницах.
Добрый день!
Спасибо за труды, Ваша статья полезна.
Основываясь на Вашем коде для категорий с дочерними категориями, запилил свой код, только вот пагинация не работет, перепробовал множество вариантов, но ни один не подошел, всегда выводятся одни и те же посты. Буду благодарен за помощь!
Заранее спасибо!
Дмитрий Вы какой цикл wordpress используете?
Приведу, код полностью:
<?php
$cat_args = array(
'child_of' => 12,
'orderby' => 'name',
'order' => 'ASC'
);
$categories = get_categories( $cat_args );
foreach ( $categories as $category )
{
$args = array(
'numberposts' => 5,
'category__in' => array( $category->term_id ),
);
$posts = get_posts( $args );
if ( $posts )
{
echo '<h2 class="uk-margin-left uk-margin-top">' . $category->name . '</h2> ';
foreach ( $posts as $post )
{
setup_postdata( $post );
?>
<ul class="uk-margin-left uk-padding-remove">
<li>
<a data-link="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a><br/>
</li>
</ul>
<?php
}
}
}
?>
Дмитрий, некогда заняться Вашей проблемой. Как руки дойдут посмотрю, что можно сделать.
Здравствуйте!
Вот такой вопрос. Если у меня допустим 100 категорий и под каждую мне нужен свой шаблон. Создавать 100 файлов как-то не очень радует. Есть ли еще какой то вариант?
Alex, допустить, конечно, можно, что угодно, но надо реально смотреть на вещи. Смотря чем должны отличатся страницы категорий друг от друга…
Уникальный тайтл, заголовок h1 и текстовый блок.
Ну вот, ситуация проясняется. Alex, для этого не надо создавать шаблоны. Я как раз готовлю статью, думаю за неделю точно добью, которая будет называться «Свои заголовки title и h1 для категорий».
Не могу ее выпустить уже пару месяцев. Ну раз заикнулся, думаю допишу. Подождите недельку…
Подождем, конечно. Правда как я уже писал выше, что дело только title и h1 не ограничивается. В идеале, как мне кажется, это бы просто решалось если в стандартном редактировании категорий было бы больше возможностей.
О том и речь.
Доброго времени суток! Случайно попала на Ваш блог со статьей «шаблоны для категорий», полезная статья (особенно для меня), т.к я недавно открыла кулинарный сайт, а это, то что нужно для таких сайтов. Спасибо Вам!!! Еще меня интересует такой вопрос, наполнять рецептами сайт самой тяжеловато, не подскажите может есть какой то плагин (бесплатный) для WordPress, что бы посетители могли добавлять свои рецепты с фото самостоятельно или какое то программное решение наподобие Ваших шаблонов для категорий. С уважением Маргарита!
Здравствуйте. Вопрос немного не по теме, но близкий:
Как реализовать РАЗНЫЕ мобильные меню для разных рубрик?
То есть чтобы при нахождении пользователя в статье одной рубрики — при нажатии на «меню», выскакивало «меню-1», а при его нахождении в статье другой рубрики и клике на «меню», выскакивало другое меню.
Для стационарных компов различное меню у меня сделано так (в файле single.php):
if (in_category( array( ‘odin’, ‘dva’, ‘tri’) )) {
include(TEMPLATEPATH.’/header-1.php’);
} elseif (in_category( array( ‘chetyre’, ‘pyat’, ‘shest’) )) {
include(TEMPLATEPATH.’/header-2.php’);
} else {
get_header();
Как СЕЙЧАС реализовано мобильное меню:
в хедере есть строка
<div id="mob">
<a data-link="#mobilemenu"> <span> </span></a>
</div>
А в футере джквери:
<div id="mobilemenu">
<?php $menuClass = 'mobilemenu';
$secondaryNav = '';
if (function_exists('wp_nav_menu')) {
$secondaryNav = wp_nav_menu( array( 'theme_location' => 'secondary-menu', 'container' => '', 'fallback_cb' => '', 'menu_class' => $menuClass, 'echo' => false ) );
};
if ($secondaryNav == '') { ?>
<?php }
else echo($secondaryNav); ?>
</div>
Вероятно, нужно где то прописать так, чтоб в консоли/внешний вид/меню
внизу, где «настройки меню» — «показать местонахождение» — было несколько чекбоксов для мобильное меню-1, мобильное меню-2 и т.д.
Виталий, Вы же умный дядька, придумайте решение?
Здравствуйте вы не могли бы мне помочь у моего сайта есть одна проблема когда добавляешь категорию объявление все категории показывает и категории и подкатегории.Я хочу чтобы по порядку всё было.Когда нажал категорию появился подкатегории вот так я хочу помогите мне буду рад.
Жду вашего ответа 🙂
Добрый день! Пытаюсь, чтобы в каталоге статей, каждая статья была обернута в тег «cтатья» и чтобы текст в «зе эксцерпт» был обернут в тег «параграф». Помогите пожалуйста
Код заключается в следующем:
Вызываю query_posts (куери_пост). Внутри этого цикла выводятся статьи из конкретных рубрик. В каждой статье есть миниатюра, тайтл c cслкой и the_excerpt (эксцерпт).
Наконец-то понял, как отправить вам код:
<section class="articles-catalog">
<?php query_posts('cat=5');
while (have_posts()) : the_post();?>
<article>
<h2><a data-link="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div class="thumbnail"><?php echo get_the_post_thumbnail(); ?></div>
<p><?php the_excerpt(); </p>
endwhile;
wp_reset_query();?>
</article>
</section>
Как мне убрать описание, под картинкой?
в шаблоне category.php необходимо перед постами вывести произвольный текст, но выводит почему-то текст определенной статьи, как это изменить?
Добрый день. Как можно осуществить замену названия одной рубрики на картинку?
Здравствуйте, очень прошу помочь, уже который день не могу решить задачу, не хватает знаний, надо вывести на странице категории подкатегории с записями, чтобы получлось так
Категория 1
подкатегория 1
записи подкатегории 1
подкатегория 2
записи подкатегории 2
все что получилось вывести сейчас это
Категория 1
подкатегория 1
все записи родидельской категории
подкатегория 2
все записи родительской категории
ваш пример Шаблон для категорий с дочерними категориями похоже на то что надо но у меня почему то не работает, вообще не выводит, айди категории заменял, подскажите пожалуйста как сделать чтобы выводились посты только подкатегории?