Textpattern. Иерархический список категорий.

Для вывода иерархического списка категорий в CMS Textpattern я пользовался плагином stw_category_tree. Это было лучшее, что я смог найти для вывода списка категорий почти так, как мне надо. Из того что мне так и не получилось сделать при помощи этого плагина: выделение текущих категорий статьи (когда открыта статья) и сортировка списка категорий по алфавиту. По сортировке поясню: я использую Multi-Lingual Publishing Pack для нескольких языков на сайте, и stw_category_tree выводит список категорий только в одном порядке. Этот порядок определяется по названиям категорий (отображаются в URL и всегда записываются латинскими символами), а не по заголовкам категорий, которые отображаются на страницах сайта.

Через некоторое время использования плагина была выявлена более существенная проблема, смириться с которой я не мог. Это было число запросов к БД, которые выполнялись плагином. Для вывода сравнительно небольшого дерева категорий плагину требовалось выполнить около 30 запросов к БД!

В результате я написал плагин own_category_tree очень похожий по используемым атрибутам на плагин stw_category_tree, но немного упрощенный. И самое главное для вывода дерева категорий плагину достаточно выполнить всего один запрос к БД!

Плагин принимает следующие атрибуты:

  • start – с какого узла выводить дерево категорий;
  • section – используется, если необходимо переопределить секцию;
  • type – определяет, какой тип категорий следует использовать (‘article’, ‘image’ или ‘link’). По-умолчанию используется ‘article’;
  • cssid – определяет свойство id которое будет присвоено самому вышестоящему тегу ul;
  • onclass – определяет свойство class, которое будет присвоено для текущей выбранной категории;
  • wraptag – тег, вовнутрь которого помещается один уровень иерархического списка. Может использоваться ul или div. По-умолчанию ul;
  • break – разделительный тег для каждого элемента списка. Может использоваться br, hr, li. По-умолчанию li.

Плагин строит дерево категорий следующим образом. В режиме отображения списка статей, если не выбрана категория, выводит список категорий 1-го уровня (так будем называть категории, у которых «родитель» root или заданный при помощи атрибута start). Если категория выбрана, то плагин выводит список 1-го уровня и выводит ветвь дерева категорий, на которой находится выбранная категория. Причем ветвь отображается до выбранной категории плюс один уровень вглубь, если конечно таковой имеется. Аналогично выводится список категорий и при просмотре статьи, только вместо выбранной категории используются категории статьи.

Ну и дополнительный бонус – список категорий теперь выводится в отсортированном виде.

Плагин доступен для скачивания на странице проекта на GitHub.


Комментарии

  1. (#)   Андрей:

    Здравствуйте,

    подскажите пожалуйста – как сделать сортировку не по имени а по id категории? благодарю заранее :)


Оставить комментарий

Ответ на Textpattern. Иерархический список категорий.