Теги
Модуль относится к части CMS «Контент» и может быть установлен опционально.
Модуль «Теги» подключается к другим модулям. В стандартной комплектации DIAFAN.CMS «Теги» подключены к следующим модулям: Фотогалерея, Новости, Статьи, Вопрос-Ответ, Магазин, Файловый архив. Включение тегов в рамках модуля настраивается в конфигурации конкретного модуля.
Подключение
Подключаемая часть – файл modules/tags/tags.inc.php. В нем описан класс
Tags_inc. В модуле к объекту класса можно обратиться через переменную $this->diafan->_tags
. Экземпляр класса создается при первом вызове
переменной.
Методы
string|boolean false get ([integer $element_id = 0], [strint $module_name = ''], [string $element_type = 'element'], [integer $site_id = 0]) – Выводит подключенные к элементу тэги.
- integer $element_id: номер элемента, к котором прикреплены теги, по умолчанию текущий элемент модуля
- strint $module_name: название модуля, по умолчанию модуль, прикрепленный к текущей странице сайта
- string $element_type: тип данных
- integer $site_id: страница сайта, к которой прикреплен элемент, по умолчанию текущая страница сайта
Пример:
// получаем теги статьи в файле modules/clauses/clauses.model.php
$tags = $this->diafan->_tags->get($id, 'clauses');
// выводим теги в шаблоне модуля в файле modules/clauses/clauses.view.php
echo $tags;
void prepare ([integer $element_id = 0], [strint $module_name = ''], [string $element_type = 'element']) – Запоминает данные элемента, которому нужно будет вывести теги.
- integer $element_id: номер элемента, к котором прикреплены теги, по умолчанию текущий элемент модуля
- strint $module_name: название модуля, по умолчанию модуль, прикрепленный к текущей странице сайта
- string $element_type: тип данных
Пример:
// в этом примере будет выполенено три SQL-запроса к базе данных для получения тегов ко всем заданным статьям
$ids = array(3, 5, 7);
foreach($ids as $id)
{
$tags[$id] = $this->diafan->_tags->get($id, 'clauses');
}
Пример:
// в этом примере будет выполен один SQL-запрос к базе данных для получения тегов ко всем заданным статьям
$ids = array(3, 5, 7);
foreach($ids as $id)
{
$this->diafan->_tags->prepare($id, 'clauses');
}
foreach($ids as $id)
{
$tags[$id] = $this->diafan->_tags->get($id, 'clauses');
}
void delete (integer|array $element_ids, strint $module_name, [string $element_type = 'element']) – Удаляет теги для одного или нескольких элементов.
- integer|array $element_ids: номер одного или нескольких элементов
- strint $module_name: название модуля
- string $element_type: тип данных
Пример:
// удалит теги, прикрепленные к статьи ID=3
$this->diafan->_tags->delete(3, 'clauses');
// удалит теги, прикрепленные к статьям ID=3,4,5
$this->diafan->_tags->delete(array(3, 4, 5) 'clauses');
void delete_module (string $module_name) – Удаляет все теги модуля.
- string $module_name: название модуля
Пример:
// удалит теги, прикрепленные ко всем статьям
$this->diafan->_tags->delete_module('clauses');
Как добавлять теги к модулю
В конфигурации модуля (modules/модуль/admin/модуль.admin.config.php) и в
файле редактирования элементов модуля
(modules/модуль/admin/модуль.admin.php) необходимо добавить параметр
'tags'
:
Пример:
public $variables = array(
'main' => array(
'tags' => 'module',
…
),
…
);
Страница тега в пользовательской части выводит список элементов
других модулей, к которым тег подключен. Данные об элементах модуля оформляются так же, как в списке элементов этого модуля.
Для этого данные обрабатываются функцией elements()
из модели модуля modules/модуль/модуль.model.php и выводятся шаблоном modules/модуль/views/модуль.view.list.php.
Можно задать свою обработку данных для списка элементов, прикрепленных к тегу. Для этого нужно определить функцию tags()
в файле modules/модуль/модуль.model.php.
Пример:
Так обработка данных о прикрепленных к тегу товарах идет через функцию tags()
в файле modules/shop/shop.model.php.
А обработка данных о прикрепленных к тегу новостях идет через функцию elements()
в файле modules/news/news.model.php, так как функцию tags()
в этом файле не описана.
Шаблон также можно применить отличный от шаблона по умолчанию. Для этого достаточно создать файл modules/модуль/views/модуль.view.list_tags.php.
Пример:
Товары оформляются на странице тега шаблоном modules/shop/views/shop.view.list_tags.php.
А новости оформляются также, как в списке новостей шаблоном modules/news/views/news.view.list.php.
Описанные выше особенности относятся только к элементам модулей (новости, товары, статьи и пр.). Страницы сайта выводятся стандатным шаблоном modules/tags/views/tags.view.list.php.
Административная часть
В административной части модуля собираются все теги в одну таблицу, но при редактировании конкретного элемента модуля, к которому подключены теги, можно редактировать теги к нему. Теги можно сортировать по принадлежности к отдельному элементу.
При удалении какого-либо элемента удаляются все теги, прикрепленные к нему.
Теги имеют следующие характеристики.
Настройки
Шаблонные теги
Для работы с модулем «Теги» служат следующие шаблонные теги:
show_block – выводит список тегов.
Атрибуты:
— defer – маркер отложенной загрузки шаблонного тега: event – загрузка контента только по желанию пользователя при нажатии кнопки "Загрузить", emergence – загрузка контента только при появлении в окне браузера клиента, async – асинхронная (одновременная) загрузка контента совместно с контентом шаблонных тегов с тем же маркером, sync – синхронная (последовательная) загрузка контента совместно с контентом шаблонных тегов с тем же маркером, по умолчанию отложенная загрузка не используется, обычный вывод шаблонных тегов в коде страницы;
— defer_title – текстовая строка, выводимая на месте появления загружаемого контента с помощью отложенной загрузки шаблонного тега;
— template – шаблон тега (файл modules/tags/views/tags.view.show_block_template.php; по умолчанию шаблон modules/tags/views/tags.view.show_block.php).
Пример:
<insert name="show_block" module="tags">
выведет облако тегов
В шаблоне тега можно получить значение любого атрибута через переменную $result["attributes"]["название атрибута"]
.
База данных
{tags} – Связи тегов и элементов модулей
{tags_name} – Теги
Файлы
Модуль находится в папке modules/tags.
modules/tags/admin/js/tags.admin.inc.js – редактирование тегов, JS-сценарий;
modules/tags/admin/js/tags.admin.js – редактирование тегов, JS-сценарий;
modules/tags/admin/tags.admin.php – редактирование тегов;
modules/tags/admin/tags.admin.action.php – обработка POST-запросов при работе с тегами в административной части;
modules/tags/admin/tags.admin.config.php – настройки модуля;
modules/tags/admin/tags.admin.inc.php – подключение модуля к административной части других модулей;
modules/tags/admin/tags.admin.view.php – шаблон вывода тегов в административной части;
modules/tags/tags.php – контроллер;
modules/tags/tags.inc.php – подключение для работы с тегами;
modules/tags/tags.install.php – установка модуля;
modules/tags/tags.model.php – модель;
modules/tags/tags.sitemap.php – карта ссылок для модуля «Карта сайта»;
modules/tags/views/tags.view.get.php – шаблон списка прикрепленных к элементу тегов;
modules/tags/views/tags.view.list.php – шаблон списка элементов, к которым прикреплен тег;
modules/tags/views/tags.view.rows.php – шаблон списка элементов, к которым прикреплен тег;
modules/tags/views/tags.view.rows_block.php – шаблон облака тегов;
modules/tags/views/tags.view.show_block.php – шаблон облака тегов.
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.
Ваш комментарий будет первым.