Быстрый выбор похожих статей

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

Я пока остановился на следующем с применением tagLister.
Так как тикеты получают теги, почему бы по ним не выбирать список похожих?


[[!pdoPage?
  &element=`getTickets`
  &tpl=`TicketArticle3MainPageTile`
  &includeContent=`1`
  &includeTVs=`tvimageticket,tags`
  &parents=`[[*parent]]`
  &limit=`2`
  &resources=`-[[*id]]`
  &sortby=`RAND()`
  &where=`{"tags:LIKE":"%[[*tags]]%"}`
  &setTotal=`1`
  &totalVar=`t_count`
  &toPlaceholder=`result_pohoj`
]]

         <div id="sheetpagepohoj" [[!showHidePohoj? &pls=`t_count`]]>Похожие публикации
                    <div id="gridArea">
                      <ul id="tiles">
                        [[+result_pohoj]]
                      </ul>
                    </div>
         </div>

Всё работает, кроме одного но:
В поле tags одни и те же теги могут быть проставлены В ДРУГОМ ПОРЯДКЕ, поэтому похожие статьи не найдутся.
К примеру, тикеты с таким тегами УЖЕ НЕПОХОЖИ:
Sinus, Интересное, История
История,Sinus, Интересное
Интересное, История,Sinus

Упорядочивание при вводе тоже не спасёт, любой добавленный тег ломает всё, например непохожие теги в тикетах
Sinus, Интересное, История и Sinus,Древний Рим, Интересное, История
— добавление тега Древний Рим делает второй тикет НЕПОХОЖИМ по отношению к первому.

Есть ли в php быстрое сравнение (по вхождению одной в другую) двух строк со словами, разделенными запятой?
Если нет — как можно реализовать на php?
Игорь
05 сентября 2018, 22:38
modx.pro
1 065
0

Комментарии: 3

snyadanak
05 сентября 2018, 23:56
0
Тут есть вариант с выводом статей по весу с помощью Tagger. Вроде как рабочий и подходящий
    Сергей Шлоков
    06 сентября 2018, 06:57
    1
    +1
      Игорь
      06 сентября 2018, 09:07
      0
      Проверка «похожести»
      В параметре where нужно проверить, чтобы все теги текущего тикета присутствовали в тегах похожих тикетов.

      К сожалению, с PHP я ещё пока на «Вы». Я так понимаю, нужно использовать регулярные выражения.

      что-то типа
      &where=`{"tags:REGEXP":"[[!obrabteg? &vhodteg= [[*tags]]  ]]"}`
      где obrabteg — снипет, подготавливающий строку
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3