Ранее был рассмотрен вопрос тегирования сайта, вывода тегов в статьях и создание отдельных страниц для каждого тега, сегодня рассмотрим пример создания облака тегов с указанием количества использования каждого тега.
При реализации облака тегов в MODx используется компонент pdoTools, создайте новый сниппет, назовите его Tagscloud
, вставьте в него следующий код:
<?php $pdo = $modx->getService('pdoFetch'); $where = array( 'tmplvarid' => 2 // ID дополнительного поля (TV) ); // Получает все ресурсы, где используются теги $tvs = $pdo->getCollection('modTemplateVarResource', $where); if (!empty($tvs)) { $tagsID = array(); foreach ($tvs as $k => $tv) { // Для разделения ID тегов используется || // если Вы используете другой, то укажите его $tagsID = array_merge($tagsID, explode('||', $tv['value'])); } if (!empty($tagsID)) { // Подсчитывает сколько раз был использован тег foreach ($tagsID as $id) { $count[$id]++; } $parameters = array( 'parents' => 6, // ID - корнего раздела с тегами 'depth' => 0, // не искать в дочерних элементах 'resources' => implode(",", $tagsID) // список ID тегов для выборки ); // Получает данные ресурсов (тегов) $tags = $pdo->getCollection('modResource', null, $parameters); if (!empty($tags)) { foreach ($tags as $tag) { $tag['count'] = $count[$tag['id']]; $output .= $pdo->getChunk('@INLINE [[+menutitle:empty=`[[+pagetitle]]`]] ([[+count]])', $tag); } return $output; } } }
Осталось в нужное место шаблона сайта вставить:
[[Tagscloud]]
Комментарии ()