Облако тегов на PHP в Movable Type 4

Movable Type стала одной из первых платформ, в которой появились теги. Случилось это ещё в третьей версии. А в четвёртой версии теги можно добавлять не только к записям, но и к загружаемым файлам или страницам. Но, как и в предыдущей версии MT, так и в текущей, функциональность тега MTTags не до конца продумана.

В третьей версии можно было выводить список всех (!) тегов, исключая возможность ограничения количества. По идее должно было получиться облако. Когда тегов становилось много, облако превращалось в тучу и занимало большую часть экрана. Тогда на помощь пришло решение на PHP, которое позволяло отображать облако с тегами, ранг которых был равен или меньше 4.

В четвёртой версии добавили возможность устанавливать количество отображаемых тегов, а также их сортировку по рангу. То есть стало возможно показать на сайте облако, в котором будет 50 самых популярных тегов. Сколько тегов будет в облаке — каждый, конечно, решит сам, но появление такой возможности порадовало меня. Но вот незадача: при сортировке по рангу теги так же и отображаются — чем популярней тег, тем он выше, или наоборот. Простой пример:

Облако тегов на MT.ru

Это совершенно не годится, так как визуальное восприятие такого облака не вызывает должного желания кликнуть по ссылке. Поэтому необходимо прибегнуть к помощи PHP.

Создаём нормальное облако тегов

  1. Самое первое, что необходимо — сделать расширение файлов .php. Для этого перейдите в настройки блога, а затем во вкладку «Publishing». И возле пункта «File Extension for Archive Files» впишите «php» (без точки в начале). После этого все архивы (посты, категории, страницы, архивы по датам) будут публиковаться с новым расширением. Но некоторые индексные файлы, например, Main Index и Archives, останутся с прежними расширениями. Поэтому необходимо перейти в раздел Templates и вручную указать расширение для этих шаблонов.
  2. Далее необходимо создать индексный шаблон (назовём его TagsCloud, с именем публикуемого файла tagscloud.php), который будет публиковаться автоматически, со следующим содержимым:
    <?
      $tagslist = array(<MTTags limit="50" sort_by="rank" glue=", ">"<$MTTagName$>" => <$MTTagRank max="10"$></MTTags>);
      ksort($tagslist);
      reset($tagslist);
      while (list($tag, $tagsize) = each($tagslist))
      {
       echo '<a href="http://example.com/tag/'.rawurlencode($tag).'" class="t'.$tagsize.'" rel="tag">'.$tag.'</a>';
       echo "\n";
       }
    ?>
    Скачать пример с комментариями.
  3. Чтобы шаблон TagsCloud отображался на других страницах сайта, его нужно включить в эти страницы. Делается это с помощью функции include в PHP:
    <? include ("/home/user/example.com/template-path/tagscloud.php");  ?>

    Если у вас стандартные шаблоны, то эту строчку необходимо поместить в шаблон сайдбара («Sidebar (3-column)» или «Sidebar (2-column)»). Найдите в одном из этих шаблонов код <MTTags limit="20" sort_by="rank">, завершающийся </MTTags>, удалите её и замените строчкой из третьего пункта. Обратите внимание, что у каждого свой путь на сервере, его нужно узнать самостоятельно, заглянув в настройки публикации блога.

 Ну вот  и всё, теперь у вас должно быть нормальное облако тегов, вроде этого:

Облако тегов на ProBlog.ru

Ссылки по теме

  • Everybody loves tags!
    Смотрим пункт «Beautifying the tag search link URLs» и узнаём, как сделать красивые URL для тегов.

Комментариев: 5

Сортировку тэгов по имени в MT 4.1 можно сделать легче:
Для сортировки тэгов по имени в "Облаке тэгов" Movable Type 4.1 надо отредактировать стандартный виджет "Tag Cloud", заменив "rank" в строке на "name", в итоге получаем .
http://holygun.ru/blog/2008/03/-mt.html

Если отсортировать по name, при этом задав лимит по количеству тегов, то вполне вероятно, что самый популярный тег не попадёт в облако.

Понятно ;) У меня Ваш способ не прошел, была ошибка типа mismatched {/mttags} в Smarty.

У вас включена динамическая публикация?

Статистика

Яндекс.Метрика

Последние записи

  • Movable Type 4.38 и Movable Type 5.14

    Состоялся релиз новых версий Movable Type — 4.38 и 5.14, в которых устранили проблемы безопасности. В пятой ветке добавили новую функциональность, благодаря которой движок будет...

  • Facebook, Google +1, Twitter, ВКонтакте — как добавить кнопки этих сервисов

    Периодически в форуме и других местах возникают вопросы, как добавить кнопки различных социальных сетей и сервисов к своему блогу и нужны ли для этого какие-нибудь...

  • Movable Type на GitHub: что происходит и что будет

    В конце мая я сообщил, что Movable Type полностью перебрался на GitHub, что позволило быстрее обновлять дистрибутив. Кроме того, все изменения, которые есть в русской...

  • Movable Type 4.37 и 5.12

    Разработчики всерьёз взялись за поиск и устранение возможных уязвимостей (о чём они объявили в Пронете), поэтому встречайте новый релиз обеих веток. При определённых обстоятельствах пользователь,...

  • Movable Type 4.361 и Movable Type 5.11

    Вышло обновление сразу для двух веток Movable Type, включающее исправление проблем с безопасностью (при определённых условиях посторонний человек мог читать, создавать или изменять контент в...

Закрыть