Янв
11
122

Вывод текста в блоге только на главной

Условные операторы wordpressСтандартный формат блога построен таким образом, что его сообщения (посты) выводятся друг за другом, причем первыми отображаются самые новые, а старые постепенно уходят в архив. Так было в самого начала, но с развитием блоггинга мы могли видеть множество различных вариантов шаблонов wordpress, которые, например, отображают информацию в газетном виде, а сверху демонстрируются так называемые featured (избранные) статьи. Или, например, фото блоги, что практически не содержат текстовой информации, лишь фото, ну и т.п.. Люди понемногу стали отходить от стандартов. И это здорово.

Одним из таких моментов, что может слегка разнообразить ваш блог, есть вывод определенного текста на главной странице блога. То есть читатель заходит на проект site.ru и видит небольшое текстовое описание, о чем собственно сайт, что здесь можно найти и т.п. Иногда такие описания (вступления) помещаются в сайдбар, иногда в шапку блога. Можно поступить несколько иным образом, скомбинировав два варианта:

  • на главной отображается текстовый блок с вступлением;
  • на всех остальных страницах описание блога выводится в сайдбаре, но в уменьшенном (более компактном виде).

Пример пригодился мне в одном из блогов. Я там по дизайну еще не все делал, но как раз сегодня разбирался с выводом текста на главную. Получается, что многие посты на WordPress Inside основаны на личном опыте:)

Кстати, если вам нужно подправить лишь оформление главной, то достаточно будет использовать WordPress функцию body_class — она добавит в body соответствующие классы, а дальше вы примените CSS стили.

Условные операторы wordpress

Для решения нашей задачи мы будем использовать условные операторы wordpress. Но тут есть небольшая «неувязочка», которую раскусить пока не удалось, хотя на финальный результат она не влияет. Фишка в том, что для определения главной страницы блога есть сразу 2 оператора — is_home() и is_front_page(). По описанию в кодексе мне лично до конца и не удалось понять какая между ними разница, термины одинаковые какие-то, поэтому просто практически нашел работающий вариант.

is_home() – условный оператор, который равен TRUE или FALSE и проверяет отображается ли в данный момент «main page» для блога. Сказано еще, что в WordPress 2.1 функция обрабатывается несколько иначе, чем в других версиях и, если выбрана статическая страница в качестве главной, то там могут возникнуть проблемы.

is_front_page() – добавлена в версии 2.5, также является условной, принимает значение TRUE или FALSE в зависимости от того отображается ли в данный момент «front» страница или пост. То есть, судя по всему, функция универсальная и срабатывает в обеих случаях – когда у вас в админке выбрано «отображать последние записи на главной» либо в качестве главной идет «статическая страница».

Если меня читают гуру wordpress, которые разбираются во всех тонкостях системы, то буду признателен за разъяснение. Но пока что могу сказать, что я использую у себя is_front_page() и никаких проблем не наблюдал. На главной при этом выводятся «последние посты». Получаем что-то вроде:

<?php
if (is_front_page() ) {
   echo('This is a homepage'); // действие для главной страницы
} else {
   echo('This is not a homepage'); // действие для не главной страницы
}
?>

В блогах бывают ситуации, когда на главной странице не помещаются все посты и внизу появляется разбиение на страницы. Что важно(!) система wordpress при переходе по ним не меняет состояние страницы с «главной» на другое — получается главная страница, которая просто не помещается за один раз. Поэтому мы будем использовать еще один важный условный оператор:

is_paged() —  реагирует (TRUE или FALSE) на ситуацию, когда все посты архива (для главной, категории, тегов) не помещаются на одной странице и разбиваются на несколько. Причем следует заметить, что это не касается разбиения отдельного поста на страницы с помощью <!--nextpage-->.

Итого — выводим текст только на главной

Чтобы выводить текст на главной и прятать его на любых других страницах я использую код, который добавляю в файл шаблона index.php до выборки последних постов блога have_posts():

<?php if ((is_front_page()) and (!is_paged())) { ?>
 <div class="pagetitle"><h1>Мой блог</h1></div>
 <div class="entry"><p>Добро пожаловать в мой новый блог</p></div> 
<?php } ?>

Теперь шаг номер 2 – будем выводить небольшое краткое описание для блога в сайдбаре – для этого открываем файл sidebar.php и добавляем в нужное нам место строки:

<?php if ((!is_page('2')) and !((is_front_page()) and (!is_paged()))) { ?>
 <div class="about" style="margin-bottom: 5px;">
  <div class="h3title">О проекте</div> <p>Короткое описание</p>
 </div>  
<?php } ?>

Здесь мы видим еще один условный оператор, который может кому-то пригодиться.

is_page (‘ID’) – проверяет отображение страницы с номером, указанным в ID. В моем примере я скрываю краткое описание блога в сайдбаре на странице с id 2, потому что там у меня приготовлена целая статья «о проекте». То есть нет смысла выводить краткое описание, когда все рассказывается непосредственно в блоке контента.

рейтинг Оцените статью:
Ужасная статьяНичего интересногоТак себеНормальноХорошоКлассный постВ закладки!
(голосов - 13, средний балл: 6,85 из 7)
Загрузка...

категория Категории: Возможности; Хаки и секреты;
теги Теги: , , , , , .

комментария 122 к статье “Вывод текста в блоге только на главной”

  • Tod   02.04.2011

    Валерий, посмотрите в кодексе вордпресс информацию по условным операторам, там можно сделать отдельные записи для тегов, категорий, архивов и самих страниц с постами.
    StanKoba, добавляем вокруг текста P или DIV с классом class=»maintext», после чего в CSS задаем оформление для стиля .maintext {} — но, конечно, лучше ориентироваться в этих деталях и почитать про html + css где-то более подробно.

  • arlekino   24.05.2011

    Очень полезная статейка.
    На своих сайтиках ставлю текст на главной.

    Есть маленький вопросик.
    Как уменьшить шрифт этого текста на главной странице и отступ между строками?

    Я поставил 1000зн. текста, все хорошо, но он занимает больше половины экрана. К-во знаков уменьшать не хочеться, а вот уменьшить шрифт -это самое то, будет красиво и эим же будет выделяться с общего фона.

  • arlekino   24.05.2011

    Уже нашел и сделал…………ваш текст
    даже менять отступ между строчками не понадобилось)))))

  • Сергей Полик   23.06.2011

    СПАСИБО!
    Давно искал как сделать отображение виджетов только на внутренних страницах.
    Функция is_front_page() всё решила!

  • GadZZillA   25.08.2011

    А как сделать наоборот, чтобы выводилось везде, кроме главной?

  • Tod   25.08.2011

    GadZZillA, это зависит от шаблона — в старых и простых «обработчик» отображения постов на любых страницах сайта реализовывался через index.php, достаточно было добавить обратное условие по типу !is_front_page(), но если вам нужно на всех-всех страницах, то придется добавлять текст в разные файлы шаблона — archive.php, тот же index.php, возможно single.php и т.п.
    То есть, в некоторых файлах просто добавить нужный текст, в archive.php отображается на страницах архивов и не главной не будет. А вот в index.php надо будет добавлять условие обратное тому, что написано в статье.

  • Горный Оптимизатор   08.09.2011

    Спасибо!
    Искал одно, а нашел другое :))
    Оказывается IF не работает если ВСЁ условие в скобки не заключить!

  • Оксана   19.11.2011

    Что-то делала, и ничего не получается. На первом же шаге весь сайт исчезает и появляется белый лист

  • Tod   20.11.2011

    Оксана, значит допустили какую-то ошибку в коде шаблона — там ведь нужно смотреть где php открывается, где закрывается и т.п. Хотя белый лист больше подходит для шаблонов, которые зашифрованы от изменений и где нельзя получается менять код некоторых файлов.

  • Оксана   20.11.2011

    Наверное в этом проблема. Спасибо, сейчас буду пробовать исправить и тогда скажу что получилось.

  • Kos   22.11.2011

    Огромное спасибо, то что искал!

  • Станислав   29.11.2011

    Спасибо за is_paged() — нужно было приветствие только на 1-й по номеру домашней вывести, а одна is_home() не давала результата. Вы все разъяснили. :)

  • Оксана   04.12.2011

    Ура!!!!!!!!!!!!!!!!!! Получилось!!!!!!!!!!!!!!!!!!!!!! Спасибо огромное.

  • Алексей   08.12.2011

    В начале статьи есть пара слов про избранные статьи в WordPress. Не подскажете как это реализовывается? В Joomla есть такое, а WordPress как то не нашел. Было бы интересно контролировать вывод постов на главной странице.

  • Tod   12.12.2011

    Алексей, эта штука называется sticky post, была в блоге статья про создание и оформление sticky post — там есть ответы на некоторые вопросы по теме.

  • Маруся   11.01.2012

    Помогите пожалуйста у меня index пустой куда вставлять «Мой блог. Добро пожаловать в мой новый блог».
    Вобще не пойму срочно помогите. тема Bombax

  • Tod   11.01.2012

    Маруся, файл index.php не может быть пустой, хотя в теме его может не существовать, тогда для главной смотрите home.php.

  • Max   12.01.2012

    Хорошая статья! но мне непонятно . Как мне вывести определенный текст не на главной а только в категориях? Например описание категории.. Так же как у вас когда нажимаешь на любую категорию идет описание. Подскажите пожалуйста.
    Описание должны быть на каждую категорию свое.

  • Max   14.01.2012

    Разобрался спасибо)

  • Tod   14.01.2012

    Max, для этих целей смотрите пост про то как добавить текст описания в категории wordpress блога — то, что вам нужно.

  • Роман   22.01.2012

    помогите рещить проблему мне надо описать на сайте каждую категорию, и чтоб описание было тролько в категории и на страницы не распространялось, готов заплатить icq 45452203

  • Tod   23.01.2012

    Роман, пока никто не откликнулся, можете почитать немного об этом процессе в статье облагораживаем страницы меток и тегов в wordpress — там есть парочка ссылок в тексте и полезных решений.

  • Роман   23.01.2012

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

  • Дмитрий   23.01.2012

    Роман, готов решить вашу проблему. Пишите mitrichh@yandex.ru

    «помогите рещить проблему мне надо описать на сайте каждую категорию, и чтоб описание было тролько в категории и на страницы не распространялось, готов заплатить»

  • Роман   25.01.2012

    пишу на почту никто не отвечает неужели не кто не может помоч?

  • Дмитрий   25.01.2012

    Ответил по почте.

  • Роман   27.01.2012

    есть вайл с описанием /avd.php как вывести его в нужном для меня месте подскажите пожалста

  • Tod   29.01.2012

    Роман, нужно использовать что-то вроде

    <?php include (TEMPLATEPATH . "/searchform.php"); ?>

    Файл должен находится в папке с шаблоном вместе…
    П.С. не добавляйте пожалуйста в подпись ссылку на тот самый сайт, устал его удалять)

  • Роман   29.01.2012

    Спасибо Tod попробую

  • Илья   03.02.2012

    Самый хороший материал по теме, сколько не искал, ваш код сработал! Спасибо.

Оставить комментарий

(предыдущая статья)

Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!

Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:

Поиск:
Последние посты
Лучшее в категории

Облако тегов
Скажи свое мнение!

В чем основные плюсы Wordpress?

Посмотреть результаты

Загрузка ... Загрузка ...
Друзья проекта
Последние новости