Отборная информация, которая вставляет!

Похожие записи на MODX

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

Вот недавно потребовалось сделать что-то подобное и на MODX, но к сожалению никаких даже близких по функционалу плагинов не нашлось.

В статье опишу единственный более-менее подходящий вариант сделать похожие записи на MODX.

Итак, скажу сразу, плагинов похожих записей для MODX EVO — нет, перерыл все, что можно, но зато у одного из основных сниппетов Ditto есть очень полезные функции, которые нам в этом помогут.

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

Идем в Элементы — управление элементами — параметры(TV) — Новый параметр (TV) и создаем там параметр с заголовком, к примеру, myTags. Тип ввода — Text. Здесь все.

Теперь, когда создаете запись, то в этом поле укажите теги через запятую, на основе них и будет определяться «похожесть» статьи.

Далее, в самом шаблоне, где вам нужно вывести похожие статьи вставляем код вызова Ditto

[!Ditto? &filter=`id,[*id*],2` &parents=`[*parent*]` &tagData=`myTags` &tags=`[*myTags*]` &randomize=`1` &display=`4` &tagDelimiter=`,` &showInMenuOnly=`0` &showPublishedOnly=`1` &tpl=`related`&noResults=``!]


здесь важны поля
&tagData — вписываем название созданной ранее для тегов TV переменной (см выше)
&tags — тоже самое
&display — кол-во выводимых статей
&randomize — перемешивать или нет
&tagDelimiter — разделитель между тегами, лучше оставить запятую, вместе с этим и теги заносить нужно тоже через запятую, без пробелов
&tpl — чанк вывода похожих статей, о нем ниже
&noResults — сюда впишите текст, который будет выводится, когда похожих статей не найдено.

Лично я, чтобы оформить этот блок добавил сюда ещё такие слои

<div class="item_related">
<h4>Похожие записи:</h4>
<ul class="title_related">
[!Ditto? &filter=`id,[*id*],2` &parents=`[*parent*]` &tagData=`myTags` &tags=`[*myTags*]` &randomize=`1` &display=`4` &tagDelimiter=`,` &showInMenuOnly=`0` &showPublishedOnly=`1` &tpl=`related`&noResults=``!]
</ul>
</div>

Можете сделать также, можете по-другому, если разбираетесь в верстке.

В самом чанке вывода статей (у меня это related) я поставил вывод только заголовков, получилось так

<li><a href="[~[+id+]~]">[+pagetitle+]</a></li>

На самом деле можно выводить все, что угодно — заголовки, анонсы, картинки со статьи, т.е. работают все плейсхолдеры Дитто, можно о них почитать на вики, да и о самом сниппете написано довольно много.

Что мне ещё понравилось в этом решении и было небольшим сюрпризом, это то, что если не указывать теги, то все равно будет выводится несколько статей с родительской рубрики. Также думаю, что если указать в параметре вызова Дитто конкретный номер id — &parents=`4`, то статьи будут выводиться не с родительской рубрики, а именно с той, что указана.

Пользуйтесь.

Мониторинг сети: если вам знаком ASP.NET, вам думаю станет интересно предложение разработки сайтов на Umbraco. Я, к примеру, впервые слышу о этой CMS, но оказывается, что это уже зрелый движок с 14 летней историей и многотысячными сайтами на нем. На этой системе разрабатывались многие известные сайты автомобильных гигантов, а также Sony, Sandisk.


 

Похожие статьи:



8 комментариев к “Похожие записи на MODX”

  1. Алекс:

    Долго не мог найти вариант реализации на modx.
    Спасибо, очень помогло!

  2. Владимир:

    Попробовал использовать у себя. Под новостью о Васе Пупкине у меня выводятся новости («похожие») совсем о других людях. Не могу разобраться, какие изменения в ditto надо внести, чтобы выводились новости «похожие» только про Васю Пупкина…

    • ETNO:

      так а теги прописывали? Похожесть строится на тегах, если они не указаны, то берется рандомно с той же рубрики

      • Владимир:

        Попробовал прописать теги: в этом случае вообще ничего не выводится, кроме слов «Похожие статьи»… Может, дело в том, что надо по-другому прописать &parents=`[*parent*]` ?

        • ETNO:

          не подскажу вам, ditto может быть очень капризным, жалко, что толковых плагинов для этих целей нет для EVO

          • Владимир:

            Я вот о чем подумал. У меня же уже был создан TV для тэгов, которые я подставляю к каждой новости («облако тэгов» на основе tagLinks). Может, надо именно этот TV использовать, и не делать нового?

  3. Галина:

    Большое спасибо за информацию!!! Разрешите спросить дополнительно: как сделать, что- бы выводились похожие новости не из родительской папки где находится основная новость, а похожие новости из всего дерева документов, так понимаю, нужно поправить здесь: &parents=`[*parent*]` но как?
    И еще, &filter=`id,[*id*],2` поясните значение пожалуйста, в особенности цифры «2».

оставить отзыв

Если хотите вставить код в комментарии, то оберните его тегами ‹pre›‹/pre›