Google

Yet Another Related Posts Plugin: использование шаблонов

Дата публикации:Январь 7, 2011

Начиная с версии 3.0, WordPress плагин Yet Another Related Posts Plugin включил в себя две новых возможности: кэширование и обработку шаблонов. В данной статье я покажу вам, как можно использовать шаблоны для настройки представления связанных записей.

Предыдущие версии плагина YARPP предлагали довольно ограниченное число способов изменения вида связанных записей. Вы могли устанавливать некоторые HTML-теги, для того чтобы обернуть ими свои записи, а также выбрать, какое количество цитат (если они есть) выводить на экран. Указанного интерфейса вполне хватало большинству пользователей — к слову говоря, приведенные настройки остались и в версии YARPP 3.0. Однако, вместе с тем появились и новая опция, позволяющая в полной мере проявить свои навыки PHP-кодирования и получить более полный контроль над отображением связанных записей. Указанная опция дает возможность выбирать любые файлы в подкаталоге templates плагина YARPP.

Структура шаблона YARPP

Давайте взглянем на тестовый шаблон, поставляемый вместе с плагином YARPP 3 (yarpp-template-example.php):

<h3>Related Posts</h3>
<?php if ($related_query->have_posts()):?>
<ol>
<?php while ($related_query->have_posts()) : $related_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ol>
<?php else: ?>
<p>No related posts.</p>
<?php endif; ?>

Указанный шаблон (а также большинство других шаблонов) состоит из двух базовых частей: (а) что будет выводиться на экран, если связанные записи есть, и (b) что будет выводиться на экран, если связанных записей нет. Проверка на наличие связанных записей находится во второй строке. Если они есть, то мы выводим на экран упорядоченный список и заходим в цикл while, который выполняется до тех пор, пока существуют связанные записи. Для каждой записи мы используем сниппет $related_query->the_post();, который загружает необходимые данные записи и печатает новый пункт списка.

Вы можете заметить, что мы использовали здесь некоторые теги шаблона, такие как the_permalink() и the_title(). Если вы занимались разработкой тем WordPress, то они должны быть вам знакомы. Я затрону их снова чуть позже.

Мощь PHP

Одно неоспоримое преимущество новой системы шаблонов заключается в том, что вы можете напрямую влиять на количество выводимых записей, избегая всех предыдущих структурных ограничений. К примеру, в шаблоне template-list.php мы записываем информацию для каждой связанной записи в массив и затем объединяем строки при помощи функции implode. Таким образом, мы получаем список разделенных запятой значений без любых беспризорных запятых до или после списка, что до сих пор было невозможно.

$postsArray = array();
while ($related_query->have_posts()) : $related_query->the_post();
$postsArray[] = '<li><a href="'.get_the_permalink().'" rel="bookmark">'.get_the_title().'</a></li>';
endwhile;echo implode(', ',$postsArray); // print out a list of the related items, separated by commas

Также вы можете запускать произвольные PHP функции в вашем шаблоне — вплоть до прокрутки другого WP_Query, как это сделано в шаблоне template-random.php: в случае отсутсвия связанных записей на экран будет выведена случайная запись.

Знакомые теги шаблона

Как было замечено ранее, теги, которые мы используем в шаблонах YARPP, являются обычными тегами шаблона, применяющимися в любых шаблонах WordPress. Фактически, любой тег шаблона WordPress будет работать и в цикле YARPP. Вы можете использовать эти теги шаблона для того чтобы выводить на экран цитаты, дату публикации записи, счетчик комментариев, а также некоторые произвольные метаданные. Также в плагине имеются и два собственных тега шаблона, работающих только в пределах цикла YARPP: the_score () и get_the_score (). Как вы и ожидаете, они позволяют напечатать или возвратить число соответствия для конкретной записи.

Стоит отметить, что теги шаблонов других плагинов также будут работать в шаблонах YARPP. Для примера достаточно посмотреть на файл yarpp-template-photoblog.php:

<?php while ($related_query->have_posts()) : $related_query->the_post(); ?>
<?php if (function_exists('yapb_is_photoblog_post')): if (yapb_is_photoblog_post()):?>
<li><a href="<?php the_permalink() ?>" rel="bookmark"><?php yapb_get_thumbnail(); ?></a></li>
<?php endif; endif; ?>
<?php endwhile; ?>

В цикле этого шаблона YARPP мы используем теги шаблона другого плагина — Yet Another Photoblog. Если у вас установлен плагин Yet Another Photoblog, вы можете использовать эти шаблоны для отображения миниатюр связанных записей в заголовках. Заметьте, что в примере мы сначала проверяем, является ли каждая связанная запись фотографией, или не содержит ли она yapb_is_photoblog_post(), и затем используем тег шаблона yapb_get_thumbnail() для того чтобы узнать расположение миниатюры.

Шаблоны, появившиеся в YARPP 3.0, позволяют администратору блога по-новому взглянуть на настройку связанных записей.

Перевод статьи: http://mitcho.com/blog/projects/yarpp-3-templates/

Связанные материалы:

  1. Yet Another Related Posts Plugin
  2. Использование тегов шаблонов в WordPress
  3. Файлы шаблонов WordPress
  4. Стандартные виджеты
  5. Тэги включения (include) WordPress

6 комментариев

  1. функция «Делать перекрёстную перелинковку страниц и сообщений?» думал проблема исчезла, когда порог похожести с 3 на 5 перевел, но проблема появилась опять.
    Возникает проблема, дублирует в результатах вывода поста: Вот сам пост: http://times.fireg.ru/?p=1003

    Советуем прочитать:
    Скоро открытие МакДональдс (McDonald’s) в Пятигорске (6.8)
    Скоро открытие МакДональдс (McDonald’s) в Пятигорске (6.7)
    Хотя посты абсолютно одинаковые, и ссылка идет на один и тот же пост, но результаты похожести как видно разные почему-то, что за глюк? Неужели я такой один))) Что у меня за дела творятся, никто помочь не может(

  2. Нурлан says:

    А какой шаблон использовать, чтобы сделать как увас? Какие коды прописать?

    • Architect Of Ruin says:

      В настройках плагина

      до-после связанных постов:

      в первом поле

      <div style="font-family: Georgia; font-size: 20px;">Советуем также прочитать:</div><ol>

      во втором поле:

      </ol>
      

      До-после каждого связанного поста:

      <li style="margin-top:10px;">
      </li>

      До-после выдержки:

      <div style="font-family: Verdana; font-size: 10px; line-height:10px;">
      
      </div>
      

      На тот момент особо не старался, делал все атрибутами style, но в идеале лучше, конечно же, задавать id и прописывать это CSS стилями.

  3. Нурлан says:

    С html тегами все понятно, я имел виду какие php коды нужно прописывать.
    — это url поста,
    — это закаловок поста, а как прописать php код, чтобы вывести краткое описание поста?

    • Architect Of Ruin says:

      Насчет кода это вопрос к разработчикам плагина, а не ко мне. Я поставил в настройках плагина «Показывать выдержку» и настроил ее, вот и все.

  4. Нурлан says:

    Спасибо, разобрался. Нужно было поставить «Показать выдержку?».

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

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

*


Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.

Предыдущая запись:

Следующая запись: