Облако тегов на 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.32

    Новая версия Movable Type, в которой уже обновлён плагин Яндекс.OpenID, а также добавлен плагин Zemanta доступна для скачивания: В zip-архиве; Или в tar.gz-архиве. Изменения в...

  • Яндекс.OpenID 1.1

    Плагин Яндекс.OpenID, уже включённый в дистрибутив русской версии Movable Type, обновился до версии 1.1. Что изменилось: Авторизация в один клик — не нужно вводить логин....

  • Интересное в блогосфере про Movable Type #8

    Очередная подборка плагинов, хаков и шаблонов. Template Performance Profiler — плагин для анализа производительности шаблонов и генерации различных отчётов. User Export — плагин для экспорта...

  • Movable Type 5: первая бета, первый взгляд

    Около 2 месяцев назад разработчики MT объявили, что начали работать над Movable Type 5. И предлагали нам высказать свои предложения, что хотелось бы видеть в...

  • Ваш сайт на странице Wiki

    В Wiki MT.ru уже давно существует страница, где представлены интересные блоги и сайты на Movable Type. Взгляните на эту страницу, может, ваш сайт уже присутствует...

Закрыть