GetRelated

Опубликовано: 01 Ноя 2014

Позволяет организовать список похожих материалов на вашу публикацию.
Для чего нужно показывать похожие материалы на сайте?
   - это еще один инструмент навигации для пользователей, наряду с тегами, категориями и т.д.;
   - это неплохой способ удержать посетителя на сайте, предложив ему почитать статьи по теме;
   - это отличная перелинковка вашего блога, что положительно влияет на скорость индексации поисковиками.

Установка и настройка getRelated

Устанавливаем через установщик пакетов.
Перед установкой пакета предполагаем, что у вас уже имеется сайт с достаточным количеством страниц, для того что бы можно было сформировать список похожих.
После установке в том месте шаблона, где необходимо показать список похожих, вызываем сниппет:

[ [getRelated]]

Обратите внимание, что сниппет вызывается кешированным. Делать некешированный вызов строго не рекомендуется, так как процедура генерации списка похожих материалов достаточно ресурсоемкая и может сильно замедлить скорость генерации страниц.
Это простейший вызов сниппета и он будет работать, но чаще все же лучше его настроить, передав ряд параметров, например так:

[ [getRelated?
 &fields=`pagetitle:2,introtext:1,tags:4`
 &returnFields=`pagetitle,introtext`
 &returnTVs=`image`
 &parents=`4,6`
 &limit=`5`
 &noResults=`Нет похожих материалов`
 &tplOuter=`relatedOuter`
 &tplRow=`relatedRow`
]]

Разберем, за что отвечают параметры:
fields - список полей, которые будут учитываться при формировании списка похожих материалов, через двоеточие указывается "вес" поля, чем он больше, тем большее влияние оказывает поле. Естественно, что чем больше полей вы сюда напишите, тем более ресурсоемкими будут вычисления, так что идеально ограничится заголовком страницы и, к примеру тегами. И не используйте поле content! Как правило, в этом поле большой по объему текст и это может привести к очень долгой загрузке!
returnFields - список возвращаемых полей. Укажите именно те поля, которые вам нужны, это так же позволит снизить нагрузку.
returnTVs - по аналогии с returnFields, только для TV параметров.
parents - список id документов-родителей. Позволяет ограничить поиск определенными разделами вашего сайта.
limit - количество похожих статей.
noResult - сниппет выведет это значение, если не сможет подобрать похожие материалы.
tplOuter - чанк-обертка, в который будет помещен результат, рассмотрим ниже.
tplRow - чанк для каждой строки в результате, рассмотрим ниже.
Основная трудность возникает в выборе полей ресурсов, по которым производится поиск похожих, и настройка их весов. При неправильной настроке часто возникают ситуации, когда похожие материалы не находятся, или определяются неверно. Подобная же ситуация наблюдается когда общее количество материалов на сайте явно недостаточное (например в блоге всего 10 статей).

Настройка отображения

В примере выше мы указали параметры tplOuter и tplRow. Однако это можно было и не делать, getRelated в этом случае использовал бы значения по умолчанию. Посмотрим исходный код этих чанков.
Чанк "relatedOuter":

<h3>[ [%getrelated.pagesfound? &namespace=`getrelated` &count=`[ [+count]]`]]</h3>
<ul>
 [ [+wrapper]]
</ul>

Допустимо использовать 2 плейсхолдера: wrapper (список материалов) и count (количество найденых материалов).
Чанк "relatedRow":

<li>
 <a href="[ [~[ [+id]]]]" title="[ [+longtitle:default=`[ [+pagetitle]]`]]">
 [ [+longtitle:default=`[ [+pagetitle]]`]] ([ [+rank]])
 </a>
</li>

Здесь список плейсхолдеров несколько больше: поля ресурса, перечисленные в fields и returnFields,  а так же id - идентификатор документа, rank - рейтинг "похожести" ресурса, idx - порядковый номер.
Таким образом вы можете создать собственные чанки с любым html кодом на основе представленных и передать их названия в вызов getRelated, чтобы полностью переопределить внешний вид вашего списка похожих материалов.

Поддержка языков в getRelated

В своих первых версиях getRelated поддерживал только английский язык. Причиной тому - несколько регулярных выражений, используемых в алгоритме, в которых явно были прописаны только английские символы.
На текущий момент getRelated поддерживает английский и русский язык.
Обратите на это внимание, если вы сталкиваетесь с разработкой сайта, тексты которого содержат символы, отличные от применяемых в этих языках. Возможно вам будет необходимо внести аналогичные исправления в исходный код.

Комментарии (0)


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




Разрешённые теги: <b><i><br>Добавить новый комментарий: