Выпуск 29. Облако тэгов/меток/ключевых слов
Облако тэгов
Сегодня мы поговорим об облаке тэгов. Существует множество плагинов для организации такой структуры, и даже в одном из предыдущих выпусков я приводил их примеры. Я расскажу вам о плагине, с которым работаю уже достаточно давно и который хорошо себя зарекомендовал.
Плагин называется Jerome's Keywords (http://vapourtrails.ca/wp-keywords). Вы можете скачать его с сайта автора, а ниже я привожу ссылку на исправленную версию.
Что такое облако?
Для начала давайте определимся с самим термином "облако". Как мы знаем, структурировать информацию можно с помощью рубрик. Когда создается запись, то отмечается соответствующая рубрика. В дальнейшем, можно получить список всех записей в этой рубрике одним кликом. В этом случае, облаком будут служить стандарные рубрики WordPress'а, с той лишь разницей, что они выглядят в виде облака, а не списка.
Существует еще другой способ, в котором используются т.н. ключевые слова или тэги/метки (не путать с HTML!). То есть вы создаете запись, присваиваете ей рубрику, но рядышком указываете ключевые слова.
Например заметка может находиться в рубрике "Яблоки" и иметь ключевые слова "гольден, фрукты". То есть разница с рубриками в том, что тэги могут быть заданы произвольно.
В некоторых блоговых системах, например ЖЖ, рубрик вообще не существует. Вместо них используется механизм ключевых слов/тэгов.
С точки зрения навигации, рубрики всё-таки проще и удобней. Но с другой стороны, они недостаточно гибкие и для того, чтобы уточнить тематику заметки, потребуется вводить подрубрики или создавать дополнительные рубрики. Тэги же, наоборот, очень легко настраиваются, и тем самым, уточняют рубрики. На мой взгляд такое совместное использование дает достаточно эффективную навигацию.
Установка
Установка плагина происходит стандартно: копируем файл в каталог /wp-content/plugins/ и активируем в админ-панели.
После этого в текстовом редакторе у вас появится дополнительное поле, где вы сможете указывать тэги для записей.
Дальше я буду опираться на исправленную версию плагина (скачать). В ней, в отличие от авторского, я немного подправил стили, перевел на русский и добавил один дополнительный параметр для вывода.
Перед началом "экспериментов" добавьте к некоторым записям ключевые слова. В качестве разделителей используйте запятые. Еще лучше, если некоторые тэги будут повторяться в разных записях.
После этого вам нужно зайти в "Настройки - Постоянные ссылки" и нажать кнопку обновить. Это связано с тем, что навигация по ключевым словам осуществляется так же, как и ЧПУ.
Вывод меток в записях
Для того, чтобы сделать вывод меток в записях, нужно в шаблоне прописать вызов функции the_post_keytags. Сделать это нужно в цикле вывода записи, например сразу после рубрик.
<?php
if (function_exists('the_post_keytags') && (get_the_post_keytags()) )
{
echo '<span>Метки:</span> ';
the_post_keytags();
}
?>
Этим кодом мы проверяем существование функции плагина, и смотрим есть ли к этой записи метки.
Слова "метки", "тэги" и "ключевые слова" для нас сейчас синонимы.
Понятно, что оформление вы можете использвать свое. Сам код выведет метки записи в виде ссылок через запятую.
Клик на метке
Когда посетитель выбирает метку, то должна открыться страница с записями, содержащими эту метку. Скорее всего у вас не будет с этим проблем, поскольку для такого вывода используется файл шаблона index.php.
Если же это не происходит, то тут уже будет зависеть от вашего шаблона. Очень часто используют для вывода файлы archive.php или search.php. Для тех, же кто использует шаблон на основе RIONI, подскажу, что отследить вывод записей одной метки можно с помощью такого несложного кода (там где подключается main.php):
if ( function_exists('the_post_keytags') && (is_keyword()) )
require('main-tags.php');
То есть вывод записей будет осуществляться в файле main-tags.php.
Сам код ничем не будет отличаться от вывода записей рубрики или архива, разве что вы можете добавить строчку, которая отображает искомую метку:
<?php
if (function_exists('the_post_keytags') && (is_keyword()))
echo '<h1 class="search">РЕЗУЛЬТАТЫ ПОИСКА: ' . $tag . '</h1>';
?>
Код нужно добавить в начало файла до основного цикла TheLoop.
Облако
Ну вот мы и подошли к самому облаку.
Мы попробуем сделать его вывод и красивым, и удобным.
Прежде всего я предлагаю немного усложнить задачу и сделать так, чтобы в самом облаке отображались только те метки, которые присутствуют как минимум в 2-3 записях. Впрочем это число вы сможете варьировать самостоятельно. Ограничение вводится по той причине, что при большом количестве меток, облако начинает напоминать какое-то мессиво, где довольно тяжело что-либо разобрать. Ну вы знаете, как это выглядит на многих сайтах.
Поэтому в самом облаке мы сделаем ограничение, а под ним просто добавим ссылку на все теги.
Облако в сайдбаре (sidebar)
Скорее всего облако будет раполагаться в боковом меню. Хотя это совершенно не принципиально и вы можете расположить нужный код где угодно. Код для облака:
<?php
if (function_exists('all_keywords') ) {
echo '<div class="tags">';
all_keywords(
'<a href="' . get_bloginfo('siteurl') . '/tag/%keylink%"
style="font-size: 1.%count%em;">%keyword%
<span style="font-size: 8pt; color: gray;">%allcount%</span></a>',
'', // включить рубрики?
1, // минимальный масштаб
9, // максимальный масштаб
2 // минимальное кол-во записей
);
echo '<br /><a href="' . get_bloginfo('siteurl') .
'/alltags">Все метки</a>';
echo '</div>';
}
?>
Давайте разбирать этот код. Вначале мы проверяем есть ли функция плагина, и если есть, то выводим вначале элемент <div> с классом tags. После этого наступает очередь функции all_keywords.
Первый параметр задает шаблон вывода.
- %keylink% - формирует ссылку метки
- %count% - выводит "масштаб" метки (от min до max)
- %allcount% - общее количество записей с этой меткой (этот парметр я и добавил к оригинальной версии)
- %keyword% - сама метка
Для того, чтобы сформировать метки разного размера мы подставляем в style размер шрифта "масштаб метки": font-size: 1.%count%em;. То есть для минимальной метки это будет размер 1.1em, а для максимальной 1.9em.
Я напомню, что единицы изменения em являются относительными. Поэтому ими несложно манипулировать именно в таких случаях. Для того, чтобы задать базовый размер шрифта, вам следует задать его в родительском элементе.
Элемент <span> служит для указания количества записей с этой меткой. Здесь я особо не мудрствовал и сделал его фиксированного размера серым цветом.
Следующий параметр функции all_keywords "включить рубрики?" отвечает за добавление в метки обычных рубрик записей. По правде говоря, я совершенно не вижу в этом смысла, поэтому оставляем его пустым, то есть ничего не подключаем.
Параметр "минимальный масштаб" задает минимальное значение метки. Вкупе с "максимальным масштабом" мы используем эту возможность (диапазон чисел) для получения различного размера шрифта.
Вы можете упростить задачу и указать в этих параметрах минимальный и максимальный размер шрифта. Правда, тогда вам следует изменить единицы изменения с em на pt.
Последний параметр "минимальное кол-во записей" мы используем для того, чтобы отсечь непопулярные метки.
После этого мы выводим ссылку на страницу, где будут отображаться все ссылки без ограничений единым списком. Саму ссылку мы формируем вручную. Обратите внимание, что я привел её с учетом короткой ссылки будущей страницы (см. Настройки - Постоянные ссылки).
Оформление
Для оформления облака мы запишем в style.css примерно так:
div.tags {text-align: center;}
div.tags a {margin-right: 10px; line-height: 1.2em;}
То есть указываем, что в блоке осуществляется выравнивание по центру, а все ссылки этого блока будут иметь отступ справа в 10px (чтобы метки не слипались). Высота же линий - 120% от размера шрифта.
Вывод полного списка меток
Для вывода полного списка меток мы воспользуемся отдельной постоянной страницей. То есть мы сделаем отдельный шаблон и в нем разместим вывод меток.
Шаблон постоянной страницы
Если у вас есть файл page.php (если нет, то index.php), то сделайте его копию как page-alltags.php. В нем в самое начало добавим:
<?php /* Template Name: Все теги */ ?>
Дальше вам нужно будет удалить цикл вывода записей, который обычно начинается с
if (have_posts()) : while (have_posts()) : the_post();
и завершается
<?php endwhile; ?>
Вместо него мы пишем такой код:
<h1><?php the_title() ?></h1>
<?php
if (function_exists('all_keywords') ) {
echo '<ul class="tags">';
all_keywords(
'<li><a href="' . get_bloginfo('siteurl') .
'/tag/%keylink%" style="font-size: 1.%count%em;">%keyword%
<span style="font-size: 8pt; color: gray;">%allcount%</span></a></li>',
'',
1,
9,
0
);
echo '</ul>';
}
?>
Как видите, код практически полностью повторяет предыдущий, за исключением того, что мы выводим метки списком (<ul> и <li>), а также убрали минимальное ограничение - последний параметр равен нулю.
Постоянная страница
Завершающим аккордом станет создание страницы на основе созданного шаблона. Входим в админ-панель, выбрираем закладку Написать - Создание страницы. Вводим заголовок, в поле "Короткая ссылка" пишем alltags, а в качестве шаблона страницы выбираем "Все тэги".
Жмем "Опубликовать". Всё остальное будет сделано автоматом.
Подпишитесь на рассылкуИспользуем WordPress для создания своего сайта
и получайте её на e-mail раньше всех!
Постоянная ссылка: http://maxsite.org/?p=240
Версия для печати
