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

    Состоялся релиз новой версии Movable Type 5.27, основные изменения которого: Новая адаптивная тема «Eiger». Для редакции Pro и Advanced доступен плагин «Smartphone Option», благодаря которому...

  • Автоподстановка тегов в Movable Type

    Не знаю, как для вас, а для меня стало открытием, что в Movable Type работает автоподстановка тегов на кириллице — для этого достаточно ввести первые...

  • Movable Type 5.2.3

    Сегодня состоялся релиз новой версии Movable Type 5.2.3. Изменение всего одно — если в параметрах MySQL было разрешено 20 или менее соединений (max_user_connections), то Movable...

  • Movable Type на PSGI и nginx

    В Movable Type 5.2 появилась встроенная поддержка PSGI. В связке с nginx это даёт значительный прирост производительности — страницы открываются не просто быстро, а невероятно...

  • Патч для Movable Type 4.38, устраняющий проблему безопасности

    В Movable Type версий 4.2 и 4.3 обнаружена уязвимость в скрипте обновления. Вчера разработчики выложили обновлённый скрипт, устраняющий эту проблему. Для устранения уязвимости достаточно загрузить...

Закрыть