Мы покажем внедрение тегов на примере раздела новостей.
Перейдите в компонент и добавьте новое поле «Теги».
Обратите внимание на формат, его нужно выставить как показано на рисунке. Теперь нужно добавить функционал по сохранению тегов в базу.
Перейдите на вкладку «Шаблоны действий». Для добавления тега при добавлении новости, редактировании её и удалении необходимо добавить следующие методы:
$nc_tags->add_message($calalogue,$sub, $cc, $classID, $message);
$nc_tags->update_message($calalogue,$sub, $cc, $classID, $message);
$nc_tags->drop_message($calalogue,$sub, $cc, $classID, $message);
Пример заполненного поля:
Обратите внимание на служебные операции. Перед добавлением методов модуля мы рекомендуем сгенерировать дефолтные коды действий и вставлять метод до или после.
В поле «Системные настройки» необходимо добавить инициализацию нового объекта класса тегов:
$nc_tags = new nc_tags();
и ниже строку:
if($tags_messages) $query_where = "(a.Message_ID IN (".$tags_messages."))";
это позволит фильтровать выводимые сообщения по прикреплённым к ним тегам.
Для вывода списка тегов добавьте следующую строку в нужное вам место (в списке объектов либо на странице просмотра объекта):
<?=listQuery("SELECT a.Tag_ID, b.Tag_Text FROM Tags_Message AS a LEFT JOIN Tags_Data AS b ON a.Tag_ID=b.Tag_ID WHERE Sub_Class_ID=$cc AND Message_ID=$f_RowID GROUP BY a.Tag_ID", "<a href='/tags/?tag=\$data[Tag_ID]&tagcc=$cc'>\$data[Tag_Text]</a> "); ?>
Далее блок с облаком тегов можно вывести в сайдбаре, футере и т. д.
Облако тегов можно вывести относительно компонента раздела, относительно раздела и всего сайта. Облако тегов относительно раздела выведет информацию, относящуюся только к конкретному разделу, а облако тегов относительно сайта выведет информацию со всего сайта.
Стоит предположить, что оптимальным решением будет первоочерёдно проверять доступность облака тегов для компонента в разделе и, если такового не окажется, проверить доступность облака тегов для раздела, в противном случае вывести облако тегов всего сайта. Для этих целей в модуле облако тегов предусмотрено три функции вывода облака тегов, код вывода может выглядеть так:
<!--TAGS--> <?=(!$tagsCloud ? opt($tagsCloud = nc_tag_cloud_sub_class($tagcc ? $tagcc : $cc, "<a href='/tags/%TAG_LINK%TAG_SUB_LINK' style='font-size:%TAG_HEIGHT%; \".opt(%TAG_HEIGHT>160, 'line-height:1em;').\"'>%TAG_NAME</a>"), $tagsCloud) : "");?> <?= (!$tagsCloud ? opt($tagsCloud = nc_tag_cloud_subdivision($tagsub ? $tagsub : $sub, "<a href='/tags/%TAG_LINK%TAG_SUB_LINK' style='font-size:%TAG_HEIGHT%; \".opt(%TAG_HEIGHT>160, 'line-height:1em;').\"'>%TAG_NAME</a>"), $tagsCloud) : "");?> <?= (!$tagsCloud ? opt($tagsCloud = nc_tag_cloud_all($catalogue, "<a href='/tags/%TAG_LINK%TAG_SUB_LINK' style='font-size:%TAG_HEIGHT%; \".opt(%TAG_HEIGHT>160, 'line-height:1em;').\"'>%TAG_NAME</a>"), $tagsCloud) : "");?> <!--/TAGS-->
Все эти функции подробнее рассмотрены в следующем разделе.
Уже сейчас вы можете добавлять к постам теги и они будут отображаться в указанных вами местах.
1. На странице добавления/редактирования поста:
2. На странице отображения поста:
3. В сайдбаре блок со всеми тегами:
4. На странице одного тега: