Вывод текстового блока на главную

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

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

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

Но как раз совсем недавно  разбирался с выводом текста на главную с последними записями.

У нас посдедние посты ( записи) выводятся в index.php .В других темах возможно home.php

Но вставив «div» текстового блока в index.php обнаружили ,что выводится текстовой блок во всех страницах. Значит надо выводить только на главной.

Условные операторы 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 } ?>

Но при выводе текста и его изменении надо постоянно лезть в файл index.php ,а у меня бродила мысль ,а как вывести в админ панель сайта для редактирования.Нашел. Делюсь. При этом решении выводится страница ,которую можно редактировать.
Окончательное решение.

<?php

global $paged;

if(is_home() && $paged == «») :

?>

 

<?php

$my_query = new WP_Query(‘pagename=mini-game’); // тут надо указать название требуемой page

while ($my_query->have_posts()) : $my_query->the_post();

?>

<div class=»post»>

<h1><?php the_title(); ?></h1>

<?php the_content(‘ ‘); ?>

</div>

<?php endwhile; ?>

 

<?php endif; ?>

Вот вкратце и все. Задав «div» свой стиль css  Вы сможете приукрасить тестовой блок при создании сайта ( при подготовке статьи использован материал http://wordpressinside.ru/tips/conditional-tags/ )

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *