Выпуск 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, а в качестве шаблона страницы выбираем "Все тэги".
Жмем "Опубликовать". Всё остальное будет сделано автоматом. ![]()
- Выпуск 6. Основы HTML. Оформление текстов
- Выпуск 19. Оптимизация WordPress
- Выпуск 14. Многоязыковые версии блога
- Выпуск 9. Основы PHP
- Выпуск 16. Сервис блогов. Единый файл шаблона
- Выпуск 10. Блог-клиент. Поиск. Полезные плагины
- Выпуск 2. Установка
- Выпуск 30. Используем произвольные поля в WordPress
- Выпуск 7. Оформление текстов с помощью HTML
- Делаем статический сайт! Шаблоны страниц
- Выпуск 24. Делаем собственный шаблон
- Выпуск 8. Оформление текстов с помощью HTML (окончание)
- Кеширование в WordPress
- Выпуск 18. Подключаем статистику Google
- Выпуск 27. Делаем собственный шаблон для WordPress (часть 4)


А "Короткую ссылку" можно указать любую или только alltags?
и конечно же респект за полезный мануал:cool:
Не принципиально. Можно использовать любую. Главное, чтобы ссылка на все метки вела на эту страницу.
Отличное пособие тем, кто не может читать/понимать англицкий
Максим, а какие подскажешь дополнительные навигационные плагины?
Сейчас у нас на блоге реализовано так: - сбоку обычные рубрики, обновляющийся титул, с уползающей лентой
и подборка новостей по платформам.
но получается, что не все новости доступны с 2-х 3-х кликов, что важно для индексации. Посоветуй как лучше поступить в этом случае
Простите, а в каком именно файле?
Понял, дошёл сам... В index.php, конечно же :oops:
Хотя, смотря у кого какой шаблон. И ещё, нельзя ли сделать так, чтобы по клику на метку не выводились полностью найденные записи, а только названия их?
Добавление любого комментария стирает метки. Не пойму в чем дело. Посмотреть и проверить можно здесь http://www.schizopolis.ru/
Небольшой уточняющий вопрос. У меня при клике на метку выдает страницу index (там видны части кода от комментариев - не красиво), а я хотел бы чтобы выдавалась страница archive. Подскажите, куда смотреть, что изменить.
Это зависит от вашего шаблона. Для того, чтобы проверить тип страницы используйте функцию is_keyword(). Она возвращает true, если это метка.
Максим, спасибо. Подскажите куда смотреть что бы разобраться с тем, что добавление любого комментария стирает метки. Проблема шаблона?
Страницу выдачи с index на archive я поправил.
Если бы знал, подсказал.
Достаточно специфичная проблема. Попробуйте внедрить код в default и посмотреть как там. Если все нормально, то нужно смотреть шаблон.
Максим, в default все тоже самое. Возможно это сказано как-то с правами на запись файлов. Может в .htaccess что подправить?
Нет, в этом вряд ли дело. Может плагин какой-то перебивает. Сложно сказать.
Максим, посоветуй, пожалуйста, другой плагин с аналогичной функциональностью. .
Максим, у меня тоже при добавлении комментария теги исчезают :???:
WP2.2.1, стоят плагины:
Yet Another Random Quote
WPG2
WP-PostRatings
wp-icq-status
wp-cache
wordTube
WordPress Database Backup
Time Since
RusToLat
Russian Date (utf-8)
Lightbox 2.02 Plugin
Latest Comments
Jerome's Keywords
ImageManager
Gravatar
Advanced TinyMCE Editor
Admin Drop Menus
Кстати, http://wordpress.org/extend/plugins/tag-functions/
в 2.3 версии и выше обещают нативные теги без шаманства
Да, забавно. Мами метки хранятся в метаполях, поэтому там ломаться просто нечему. Попробуйте в самом начале файла изменить строчку
define('KEYWORDS_META', 'Метки');
на
define('KEYWORDS_META', 'metakey');
Может быть проблема связана с русским названием метаполя. Но вообще, я бы всё-таки поотключал по одному плагины и проверил как это повлияет.
перепробовал все. и переименовал МЕТКИ и плагины все отключал.
не помогло
Также попробовал редактировать дефолтную тему. тоже самое :(
зато разобрался с плагином
http://trac.herewithme.fr/project/simpletagging/
кстати русифицировать его буду на русский на днях, выложу у себя (если надо кому)
только как в нем сделать чтобы высвечивалось также количество тегов?
У меня тоже проблема с исчезновением тэгов после добавления комментариев. Плагин конечно хороший поэтому хотелось бы все-таки найти решение этой проблемы. Может есть еще какие-то предположения?
FreZZey
У меня есть предположение, что плагин просто не совместим целиком с новыми версиями WP (плагин давно не обновлялся и указана совместимость до 2.0.х)
Не понимаю... Проверял плагин на WordPress 2.0.10 и на 2.2.1. Ничего не теряется.
:???:
Максим, я уже перевел около 80% плагина Simple Tagging и он мне показался намного более мощным и удобным в использовании. в чем изюминка именно того?
Просто так исторически сложилось.
В Jerome's Keywords все просто - его несложно интегрировать в шаблон и прописать параметры при вызове функции. В Simple Tagging многое вынесено в админ-панель, мне кажется это лишним. Но думаю, что здесь, конечно же, нужно как следует поработать и посмотреть все нюансы использования.
Если вы выложите руссифицированный плагин в свободный доступ, то я мог бы попробовать сделать выпуск рассылки и для него. Думаю, что многим он будет полезен.
Максим, ок. ближе к понедельнику
PS а по какому часовому поясу показывается время тут на сайте? у нас сейчас 01-22, а время прошлого поста 20-35 прошлого дня
Готово! Прошу любить и жаловать
100% Русификатор + подробная инструкция по установке и интегрированию в тему
http://lecactus.ru/blog/2007/06/24/480
Разрешаю использование с сохранением ссылки на оригинал :idea:
Эх, я обрадовался, а оказалось, что перевод отдельно сделан :( Надеялся, что он будет внутри файла. :oops:
нет нужной локали на сервере?
в принципе можно и перевести внутри плагина
Для моей сборки локаль не нужна, поскольку перевод выполнен прямо в файлах. Перевода плагина это его админ-панель, поэтому нет сысла грузить еще и файлы .mo каждому посетителю.
Максим, нужна помощь.
WP 2.2.1, плагины:
1) RusToLat
2) Get Custom Field Values
3) Embedded Video with Link
При добавлении комментария метки удаляются. Ничего не помогает. На свежеустановленном WP 2.2.1+default без плагинов та же проблема. Есть какие-нибудь мысли по этому поводу? Очень уж плагин понравился. :???:
Я считал что во внешних файлах перевод более правильный
ЗЫ уже интегрирую его в сам плагин. Выложу интегрированный перевод там же.
Готово! Скачать полностью русифицированный плагин можно там же на странице http://lecactus.ru/blog/2007/06/24/480/
Отдельный перевод тоже остался.
Отлично! Иван, только нужно бы заменить слова «разделы» на «рубрики». А то не понятно, что имеется в виду.
сейчас исправклю
Исправления внес. Архив тот же
Просто у меня в сайдбаре я называл "Рубрики" Разделами и в мозгу автоматически это запомнилось
))
ЗЫ отдельный языковой модуль тоже пофиксен если нужен кому то, и на самом деле я сам недавно столкнулся с языковой проблемой... http://lecactus.ru/blog/2007/06/18/464/
Так что перевод внутри файла надежнее, но не гарантирует внесение багов. Пока вносил изменения в оригинальный код то столкнулся с глюками использвания знака \ возле кавычек ' и ". в PO файле они были одного вида, а в коде плагина по другому. Но быстро разобрался и пофиксил.
внесены дополнения в инструкцию
Спасибо, Максим. Давно хотел себе
А это облако тегов и так далее закрыто к индексации? во избежание дублирования контента.
или через роботс закрывать все ссылки с /tag/
А есть более подробная инструкция по установке? Я что-то не понял как ставить.
А облако не работает на страницах поста? добавляю в синг.пхп, а оно не отображается.
DARKMAN
если оно отображается списком то может стили оформления перекрывают?. копать попробуй в style.css в пунктах LI и UL
или вынеси в отдельный ...
blastmasta
вроде бы тут достаточно подробно. ничего сложного не было когда пробовал ставить. а второй плагин пробовали ставить про который я писал?В отношении Simple Tagging. Как человек, имеющий отношение к SEO, могу сказать, что использование данного плагина приведет к появлению в индексе ПС ровно такого количества страниц с названием вашего блога, сколько вы сотворите тегов. Это плохо. По этому предлагаю всем, кто пользуется именно Simple Tagging небольшой салюшен.
Все очень просто. header.php
-Таким макаром я вывожу в заголовке страницы название текущего тэга.
Пример: http://interner.ru/index.php/tag/Google
Чего-то код не прошел...
-Tarry, плохо ты имеешь отношение к сео
))
я просто закрыл в роботс.тхт индексировать ссылки типа /tag/ и /alltags/
Дорогой гуру СЕО DARKMAN!
Может ты не в курсе, но вот Гуглу пофигу роботс. Посмотрика сюда:
При том, что:
User-agent: *
Disallow: /yandsearch
Ну и потом, зачем закрывать от робота то, принесет пользу?
Код нужно оформлять в виде html-спецсимволов.
Это я в курсе, просто привык, что теги сами закрываются
Таки вот что я имел ввиду:
»Tarry, что принесёт пользу? Десятикратное или более дублирование контента на сайте? 95% из которого гугл добавит в suplemental results? Ну и на роботс.тхт ему ОЙ КАК НЕ ПОФИГ, дорогой гуру Tarry.
))))))))))))))) где ты такой бред прочитал?
DARKMAN: О каком дублировании вы говорите? Подумайте, внимательно, что выдается при клике по тегу и при переходе в категорию или при выводе отдельного поста...
На счет роботса и гугла, думайте, как вам будет угодно. Вы тоже наверное много книжек прочитали...
Логично подумай - почему это гугл не должен хавать роботс? а если я не хочу что бы индексировался мой сайт? что делать? позвонить им?? или написать на мыло? или не хочу что бы отдельная папка индексировалась на сервере? т.е. папка /tag/в данном случае. хоть она и виртуальная.
что выдается при клике и переходе в категорию - теже посты что и обычно. Может у кого как настроено, но у меня выводится везде полное содержание постов. Соответсвенно по двум разным адресам (а с тегами этих адресов может быть и 10) будет одинаковый контент. А гугл не любит дублирование
ему нужен эксклюзив. И книжки читать необязательно что бы знать про это.
В итоге в кеше вашего сайта на гугле оказывается 10 одинаковых страниц (с одинаковым контентом) и лиш одна из низ является главной. и чем больше вот этого мусора, который попадает в саплементал резалтс, тем ниже рейтинг вашего сайта/блога/форума. И тем ниже вы по запросам в выдаче. В общем я не собераюсь Вам что-либо здесь доказывать лишь трачу свё время. Вперед
) пусть вас индексирует гугл с открытыми для индексации тегами
)
по-поводу роботс. Наверное, лишь Вы только знаете что гугл не хавает его.
http://www.google.com/robots.txt
http://www.google.com/support/webmasters/bin/topic.py?topic=8843
это так, для красоты там
))
Peace, Дружище
Такая же фигня
А как код для скина оформить ввиде видгета?
Спасибо за мануал.
Возник только один вопрос, возможно ли как нибудь исправить адрес "русской" метки, т.е. чтоб он был прописан английскими буквами.
Сейчас это выглядит так:
http://site.ru/tag/ссылкиХотелось бы что то вроде этого:
http://site.rr/tag/ssilkiЗаранее спасибо за ответ.
Нет не получится. Но вообще такие адреса (не английские) браузер должен автоматом преобразовывать из спецсимволов в обычный текст. Насколько я знаю, то в FireFox для этого есть специальный плагин. Ну а в строке-подсказке (статусная строка), отображается и так все верно.
sergey, в правильных браузерах (Опера) все ссылки пишутся нормально по русски :smile:
Поправить ручками:mrgreen: А лучше изначально на английском, тогда ни с какими браузерами проблем не будет:smile:
А так и непонятно осталось, почему же метки после добавления комментария стираются?
Вышла новая версия 1.6.8 плагина SimpleTagging
В официальный дистрибутив теперь включены мои PO-MO файлы русского языка. Исправлены баги с отображением количества тегов в облаке при наведении курсора мыши, добавлен еще один файл настроек и шаблон для Wordpress Mu.
Ну а полностью переведенную обновленную версию (без языковых файлов) вы уже можете скачать у меня с прежней страницы
http://lecactus.ru/blog/2007/06/24/480/
Страница обновлена, проставлены ссылки как на новую так и на предыдущую версию :wink:
Lecactus, спасибо за русик
Нашел решение, чтобы комментарии не исчезали, кому надо - смело берем здесь
Для тех, кто в английском и в ПХП вообще "0" - открываем файлик "jeromes-keywords.php", находим в нем функцию "keywords_update" и меняем вместо старой на новую (взять новую по вышеуказанной ссылке можно)
У меня сразу все стало нормально!:smile:
Протестировать можно на моем блоге путешествий и туризма
Кстати, Максим, может ты сразу эту функцию заменишь и у себя в исходниках... реально у меня после комментов слетало - теперь нет! :cool:
Всем удачи!
Скачал jeromes-keywords, установил, делал всё по инструкции. Облако тэгов есть в сайдбаре. Когда нажимаю на любой тэг, просто обновляется главная страница. Когда нажимаю все тэги, так же отображается главная старница, но с адресом /alltags. Создал старницу всех тэгов, как написано в заключении, зачем она? та ссылка которая всайдбаре под тэгами не ведёт к этой странице. Но даже на этой странице при нажатии на любой тэг-слово, обновляется главная страница. Помогите пожалуйста.:eek:
Скорее всего нужно обновить пермалинки.
Не ужели до сих пор нету нормального плагина "облако тегов" на русском языке?
Автору большое спасибо, давно хотел реализовать такое облако тегов на wordpress, вроде все получилось делал по инструкции. Но больше все го на сайте мне у Вас нравятся смайлики, как их можно сделать?:smile: