single.php

include (TEMPLATEPATH . '/searchform.php');
if (have_posts()) : while (have_posts()) : the_post();
the_time('F j, Y'); апрель 12, 2007
the_author(); Yantar
the_category(', '); wordpress, для продолжающих
the_ratings();
раз снежинкадва снежинкатри снежинкаа я четвертую сорву!отличная снежинка (голосов: 36)
UTW_ShowTagsForCurrentPost("commalist"); Ключевые темы: No Tags
show_post_count(); Просмотров: 11758

the_content();

Бывает, человеку очень хочется, чтобы на первой странице его блога выводились посты только из одной категории - например, "Новости". Человек этот не особо заморачивался с темой блога, в папке темы у него не лежит ни single.php, ни category.php - все формируется по единому шаблону. Но вот для первой страницы человек решил сделать исключение.

Итак, первое, что ему надо сделать, добавить папку с темой файл home.php. Затем скопировать туда содержимое из файла index.php. Затем найти строчки, где начинается The Loop:

 
if (have_posts()) : while (have_posts()) : the_post();
 


и перед ними добавить

 
query_posts("cat=3");//здесь вместо цифры 3 надо подставить id нужной категории
 


Вот теперь первая страница блога формируется в соответствии с шаблоном home.php, а все остальные в соответствии с index.php. Только, вот беда, плохо работают ссылки на предыдущие страницы - то есть, если захотеть отмотать новости назад, ничего не выйдет.
Поступим здесь точно так же, как я уже писала однажды на похожую тему: вместо query_posts("cat=3") напишем примерно такое

 
$numpost=10;//сколько записей на одной странице нам надо вывести
if($paged>1) $offset=$numpost*($paged-1);
else $offset=0;//чтобы знать, с какой статьи начать, если это не первая страница
query_posts("cat=3&offset=".$offset."&showposts=".$numpost);
 


Теперь должно работать :-)
(в старых версиях ВП вместо параметра showposts использовался posts_per_page).

Еще немного подробностей о query_posts:

  • если нужно подкорректировать всего один параметр (к примеру, мы хотим на странице автора выводить другое, чем обычно, количество постов), то к этому параметру надо прибавлять переменную $query_string, которая позволит не "забыть" про все остальное. Выглядеть это должно примерно так: $query_posts($query_string."&showposts=5");
  • если надо вывести все категории, кроме одной, пишем query_posts("cat=-3");
  • если надо вывести все категории, кроме нескольких, пишем query_posts("cat=-1,-2,-3");
  • если вместо постов надо вывести содержимое страницы, пишем query_posts('page_id=7'); или query_posts('pagename=about');
  • если нам нужен какой-то конкретный пост, пишем query_posts('p=1'); или query_posts("name=first-post");
  • если нам нужны записи за конкретный год и месяц, пишем query_posts('monthnum=12&year=2004');

Все это, и даже еще больше, можно было узнать и из Кодекса.

Насколько этот текст оказался полезным?
раз снежинкадва снежинкатри снежинкаа я четвертую сорву!отличная снежинка (голосов: 36)
comments_template();

Комментарии (23) к записи «вывод на первой странице записей одной категории»

  1. Толик Says:

    спасибо, очень позновательно

  2. sonika Says:

    За два последних пункта — большое спасибо, не знала про query_posts(’p=1′); и query_posts(’monthnum=12&year=2004′);
    Дизайн блога классный! :)

  3. Misha Says:

    пишите еще, понравилось :)

  4. Vice Says:

    Дизайн и правда классный, но ползёт в Опере 9.02. Некорректно отображается содержимое тега pre - посмотри что с ним, а то несолидно блогеру рассказывающему о блогостроении иметь баги в дизайне.

  5. nachberlin Says:

    спасибо, проверю!

  6. Девайс Says:

    Спасибо, информацио о выводе одной категории оказалась очень кстати!

  7. red4x Says:

    А такой вопрос. Как можно вывести листинг постов одной категории, при входе в эту категорию (например, в сайдбаре)?

  8. Yantar Says:

    чуть раньше я об этом уже писала: http://trampampam.ru/blog/wordpress/neskolko-postingov-tekuschey-kategorii/

  9. Pirat Says:

    Немного не в тему
    Есть sidebar темы. Как сделать так чтоб в этом sidebarе отображался один текст для всех категорий страниц и главной но для одной категории (например категории №1) отображался другой текст. Ищу такое на кодексе но никак найти не могу.

  10. Darmoid Says:

    Немного не в тему но…
    Есть sidebar темы. Как сделать так чтоб в этом sidebarе отображался
    один текст для всех категорий страниц и главной но для одной категории
    (например категории 1) отображался другой текст. Ищу такое на кодексе
    но никак найти не могу.

  11. Yantar Says:

    это называется Сonditional Tags
    <?php if(in_category(1)) echo “здесь исключительная категория”;
    else echo “здесь текст для всего остального”;
    ?>

  12. Oleg Viazmitinjv Says:

    Спасибо! Очень познавательно!

  13. Sveha Says:

    да респект, мне понравилось

  14. Корней Says:

    супер

  15. iSynth Says:

    Яна, привет! я пробую вышеуказанный код (имею траблы с выводом страниц отличных от индекса), но получаю ошибку Parse error: syntax error, unexpected T_ELSE in /home/isynth/public_html/wp-content/themes/dreams/index.php on line 6

    что может быть не так??
    привожу код index.php ниже:

    ” target=”_blank” href=”">” />

    1) $offset=$numpost*($paged-1); ?>

    “>

    ” rel=”bookmark” title=”">

    /images/icon_cat.gif” align=”absmiddle”>  Категория:     /images/icon_day.gif” align=”absmiddle”>  Опубликовано:

    /images/icon_more.gif” align=”absmiddle”> “>Далее…

    Записи в категории:

    Ничего не найдено
    По Вашему запросу ничего не найдено

  16. Yantar Says:

    iSynth: чтобы код отобразился нормально попробуйте заключить его в теги <code></code>

  17. Gamer Says:

    Спасибо! Очень познавательно!

    P.S. Что-то у тя двигло глючит

    везде функции повылазили

  18. Камчатка Says:

    >везде функции повылазили
    Это ж диз такой :D

  19. Stan Says:

    Интересная информация, спасибо. Но взникла еще одна необходимость. Как на первой странице вывести по одному, или по два, или по три поста с каждой категории?

  20. Yantar Says:

    Stan - точно так же:
    сначала $query_posts(’cat=1&shoposts=3′)
    потом луп
    потом опять $query_posts уже с другими параметрами, потом опять луп
    и так далее

  21. x00374 Says:

    Огромное спасибо! С шаблоном home.php как раз то что мне нужно и главное работает))

  22. SanhesKi11eR Says:

    Конструкция:

    $numpost=10;//сколько записей на одной странице нам надо вывести
    if($paged>1) $offset=$numpost*($paged-1);
    else $offset=0;//чтобы знать, с какой статьи начать, если это не первая страница
    query_posts("cat=3&offset=".$offset."&showposts=".$numpost);

    ,работает в том случае если в настройках установлен параметр показа 10 постов на странице, если поставить вывод постов меньше или больше 10 то конструкция не работает( надо поправить $numpost=10; на $numpost=?;, где вместо ? - количество постов показываемых на странице из настроек…

  23. botanik Says:

    Добрый день, подскажите пожалуйста как вывести на странице категории – дополнительно внизу все заголовки постов этой категории в алфавитном порядке в две или три колонки?

Есть комментарии?

It sounds like SK2 has recently been updated on this blog. But not fully configured. You MUST visit Spam Karma's admin page at least once before letting it filter your comments (chaos may ensue otherwise).
show_manual_subscription_form();

Subscribe without commenting

endwhile;