Плагин добавляет на страницу вывода записей по метке зависимые метки.
Зависимые метки определяются как все метки у записей с этой меткой.
Это выглядит так:

Для работы плагина необходимо создать ушку 'tag-do-pages' с кодом php:
<?php
$slug = mso_segment(2);
if ($slug and function_exists('tags_tree_get')) echo tags_tree_get($slug);
?>
Вот как должно быть:

Возможно необходимо было бы автоматически создавать ушку, как описано в статье "Авто-обновление ушек MaxSite CMS".
Код функции tags_tree_get плагина очень простой:
// получим дочерние метки для этой метки
function tags_tree_get($tag='')
{
if (!$tag) return '';
$cache_key = 'tags_tree_get_' . $tag;
$out = mso_get_cache($cache_key);
// if ($out) return $out;
// получим страницы текущей метки
if (!$tag) return array();
$par = array(
'no_limit' => true, // нам нужны все записи
'type' => false, // любой тип страниц
'custom_type' => 'tag', // запрос как в home
'work_cut'=>false,
'content'=>false
);
$tag_pages = mso_get_pages($par, $pagination); // получим все - второй параметр нужен для сформированной пагинации
// получим метки страниц
$tags_array = array(); // здесь будет массив вида метка => кол-во
if ($tag_pages) // есть страницы
{
foreach ($tag_pages as $cur_page)
{
foreach ($cur_page['page_tags'] as $cur_tag) // находим общие метки
{
if ($tag==$cur_tag) continue;
if (!isset($tags_array[$cur_tag])) $tags_array[$cur_tag]=1;
else ++$tags_array[$cur_tag];
}
}
}
$tags_list = '';;
if ($tags_array)
{
arsort($tags_array);
foreach ($tags_array as $cur_tag=>$value)
{
$tag_link = '<a href="' . getinfo('site_url') . 'tag/' . $cur_tag . '">' . $cur_tag . ' (' . $value . ')' . '</a>';
if ($tags_list) $tags_list .= ', ' . $tag_link;
else $tags_list .= $tag_link;
}
$tags_list = $tag . ' -> ' . $tags_list;
}
mso_add_cache($cache_key, $tags_list);
return $tags_list;
}









