Выпуск 13. Дата и время. Разбивка страницы. Навигация
Настройка отображения даты и времени
Очень часто возникает потребность вывести в своем блоге дату и время в другом виде, нежели это предусмотрено в админ-панели или указано в шаблоне. Для этого WordPress предоставляет функцию:
the_time('формат вывода');
В качестве аргумента эта функция принимает аргументы PHP-функции date(). Посмотреть их полный список можно например на сайте http://www.codenet.ru/. Я же приведу лишь некоторые и дам готовый пример.
- F - название месяца
- j - день месяца без нулей (1-31)
- Y - год (4 цифры)
- l - название дня недели
- H - часы, 24-часовой формат (00-23)
- i - минуты
Пример:
the_time('F, j-го Y г., l в H:i')
Получится: "Сентябрь, 12-го 2006 г., Вторник в 23:23".
Как правило шаблон вывода даты указывают прямо в WordPress-шаблоне. Но, поскольку это англоязычные разработки, то указывается и символ "S", который является суффиксом "th" или "nd". Если он вам не нужен, то просто уберите его.
Если же вы хотите использовать один формат даты на всем блоге, то будет проще сделать это один раз в админ-панели ("Настройки"). После этого вызывайте the_time вообще без аргументов.
Где используется the_time()?
Откройте файл index.php и в блоке вывода записей вы увидите эту функцию. Поправьте её по своему усмотрению.
Деление страницы на части
Если вы публикуете большие по объему записи, то всегда можете их разделить на части. Делается это очень просто с помощью кода:
<!--nextpage-->
Один нюанс, который может у вас возникнуть. Чтобы появилсяь ссылка на следующие части, нужно, чтобы в шаблоне была прописана функция:
<?php wp_link_pages(); ?>
Она добавляется (обычно) в файле шаблона после блока the_content.
Аналог except (короткий анонс)
Поле "Анонс" используется для того, чтобы отобразить его на главной странице, а уже при переходе на саму запись отображается всё, кроме этого анонса. Вы уже знаете про код
<!--more-->
который разбивает запись на две части, где первая отображается только на главной странице. Это не совсем тоже, что и "Анонс", поскольку при просмотре записи показываются обе части. Чтобы показывать первую часть только на главной странице нужно сразу после more добавить код:
<!--noteaser-->
Что делать если выводятся только полные записи?
Очень часто встречаются шаблоны, которые выводят полный текст записи, даже если вы заполнили поле "Анонс". Это происходит из-за того, что вывод текста анонса и основного текста записи производится двумя разными функциями. Разработчики шаблонов по какой-то причине исключают проверку на существование анонса и тем самым делают его лишенным смысла. Поэтому я покажу, как можно исправить сей недостаток.
Откройте файл index.php. Текст записи выводится примерно так:
<?php the_content('Далее...'); ?>
Изменяем таким образом:
<?php
if ($post->post_excerpt != "") { the_excerpt(); ?>
<p class="info"><a href="<?php the_permalink() ?>" class="more">Далее...</a>
<?php }
else { the_content('Далее...'); }
?>
Рассмотрим поподробней. Если переменная $post->post_excerpt не равна пустой строке, то выполняется функция the_excerpt(), то есть выводится текст анонса и ссылка на полную запись. Если же эта переменная пустая, то выполняется the_content(), то есть выводится основной текст записи.
Навигация по записям
Чаще всего преход между записями делают с помощью функции posts_nav_link(). Это как раз вывод "Next" и "Prev". Но, можно использовать более информативные ссылки с указаванием названия предыдущего/следующего поста. В этом нам помогут функции next_post и previous_post. Например так:
<?php previous_post('Раньше: %', ''); ?>
<br />
<?php next_post('Позже: %', ''); ?>
Первый параметр задает текст до ссылки, здесь же используется символ "%", который указывает куда вставить саму ссылку. Второй параметр мы оставили пустой строкой, поскольку по-умолчанию будет отображаться английское "next post: " и этот текст будет добавляться в ссылку.
Отображение заголовка вне цикла while(have_posts())
Если вам нужно отобразить заголовок текущей записи вне цикла её вывода, то используйте функцию single_post_title.
<p><?php single_post_title('Текущая запись: '); ?>
С помощью предыдущих примеров и этой функции вы сможете организовать навигацию вида "до - здесь - дальше".
Постоянная ссылка: http://maxsite.org/?p=99
Версия для печати
