"Уже сегодня делай то, о чем другие будут думать завтра!"

getRelated

Сайдбар

getRelated – сниппет для MODX Revolution, помогающий создать список связанных ресурсов.

Он помогает настроить алгоритм, с помощью которого такое необходимое свойство как &fields позволит вам определить поля для сравнения и определения важности каждого из них.

Ссылки и история создания

Версия

Дата выпуска

Особенности

1.2.0-pl

7 июня 2012

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

1.1.2-pl

21 января 2012

Добавлено &hideContainers свойство. Предотвращается появление ошибки E_NOTICE. Устранены ошибки в работе &includeDeleted.

1.1.1-pl

10 декабря 2011

Исправлены ошибки в &parents. Исправлена ошибка в &fields, из-за которой можно было выбрать только одно поле.

1.1.0-pl

4 декабря 2011

В настройки результатов добавлены TV свойства, а также новое свойство &exclude для скрывания определенных результатов.

1.0.2-pl

10 ноября 2011

Исправлена ошибка с фильтрацией текущих ресурсов, теперь поиск нечувствителен к регистру букв, исправлены ошибки в свойствах ignoreHidden и ignoreUnpublished. Сделан более понятным процесс отладки.

1.0.1-pl(2)

26 октября 2011

Исправлены ошибки, возникающие при работе со свойствами tpl &parents и &fields

1.0.0-pl

13 октября 2011

Первая публикация. Версии до 1.0 публиковались только для HandyMan. Спонсирована бета-версия.

Как работает getRelated (обязательно к прочтению)

Для правильного использования свойств и получения нужного результата важно понимать, как работает getRelated.

Нижеприведенные шаги собирают вместе необходимые ресурсы.

    1. getRelated находит ресурс, который будет использоваться в качестве базового, обычно это текущий ресурс. Он использует поля, определенные вами (&fields) и разделяет их на части для определения уникальных слов.
    1. Стоп слова, используемые в лексиконе, отфильтровываются, остаются только слова, действительно имеющие смысл.
    1. Далее используются связанные слова в запросе к базе данных, ограниченные контекстом, а также источники, заданные вами и содержащие необходимые ресурсы. Это образец для сравнения. Это работает для входных полей и переменных шаблона на основе заданных вами свойств полей.
    2. Пример работает на основе коэффициента веса, который вы определите в свойствах поля (&fields) для вычисления ранга каждого ресурса.
    3. Результаты сортируются в зависимости от ранга (с самым высоким рангом - первые) и затем выводится на экран в соответствии с tpl свойствами.

Свойства, приведенные ниже, могут быть использованы для настройки одного или более шагов, описанных выше. В таблице, приведенной ниже, вы описания в соответствии с вышеприведенными пунктами.

Использование


Нет никаких причин, чтобы я мог подумать вызвать этот сниппет некэшированным. Еесли вы запускаете огромный сайт, вызов сниппета некэшируемым поможет повышению производительноти, причем результат будет настолько значительным, что это просто не нужно. Этот сниппет обращается к данным ресурсов, и по умолчанию кэш очищается после обновления. Между обновлениями нет изменений, которые getRelated мог бы хранить. Поэтому НЕ ВЫЗЫВАЙТЕ ЭТОТ СНИППЕТ НЕКЭШИРУЕМЫМ!

Вы не уверены в том, каким вы вызываете getRelated? Некэшируемый сниппет вызывается с использованием восклицательного знака: [ [!snippetname]], поэтому нам нужно использовать его БЕЗ восклицательного знака: [ [snippetname]].

Необходимый минимум для вызова getRelated заключается в использовании тэга:


Такой вызов создает неупорядоченный список, максимум с тремя связанными ресурсами, базирующимися на на pagetitle и introtext. В дальнейшем вы можете изменить это, используя свойства the &fields (см. выше) для задействования какого-либо тэга, или категории TV, или другого поля, которое содержит итоговое значение или ключевые слова.

Оптимизация производительности сниппета getRelated

Если из-за getRelated появилось снижение производительности, вот несколько предложений / мыслей на эту тему:

  1. Убедитесь, что сниппет вызван кэшируемым! Я не смогу помочь узнать причину снижения проиводительности, если вы некэшируете этот сниппет.
  2. Не используйте поля наподобие контента, т.к. они попросту могут быть очень большими.
  3. Возможно, что запрос используемый для создания образца слишком обширный. Могут быть многочисленные причины и решения на этот счет.

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

3.2. Все ваши ресурсы используют похожие слова (название компании, наименования продаваемой продукции или любимые слова вашего редактора), в результате чего образец был искажен этим. Если у вас включена отладка (&debug=`1` в сниппете), вы можете увидеть информацию, соответствующую обработке слов, в результате сможете сделать вывод, все ли идет как надо. Если причина в этом, вы можете отфильтровать слова добавлением их в "getrelated.stopwords" словарь на вашем языке. Перейдите: System > Lexicon Management и в выпадающем меню замените "core" на "getrelated".

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

  1. Ваш сайт имеет слишком много связанных ресурсов. Если ресурсов слишком много и вы уже оптимизировали все, что могли, попробуйте следующее:

4.1. Настройте размер образца. Настройки по умолчанию сделаны после тестирования на протяжении 1 секунды, что нормально для первой загрузки (после чего вы получили результаты из кэша), но это зависит от числа полей, используемых вами, являются ли они полями ресурсов или TV и в итоге какое значение они сохраняют в базе данных.

Если вы использует много TV в &fields, вы можете “уронить ” tvSample скажем, 50-ю результатами на один TV. Если вы используете 3 TV, то можете теоретически уменьшить общее число обрабатываемых ресурсов с 375 до 150. Чтобы еще больше быть уверенными в правильности результата, вы можете изменить порядок, в котором образец обменивается данными с tvSort и tvSortDir, а также fieldSort и fieldSortDir. По умолчанию сортировка ведется по дате создания, самый новый учитывается первым.

  1. Может быть, что returnTVs настройки содержат много TV, что влияет на производительность. Я особо не тестировал это, но вам следует попробовать ограничить результирующие настройки (см. предыдущие советы), и использовать TV только тогда, когда нужно.
  2. Это проблема! Не смотря на то, что дополнение тестировалось на сайтах различного размера и на различных платформах, возможно, что что-то может произойти. Пожалуйста, сделайте сообщение на форуме или Github, и мы посмотрим, что можно сделать. Ссылки есть выше.




Контактная информация

По всем интересующим вас вопросам связывайтесь при помощи контактной информации приведенной на этой странице!

telegram: @Accusser
skype: metsof
email: accusser@gmail.com

В социальных сетях...

Форма обратной связи

Sign In