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();
раз снежинкадва снежинкатри снежинкаа я четвертую сорву!отличная снежинка (голосов: 64)
UTW_ShowTagsForCurrentPost("commalist"); Ключевые темы: No Tags
show_post_count(); Просмотров: 37535

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');

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

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

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

  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:

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

  24. Zyama Says:

    можно посоветоваться? недавно поставил код в созданный шаблон категории:

    Когда постраничная навигация по шаблону давала дублирование контента. В результате мы это исправили, путем прописания if ($paged == 0|| $paged == 1) и setup_postdata($post); … Я поставил новую тему, все это там прописал и на главной странице шаблона все ок, а на последующих выводится контент вообще произвольной страницы а потом анонсы… Т.е. условие запрета вывода статики на других страницах не работает… Есть мысли?

  25. Yantar Says:

    код не прописался
    надо смотреть, чем отличается то, что в новой теме, я так телепатически не скажу

  26. Zyama Says:

    аська есть? Моя 277236854

  27. Yantar Says:

    нет, у меня только гуглток nachberlin

  28. Zyama Says:

    Вот код:

    ” title=”">
    Опубликовал в рубрике . Комментарии:

    ” title=”читать запись полностью “>Далее

  29. Yantar Says:

    попробуйте код заключить в <code&rt; или в <textarea>

  30. Joy Says:

    Помогите решить задачку:
    На главной посты выводятся случайно

    Если какой-нибудь пост случайно вывелся на первой странице, этот же пост также случайно может быть выведен на 5, 7 и любых других страницах.
    Вопрос: как избежать дублирования?

  31. Joy Says:

    Помогите решить задачку:
    На главной посты выводятся случайно
    query_posts(’orderby=rand’);
    Если какой-нибудь пост случайно вывелся на первой странице, этот же пост также случайно может быть выведен на 5, 7 и любых других страницах.
    Вопрос: как избежать дублирования?

  32. Tyler Durden Says:

    Большое спасибо за то, что объяснили, как исправить косяк с предыдущими записями. Теперь все хорошо работает.

  33. Iren Eroshina Says:

    Спасибо, очень помогли! Только кодовую конструкцию пришлось обрамить

  34. Joliat Says:

    Доброго времени суток.

    Помогите правильно сформировать запрос? Мне нужно вывести посты ID которых находятся в переменной $posts в виде: “44, 52, 62, 72, 81″
    Запрос
    query_posts(’”posts_per_page=5&p=’.$posts.’”‘); global $more; $more = 0;
    Выводит только один пост и тот в развернутом виде (игнорируя MORE).

  35. galloko Says:

    Спасибо! Долго искал реализацию вывода одной страницы на главной ленте нашел у вас! =) взял сайт на заметку =)

  36. Наталья Says:

    Подскажите пожалуйста, очень долго ищу решение и не как, у вас вроди все правильно и понятно написано, но у меня не выходит. Мне нужно выводить на главной странице статическую страницу с витриной товаров и выше нее выводить поле с анонсами записей из рубрики новинки, то-есть вверху у меня рубрика NEW выводит картинки, а ниже статическая страница товаров, магазин на основе плагина wp-shop. Я для вывода рубрики new создала файлик sidnivinki.php, под место блока новинок сделала sidebar, в файлике sidnivinki.php прописываю , вставляю этот сайдбар вфайлик страницы page.php вот таким макаром , при таком раскладе у меня выводятся картинки новинок, но нижу не выводится страница витрины товаров, а дублируются посты из новинок. Делаю принудительный вывод страницы в page.php у меня выводится все как надо, но почему то дублируется моя витрина магазина(((( Что я делаю не так? Подскажите пожалуйста.

  37. Kolass Says:

    А откуда берется переменная “$paged”? Она глобальная или задается вручную где-то?

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

show_manual_subscription_form();

Subscribe without commenting

endwhile;