Вероятно, одной из самых распространенных задач при конструировании сайта является вывод на страницу новостных, информационных статей, каталога продукции и т. д., одним словом вывод документов на страницу. Самым мощным инструментом MODx для этого можно считать сниппет Ditto, разработанный Марком Капланом (Mark Kaplan). Среди его основных функций - разбивка на страницы, вывод краткой версии статьи со ссылкой «далее», генерирование архива, сортировка по дате, заголовку и т. д.

Итак, рассмотрим пример вывода новостных статей на страницу сайта. Пусть нам нужно выводить по 5 статей на странице, без архива, в качестве краткой версии статьи использовать поле "Аннотация" (introtext) и как ссылку на полную версию статьи использовать «>>».

  • Создаем документ и называем его «Новости»
  • Создаем 2-3 новостных статьи как дочерние документы. Напомню, что для создания дочернего документа правой кнопкой нажимаем на документе «Новости» и выбираем «Дочерний док.» (“Create document here”).
  • Скачиваем сниппет Ditto и устанавливаем его в нашу систему. Для этого в панели управления ресурсами создаем новый сниппет, называем его “Ditto” и в тело вставляем содержимое файла snippet.ditto.1.0.1.php. Также, в директории assets/snippets/ditto у нас должен находиться файл ditto.class.inc.php.
  • Создаем чанк с именем, например ”ditto_news” который будет содержать html-шаблон вывода статьи. Пример шаблона (используется на этом сайте):
    <h2>
      <a href="[(base_url)][~[+id+]~]">
      [+pagetitle+]
      </a>
       - <span class="date">[+date+]</span>
    </h2>
    <div class="news">
      <p>[+introtext+]</p>
      <div class="more">[+link+]</div>
    </div>

    Стоит отметить, что вы можете также выводить в шаблоне дополнительный параметр документа (TV),  для этого используйте подстановщик, добавив к его имени ‘tv”, например
    [+tvпараметр+]
  • Начинаем редактировать документ «Новости», где у нас будут выводиться аннотации новостей. Как и любой другой некэшируемый сниппет Ditto вызывается следующим образом
    [!Ditto!]

    Далее задаем параметры, чтобы получить нужный нам вывод статей (имейте ввиду, что при задании значения параметра нужно использовать «обратный апостроф», тот что на одной клавише с буквой «Ё»):

    • &summarize=`5` — задаем количество новостей на странице 
    • &paginate=1 — включаем режим разбивки на страницы, тем самым отключаем архив
    • &tpl=` ditto_news ` - ссылаемся на ранее созданный нами шаблон вывода статей.
    • &dateFormat=`%d.%m.%Y` — задаем формат вывода даты
    • &sortBy=`createdon` — сортируем статьи по дате создания
    • &truncText=`>>` — задаем текст ссылки на полную версию статьи
  • Итак, у нас должна получиться строка типа:
    [!Ditto? &tpl=`ditto_news` &sortBy=`createdon` &summarize=`4` &dateFormat=`%d.%m.%Y` &truncText=`>>` &paginate=1!]
  • Ниже нам следует дописать html-код для вывода номеров страниц, что-то типа
    <div id="pagination">
    Стр.: [+pages+]
    </div> 
  • Готово! Сохраняем документ «Новости» и смотрим, что у нас получилось на сайте.