Ditto
MODX Docs
Перейти
Ditto
MODX Forums
Перейти
Ditto
MODX Wiki
Перейти
Ditto и Reflect
PDF
Перейти

Автор: Марк Каплан

Ditto - сниппет для организации информации из множества документов в необходимом виде. С его помощью можно реализовать:
- блог
- список статей, новостей, ссылок
- архив новостей
- каталог товаров, сайтов, файлов и т.д.
- RSS, XML, JSON, ATOM данные
- много других форматов вывода, благодаря полной поддержке шаблонов

Параметры

Параметры Ditto

Формат: Имя конфигурационного файла
Значение по умолчанию: default
Примечание: Файл конфигурации может включать значения различных параметров Ditto, избавляя от неудобств, связанных с ограничениями, накладываемыми MODx на значения параметров сниппетов (нельзя использовать &, `, <enter> т.п.). Файлы конфигурации сохраняются в папке &ditto_base/configs/. Их имена имею формат &config.config.php
Пример:
&config=``
Формат: Любой валидный формат времени, который соответствует правилам функции PHP - strftime
Значение по умолчанию: [LANG]
Примечание: Определяет формат времени, которое выводится с помощью плейсхолдера
Пример:
&dateFormat=`%d.%m.%Y`
Формат: Время в формате UNIX timestamp из поля MODx или TV-параметра
Значение по умолчанию: createdon
Примечание: Любое значение времени в формате UNIX timestamp из поля MODx или TV-параметра, как например createdon, pub_date, or editedon.
Пример:
&dateSource=`pub_date`
Формат: 0 | 1
Значение по умолчанию: 0
Примечание: Режим отладки позволяет разобраться в сложных и непонятных ситуациях. Особенно актуальная возможндость для крупных сайтов, где множество вызовов Ditto могут конфликтовать между собой. При включенном режиме отладки помимо результатов работы выводится множество полезной для разработчика информации (все параметры, список документов результата, их ID и т.п.).
Пример:
&debug=`1`
Формат: число
Значение по умолчанию: 1
Примечание: Число уровней в глубину для поиска документов. Документы будут найдены внутри документов-контейнеров, указанных в &startID и &parents и вложенных документов-контейнеров до уровня указанного в &depth. Т.е. если этот параметр равен 1, то будут брать только непосредственно дочерние документы, указанных в &startID и &parents. Если &depth = 2, в поиск пройдет еще и в дочерних.
Пример:
&depth=`5`
Формат: число | all
Значение по умолчанию: 3
Примечание: all - все документы
&display - это число отображаемых документов на странице при включенной пагинации. Для ограничения вывода количества документов без пагинации использовать параметр &total
Пример:
&display=`10`
Формат: путь
Значение по умолчанию: [(base_path)]assets/snippets/ditto/
Примечание: Папка со слэшем на конце, указывающая размещение фалов Ditto на сервере. Как правило этот параметр изменять не приходится.
Пример:
&ditto_base=``
Формат: ID документов, через запятую
Значение по умолчанию: нет
Примечание: Этот параметр должен сожержать список ID'ов тех документов, которые будут отображены в результатах. Т. е. можно жестко задать список документов, которые будут отображаться.
Пример:
&documents=`1, 35, 122`
Формат: Расширения через запятую
Значение по умолчанию: нет
Примечание: Указывает Ditto, какие расширения следует загрузить. Пример расширения с комментариями (на английском) можно найти по пути: &ditto_base/extenders/example.extender.inc.php. Все расширения находятся в папке &ditto_base/extenders/ и имена файлов имеют формат: name.extender.inc.php.
Пример:
&extenders=`summary`
Формат: поле,критерий,тип сравнения
Значение по умолчанию: NULL
Примечание: Используется формат `поле,критерий,тип сравнения` с запятой между значениями.
Список фильтров:
По умолчанию: NULL
Типы сравнения:
1 - != (не соответствует критерию)
2 - == (соответствует критерию)
3 - < (меньше критерия)
4 - > (больше критерия)
5 - <= (меньше или равен критерию)
6 - >= (больше или равен критерию)
7 - (не содержит текст критерия)
8 - (содержит текст критерия)
9 - case insenstive version of #7
10 - case insenstive version of #8
11 - checks leading character of the field
Может содержать несколько запросов, разделенных глобальным разделителем |.
Пример:
&filter=`id,10,2|id,20,2`
Формат: html | json | xml | atom | rss
Значение по умолчанию: html
Примечание: Ditto умеет работать с различными форматами данных. Например, он может выводить RSS ленту новостей или данные в XML формате.
Пример:
&format=`rss`
Формат: Любой сивол, который не будет использоваться в правиле фильтра
Значение по умолчанию: |
Примечание: Задает значение разделителя для параметра &filter.
Пример:
&globalFilterDelimiter=``
Формат: Любое название параметра MODx или TV-параметра, перечисленные через запятую.
Значение по умолчанию: NULL
Примечание:
Пример:
&hiddenFields=``
Формат: 0 | 1
Значение по умолчанию: 0
Примечание:
Пример:
&hideFolders=`1`
Формат: 0 | 1
Значение по умолчанию: 1
Примечание:
Пример:
&hidePrivate=`0`
Формат: Числа или буквы английского алфавита. Строка чувствительна к регистру.
Значение по умолчанию: нет
Примечание: Уникальный идентификатор нужен главным образом тогда, когда необходимо использовать более одного вызова Ditto на странице, причем актуален этот параметр тогда, когда для более чем одного вызова Ditto используются глобальные плэйсхолдеры.
К примеру, Вы выводите на одной странице спосок новостей и список последних публикаций, причем оба списка имеют пэйджер. Если Вы вставите дважды [+pages+], то оба пэйджера будут управлять двумя списками сразу. Это во-первых. А во-вторых оба пэйджера буду отражать страницы первого списка. Т.е. когда MODx обработает первый вызов, он заменит оба плэйсхолдера [+pages+] на это значение. А список страниц второго списка ни куда не попадет.
Так вот в таком случае, следует использовать для каждого вызова Ditto свой id. А глобальные плэйсхолдеры примут вид [+id_placeholder+]. Символ подчеркивания между идентификатором и названием плэйсхолдера добавится автоматически.
Пример:
&id=`nav`
Формат: 0 | 1
Значение по умолчанию: 0
Примечание: Используется как [+keywords+] или источник tagData.
Пример:
&keywords=`1`
Формат: Название языкового файла
Значение по умолчанию: english
Примечание: В языковых файлах Ditto хранятся шаблоны, используемые по-умолчанию, описания ошибок и уведомления.
Ditto сначала загружает свой стандартный языковой файл, а уже после этого тот файл, что указан в данном параметре. Таким образом, если в файле указанном пользователем нет какой-либо строки, она будет использована из стандартного файла. Примечание. Языковые файлы находятся в папке &ditto_base/lang/. Имена имею формат: &language.inc.php

Пример:
&language=`russian-UTF8`
Формат: Любой сивбол, который не будет использоваться в параметре фильтра
Значение по умолчанию: ,
Примечание:
Пример:
&localFilterDelimiter=``
Формат: Любой текст или название чанка
Значение по умолчанию: LANG
Примечание:
Пример:
&noResults=`Документы не найдены`
Формат: Разделенный запятыми список
Значение по умолчанию: createdon DESC
Примечание: Взамен &sortBy и &sortDir.
Пример:
&orderBy=`pagetitle ASC`
Формат: Список ID через запятую
Значение по умолчанию: Текущий документ
Примечание: Указывает Ditto список идентификаторов (id) документов-контейнеров, откуда будут браться документы для вывода Ditto. Документы беруться до глубины &depth.
Пример:
&parents=`1, 5, 8`
Формат: 0 | 1
Значение по умолчанию: 1
Примечание: В Ditto имеется встроенный парсер PHx. Эта опция включает / выключает его. В зависимости от версии или сборки MODX параметр может быть по умолчанию отключен.
Пример:
&phx=`0`
Формат: число
Значение по умолчанию: 0
Примечание: 0 - нет ограничения
Пример:
&queryLimit=``
Формат: 0 | 1
Значение по умолчанию: 0
Примечание: Остерегайтесь кэшированных вызовов!
Пример:
&randomize=`1`
Формат: Любое название чанка, которое используется при выводе
Значение по умолчанию: NULL
Примечание: Обычно используется для удаления комментариев
Пример:
&removeChunk=``
Формат: 0 | 1 | 2 | 3
Значение по умолчанию: 0
Примечание: 0 - off; returns output
1 - remaining; returns output
2 - all;
3 - all; returns ph only
Пример:
&save=`3`
Формат: 0 | 1
Значение по умолчанию: 0
Примечание: Используется если глубина (&depth) больше 1
Пример:
&seeThruUnpub=`1`
Формат: 0 | 1
Значение по умолчанию: 0
Примечание:
0 - показывать все документы
1 - показывать только документы у которых поставлен флаг «Показывать в меню»
Пример:
&showInMenuOnly=`1`
Формат: 0 | 1
Значение по умолчанию: 1
Примечание:
0 - показывать только неопубликованные документы
1 - показывать только опубликованные документы
Пример:
&showPublishedOnly=`0`
Формат: число
Значение по умолчанию: 0
Примечание:
Пример:
&start=`5`
Формат: число | all
Значение по умолчанию: all
Примечание:
Пример:
&total=`10`
Формат: Любое валидное выражение MySQL WHERE
Значение по умолчанию: NULL
Примечание: Используется только для параметров документов. Не поддерживает TV-параметры.
Пример:
&where=``

Шаблоны

Формат: имя чанка | @FILE | @CODE
Значение по умолчанию: LANG
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tpl=`news`
Формат: имя чанка | @FILE | @CODE
Значение по умолчанию: &tpl
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplAlt=`news_alt`
Формат: имя чанка | @FILE | @CODE
Значение по умолчанию: &tpl
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplCurrentDocument=`news_current`
Формат: имя чанка | @FILE | @CODE
Значение по умолчанию: &tpl
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplFirst=`news_first`
Формат: имя чанка | @FILE | @CODE
Значение по умолчанию: &tpl
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplLast=`news_last`
Формат: имя чанка | @FILE | @CODE
Значение по умолчанию: нет
Примечание: Доступные плейсхолдеры:
[+ditto+] или идентичный ему [+wrapper+]
Пример:
&outerTpl=`<ul>[+ditto+]</ul>`

Параметры пагинации

Формат: 0 | 1
Значение по умолчанию: 0
Примечание: На каждой странице выведется &show документов. Для вывода пэйджера используются глобальные плэйсхолдеры:
[+next+] – Кнопка «Следующее»
[+previous+] – Кнопка «Предыдущее»
[+pages+] – Список страниц
[+totalPages+] – Общее количество страниц
[+start+] – Номер первой показываемой страницы
[+stop+] – Номер последней показываемой страницы
[+currentPage+] – Номер показываемой текущей страницы
[+total+] – Общее количество страниц
Пример:
&paginate=`1`
Формат: 0 | 1
Значение по умолчанию: 0
Примечание: В случае если страницы для перехода нет (крайние страницы), то ссылка Previous или Next будет показана в виде текста без ссылки и будет заключена в тэг <spanclass="ditto_off">Privious</span>
0 - показывать ссылки Next и Previous только, если существуют страницы для перехода
1 - всегда показывать ссылки Next и Privious
Пример:
&paginateAlwaysShowLinks=`1`
Формат: символ (или строка)
Значение по умолчанию: |
Примечание: Символ для разделения Previous и Next, когда paginateAlwaysShowLinks выключен и обе ссылки есть. Предотвращает показ ссылок в виде <Previous Next>, когда [+pages+] не используется
Пример:
&paginateSplitterCharacter=``
Формат: имя чанка | @FILE | @CODE
Значение по умолчанию: <span class='ditto_currentpage'>[+page+]</span>
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplPaginateCurrentPage=``
Формат: имя чанка | @FILE | @CODE
Значение по умолчанию: <a href='[+url+]' class='ditto_next_link'>[+lang:next+]</a>
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplPaginateNext=`newsPaginateNext`
Формат: имя чанка | @FILE | @CODE
Значение по умолчанию: <a href='[+url+]' class='ditto_previous_link'>[+lang:previous+]</a>
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplPaginatePrevious=`newsPaginatePrevious`
Формат: имя чанка | @FILE | @CODE
Значение по умолчанию: <span class='ditto_next_off ditto_off'>[+lang:next+]</span>
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FIL
Пример:
&tplPaginateNextOff=``
Формат: имя чанка | @FILE | @CODE
Значение по умолчанию: <a class='ditto_page' href='[+url+]'>[+page+]</a>
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplPaginatePage=``
Формат: имя чанка | @FILE | @CODE
Значение по умолчанию: <span class='ditto_previous_off ditto_off'>[+lang:previous+]</span>
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplPaginatePreviousOff=``

Параметры summary

Формат: 0 | 1
Значение по умолчанию: 1
Примечание:
Пример:
&truncSplit=`0`
Формат: 0 | 1
Значение по умолчанию: 1
Примечание:
0 - выкл
1 - вкл
Пример:
&trunc=`0`
Формат: строка
Значение по умолчанию: <!-- splitter -->
Примечание: Любой уникальный текст или код, который содержится в содержании каждого документа
Пример:
&truncAt=``
Формат: число
Значение по умолчанию: 300
Примечание: Любое число больше чем &truncOffset
Пример:
&truncLen=`800`
Формат: число
Значение по умолчанию: 30
Примечание: Любое число не превышающее &truncLen
Пример:
&truncOffset=`50`
Формат: строка
Значение по умолчанию: Read more...
Примечание: Любой текст или отрывок html-кода
Пример:
&truncText=`Читать далее...`
Формат: имя чанка | @FILE | @CODE
Значение по умолчанию: &truncText
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplTrunc=``

Параметры dateFilter

Формат: get, params, name of $_REQUEST variable
Значение по умолчанию: get
Примечание:
Пример:
&dateFilterSource=``
Формат: 0 | 1 | 2 | 3
Значение по умолчанию: 0
Примечание: 0,1,2,3 (выключено, текущий год, текущий месяц, сегодня)
Пример:
&dateFilterDefault=`1`
Формат: Численное значение месяца
Значение по умолчанию: нет
Примечание: Численное значение месяца
Пример:
&month=`10`
Формат: Год (2 или 4-значный)
Значение по умолчанию: нет
Примечание:
Пример:
&year=`2012`
Формат: День месяца
Значение по умолчанию: нет
Примечание:
Пример:
&day=`25`

Параметры tagging

Формат:
Значение по умолчанию:
Примечание:
Пример:
&tagDocumentID=``
Формат: Любые допустимые теги, разделенные с помощью tagDelimiter
Значение по умолчанию: нет
Примечание: Любые допустимые теги, разделенные с помощью tagDelimiter
Пример:
&tags=``
Формат: onlyAllTags | onlyTags | removeAllTags | removeTags
Значение по умолчанию: onlyTags
Примечание:
onlyAllTags показать документа, содержащие все теги из параметра tags
onlyTags показать документы, которые имеют любой из тегов tags
removeAllTags удалить документы, которые содержат все теги tags
removeTags удалить документы, которые имеют любой из тегов tags
Пример:
&tagMode=`onlyAllTags`
Формат: строка
Значение по умолчанию: пробел
Примечание: Любой символ, не содержащийся в тегах
Пример:
&tagDelimiter=`, `
Формат: 0 | 1
Значение по умолчанию: 0
Примечание: 1 - вкл., 0 - выкл.
Пример:
&caseSensitive=`1`
Формат: строка
Значение по умолчанию: значение параметра tagDelimiter
Примечание:
Пример:
&tagDisplayDelimiter=`, `
Формат: 0 | 1
Значение по умолчанию: 1
Примечание:
Пример:
&tagSort=`0`
Формат: Поле документа или переменная шаблона
Значение по умолчанию: нет
Примечание: автоматически добавляет в пометки Extender
Пример:
&tagData=`tags`
Формат: 1 | 2
Значение по умолчанию: 1
Примечание:
1 - строка с ссылками и разделителем tagDisplayDelimiter)
2 - UL/LI список
Пример:
&tagDisplayMode=`2`
Формат: имя чанка | @FILE | @CODE
Значение по умолчанию: нет
Примечание:
Пример:
&tplTagLinks=``
Формат: любое допустимое имя функции
Значение по умолчанию: нет
Примечание:
Пример:
&tagCallback=``

Параметры request

Формат: 0 | 1
Значение по умолчанию: 1
Примечание:
Пример:
&stripTags=`0`
Формат: Параметры Ditto через запятую
Значение по умолчанию: seeThroughtUnpub, showInMenuOnly, showPublishedOnly, debug, start, config, extenders, dittoID
Примечание:
Пример:
&bad=``
Формат: Параметры Ditto через запятую
Значение по умолчанию: Все параметры, которые не вошли в список bad
Примечание:
Пример:
&good=``

Параметры glossaryFilter

Формат: поле документа | TV-параметр
Значение по умолчанию: pagetitle
Примечание: ВАЖНО! Вам лучше избегать использования поля content, либо делать это осмотрительно
Пример:
&filterVar=``
Формат: class | custom | chunk
Значение по умолчанию: class
Примечание: class (default) - match with RegExp /^[...]/i where ... is substituted with the value of filterBy parameter
custom - match with full-fledged RegExp provided with filterBy parameter
chunk - match with full-fledged RegExp privided with a chunk whose name is kept within filterBy parameter
Пример:
&filterMode=``
Формат:
Значение по умолчанию:
Примечание:
Пример:
&filterBy=``
Формат: 0 | 1
Значение по умолчанию: 0
Примечание:
Пример:
&forceUTF8=`1`

Параметры search

Формат: список полей через запятую
Значение по умолчанию: content
Примечание:
Пример:
&searchFields=`content,tv1,tv2`
Формат: caseSensitive | regex | snippet
Значение по умолчанию: нет
Примечание: caseSensitive - производить поиск с учетом регистра
regex - поиск с регулярными выражениями
snippet - использование сниппетов для получения результатов
Пример:
&searchOptions=`caseSensitive`
Формат: строка | @FILE | @CHUNK
Значение по умолчанию: пусто
Примечание: JSON строка с разделителями для списка опций.
Пример:
&searchString=`@CHUNK regexSearchChunk`
Формат: строка | @FILE | @CHUNK
Значение по умолчанию: '{"outer":",","inner":"="}'
Примечание:
Пример:
&searchOptionsSeparators=``

Параметры tvFilter

Формат: TV-параметр
Значение по умолчанию: пусто
Примечание:
Пример:
&tvFilterBy=``
Формат: 0 | 1
Значение по умолчанию: 1
Примечание: 1 - исключает документы, к которым привязан TV-параметр
0 - исключает документы, к которым не привязан TV-параметр
Пример:
&tvFilterMode=`0`

Плейсхолдеры

Создавая шаблон Дитто, вы указываете плэйсхолдеры там, где вы хотите увидеть свои данные. У Дитто есть свои собственные пдэйсхолдеры, плюс он поддерживает переменные (поля) используемые в каждом документе. (Примечание: если вы хотите использовать переменные (поля) документа непосредственно на странице с обычным шаблоном, вы должны использовать формат [*alias*])

Плейсхолдеры документа

[~[+id+]~] – Создает полный URL, основанный на ID, но не создает саму ссылку.

Например:

<h3><a href="[~[+id+]~]">[+title+]</a></h3>
ПараметрОписание
[+alias+]Псевдоним страницы, используется для создания ЧПУ
[+cacheable+]Возвращает 1 (true) or 0 (false) если этот документ должен быть кэширован. По умолчанию установлено в false для нормального функционирования динамических сниппетов
[+content+]Содержимое документа
[+contentType+]Возвращает строчный параметр типа содержимого из выпадающего меню Content Type в панели администратора
[+content_dispo+]Строка внедрения или прикрепления. Внедренные документы показываются в веб-браузерах. Прикрепленные документ могут быть загружены на локальную машину через диалоговое окно загрузки файла веб-браузера
[+createdby+]Возвращает идентификатор пользователя, создавшего документ
[+createdon+]Дата (в секундах с 1 января 1970 г.), когда документ был создан
[+deleted+]Возвращает 1 (true) or 0 (false). Когда true, этот документ находится в корзине до ее очистки. После этого запись стирается полностью из базы данных (удаляется ПО-НАСТОЯЩЕМУ)
[+deletedby+]Возвращает идентификатор пользователя, удалившего этот документ
[+deletedon+]Возвращает дату удаления документа (в секундах с 1 января 1970 г.)
[+description+]Описание документа
[+donthit+]True (1) or False (0) показывает установлен или нет счетчик посещений страницы
[+editedby+]Возвращает идентификатор пользователя, который последний редактировал документ
[+editedon+]Возвращает дату последнего редактирования (в секундах с 1 января 1970 г.)
[+haskeywords+]True (1) or False (0) показывает установлены или нет ключевые слова для данного документа
[+hasmetatag+]True (1) or False (0) показывает установлены или нет метатэги для данного документа
[+hidemenu+]Возвращает 1 (true) или 0 (false) – соответственно если этот документ показывается в меню или нет
[+id+]Целое число обозначающее или показывающее идентификатор документа
[+introtext+]Аннотация документа
[+isfolder+]Целое число: true (1) если документ является контейнером или false (0) если нет.
[+longtitle+]Расширенный заголовок документа
[+menuindex+]Целое число показывающее позицию в меню
[+menutitle+]Название документа в меню
[+pagetitle+]Заголовок документа
[+parent+]идентификатор родительского документа
[+privatemgr+]True (1) or False (0) показывает установлены ли разрешения на просмотр этого документа для менеджеров
[+privateweb+]True (1) or False (0) показывает установлены ли разрешения на просмотр этого документа для веб-пользователей
[+pub_date+]Дата с которой документ опубликуется (в секундах с 1 января 1970 г.). Примечание: если этот параметр указан, published автоматически устанавливается в true (1)
[+published+]Целое число показывающее статус публикования (0 = нет, 1 = да)
[+richtext+]true (1) или false (0), устанавливается, если в администраторской панели должен использоваться rich text editor
[+searchable+]Возвращает 1 (true) или 0 (false), что означает что этот документ доступен или не доступен для поиска
[+template+]идентификатор шаблона, используемого для этого документа
[+type+]Возвращает строчный параметр document для страниц или "reference" для ссылок
[+unpub_date+]Дата окончания публикации документа (в секундах с 1 января 1970 г.). Примечание: установка этого параметра НЕ имеет эффекта на изменение статуса установок published

Плейсхолдеры Дитто

ПараметрОписание
[+author+] Имя автора. Сначала createdby->fullname, createdby->username, admin
[+date+]Дата в установленном формате. По умолчанию используется createdon (editedon и pub_date как варианты)
[+ditto_iteration+]Порядковый номер полученного документа в пределах текущей страницы
[+ditto_sort+]Порядковый номер полученного документа в пределах полного набора документов
[+title+]Содержимое поля заголовка
[+url+]Ссылка на документ
[+ditto+] или [+wrapper+]С версии 2.1.1. Используется в шаблоне &outerTpl. Место вывода результата работы сниппета
[+ditto_class+]С версии 2.1.1. Выводит классы even/odd, first/last и current

Плейсхолдеры пагинации

ПараметрОписание
[+next+]Кнопка «Следующее»
[+previous+]Кнопка «Предыдущее»
[+splitter+]Разделитель если всегда показывается 0
[+start+]Номер первой показываемой страницы
[+urlStart+]Номер текущей страницы, как показано в адресной строке (?start=)
[+stop+]Номер последней показываемой страницы
[+total+]Общее количество страниц
[+pages+]Список страниц
[+currentPage+]Номер показываемой текущей страницы
[+perPage+]Отображаемых элементов на странице (равно display)
[+totalPages+]Общее количество страниц
[+ditto_pagination_set+]1 если paginate включено
[+item[x]+]Сформированный вывод индивидуального документа

Плейсхолдеры summary

ПараметрОписание
[+summary+]Поле аннотация (введение) полностью, если указано, или начальная часть содержимого страницы
[+link+]Ссылка на полный текст. Текст ссылки установливается параметром &trunctText. По умолчанию из файла языка Ditto

Плейсхолдеры tagging

ПараметрОписание
[+tagLinks+]Список тэгов, связанных с документом, разделенных &tagDelimiter
[+tags+]На странице, содержащей результат: теги, используемые для фильтрации отображаемых документов

Плейсхолдеры dateFilter

ПараметрОписание
[+year+]Год для фильтра. Двух или четырех значное значение
[+month+]Месяц для фильтра
[+day+]День для фильтра
[+month_numeric+]Численное значение месяца

Примеры

Простой вызов

[!Ditto? &tpl=`news_tpl` &parents=`2`!]  // некэшируемый вызов
[[Ditto? &tpl=`news_tpl` &parents=`2`]]  // кэшируемый вызов

где:

&tpl=`news_tpl` - шаблон вывода документов
&parents=`2` - ID папки в которой находятся обрабатываемые документы

Сортировка документов

[!Ditto? &tpl=`news_tpl` &parents=`2` &orderBy=`pagetitle ASC`!

где:

&orderBy=`ASC pagetitle` - сортировать по возрастанию по полю заголовка документов

Пагинация

[!Ditto? &tpl=`news_tpl` &parents=`2` &id=`news` &paginate=`1` &display=`10`!]
 <div class="pagination">
       Страница [+news_currentPage+] из [+news_totalPages+] [+news_previous+][+news_pages+][+news_next+]
</div> 

где:

&id=`news` - идентификатор Ditto. Должен быть уникальным для каждого из вызовов Ditto с постраничным разбиением. Необходим для корректной работы постраничных плэйсхолдеров, если на странице используются и другие вызовы сниппета Ditto
&paginate=`1` - включаем постраничное разбиение
&display=`10` - количество отображаемых документов на каждой странице

При использовании идентификатора при постраничном разбиении, идентификатор должен быть добавлен в качестве суффикса к плэйсхолдерам пагинации, т.е. в данном случае плэйсхолдер [+pages+] должен превратиться в [+news_pages+].

Вывод даты

[!Ditto? &tpl=`news_tpl` &parents=`2` &dateSource=`pub_date` &dateFormat=`%d.%m.%Y`!

где:

&dateSource=`pub_date` - источник, определяющий значение плейсхолдера [+date+], использующегося в шаблоне news_tpl
&dateFormat=`%d.%m.%Y` - определяет формат времени, которое выводится с помощью плейсхолдера [+date+] согласно правилам функции PHP - strftime.

Фильтрация документов

[!Ditto? &tpl=`news_tpl` &parents=`2` &filter=`id,10,2|id,20,2`!

где:

&filter=`id,10,2|id,20,2` - исключает документы с id 10 и 20

Экстендеры

Экстендеры - это дополнительные расширения, которые позволяют решать дополнительные задачи. Все экстендеры Ditto лежат в папке assets/snippets/ditto/extenders/.

dateFilter

Описание: Предназначен для фильтрации документов по дате, может использоваться месте со сниппетом Reflect.

Параметры: &dateFilterSource, &dateFilterDefault, &month, &year, &day

Плейсхолдеры: [+year+], [+month+], [+day+], [+month_numeric+]

Пример:

<form id="dateFilterForm" method="get" action="[~[*id*]~]">
    <select size="1" name="year">
        <option selected value="">-- год --</option>
        <option value="2011">2011</option>
        <option value="2012">2012</option>
        <option value="2013">2013</option>
    </select>
    <select size="1" name="month">
        <option selected value="">-- месяц --</option>
        <option value="1">Январь</option>
        <option value="2">Февраль</option>
        <option value="3">Март</option>
        <option value="4">Апрель</option>
        <option value="5">Май</option>
        <option value="6">Июнь</option>
        <option value="7">Июль</option>
        <option value="8">Август</option>
        <option value="9">Сентябрь</option>
        <option value="10">Октябрь</option>
        <option value="11">Ноябрь</option>
        <option value="12">Декабрь</option>
    </select>
    <input type="submit" value="Ок" name="Submit">
</form>
<h3>[+year+] [+month+]</h3> [!Ditto? &parents=`2` &extenders=`dateFilter` &dateSource=`createdon`!]

где:

  • &extenders=`dateFilter` - имя используемого расширения
  • &dateSource=`createdon` - поле по которому будет происходить фильтрация

request

Описание: Изменение параметров Ditto через URL.

Параметры: &stripTags, &bad, &good

Плейсхолдеры: нет

Пример:

<form action="[~[*id*]~]"  method="get">
    <p>Сортировать по...</p>
    <select name="ditto_id1_sortDir">
        <option value="">-- выбрать --</option>
        <option value="ASC">Возрастанию</option>
        <option value="DESC">Убыванию</option>
    </select>
    <input name="Submit" type="submit" value="Ок">
</form>
<h3>Результат</h3>
[!Ditto? &id=`id1` &parents=`4` &tpl=`@CODE [+pagetitle+]<br>` &extenders=`request` &sortBy=`pagetitle`!]

где:

  • &extenders=`request` - имя используемого расширения
  • &sortBy=`pagetitle` - параметр, по которому производится сортировка

summary

Описание: Формирование краткого описания и подстановка этого описания в плейсхолдер [+summary+].

Параметры: &truncSplit, &trunc, &truncAt, &truncLen, &truncOffset, &truncText, &tplTrunc.

Плейсхолдеры: [+summary+], [+link+]

Пример: Вывести аннотации к документам, но поле [+introtext+] у документов не заполнено или заполнено не у всех документов. В шаблоне вместо плейсхолдера [+introtext+] вставляем плейсхолдер [+summary+], а вызов сниппета станет таким:

[!Ditto? &tpl=`@CODE:<h3>[+pagetitle+]</h3><p>[+summary+]</p><p>[+link+]</p>` &parents=`2` &extenders=`summary` &truncLen=`400` &truncText=`Подробнее...`!]

где:

  • &extenders=`summary` - имя используемого расширения
  • &truncLen=`400` - максимальное количество отображаемых символов
  • &truncText=`Подробнее...` - текст ссылки на подробное описание

tagging

Описание: Фильтрация документов по тегам.

Параметры: &tagDocumentID, &tags, &tagMode, &tagDelimiter, &caseSensitive, &tagDisplayDelimiter, &tagSort, &tagData, &tagDisplayMode, &tplTagLinks, &tagCallback

Плейсхолдеры: [+tagLinks+], [+tags+]

Экстендер tagging автоматически подключается при использовании параметра &tagData. В качестве значения параметра &tagData используется имя TV-параметра с типом ввода Text, Radio Options или Check Box. По умолчанию, разделителем между тегами является пробел. Изменить разделитель можно с помощью параметра &tagDelimiter=`, `. Теги отображаются в плейсхолдере [+tagLinks+] в виде набора ссылок.

Пример:

[!Ditto? &parents=`4` &tagData=`keyw` &tagDelimiter=`,` &tagDisplayDelimiter=`, ` &tpl=`@CODE:<h3>[+pagetitle+] <small>[+tagLinks+]</small></h3>` &tagSort=`0` &tagDocumentID=`[*id*]`!]

где:

  • &tagData=`keyw` - поле документа или переменная шаблона, содержащая теги
  • &tagDelimiter=`,` - разделитель между тегами
  • &tagDisplayDelimiter=`, ` - разделитель между тегами при их выводе
  • &tagSort=`0` - отключаем сортировку тегов по алфавиту
  • &tagDocumentID=`[*id*]` - ID документа, где будет выводиться список отфильтрованных документов

andFilter

Источник: andFilter

Описание: Фильтрация по TV-параметру, имеющему несколько значений. Проверка на сооответствие каждому значению.

Параметры: &andFilterTv.

Плейсхолдеры: нет.

Пример: Вывести товары красного и зелёного цета, размеров L, XL и XXL

[!Ditto? &tpl=`tpl` &parents=`2` &extenders=`andFilter` &andFilterTv=`color:зелёный,красный;size:L,XL,XXL`!]

где:

  • &extenders=`andFilter` - имя используемого расширения
  • &andFilterTv=`color:зелёный,красный;size:L,XL,XXL` - параметры, по которым происходит фильтрация документов.

countDocs

Описание: Подсчет количества документов.

Обязательные параметры: нет.

Плейсхолдеры: [+count+]

Пример: Вывести общее количество документов в контейнерах 3,4,5:

[!Ditto? &tpl=`@CODE:[+count+]` &parents=`3,4,5` &extenders=`countDocs` &display=`1`!]

где:

  • &extenders=`countDocs` - имя используемого расширения
  • &display=`1` - устанавливаем значение равное 1, так как нам необходимо вывести количесто только один раз.

distinct

Источник: distinct

Описание: Возвращает только уникальные результаты полей, указанных в качестве значения параметра &distinct=`param1,param2`.

Параметры: &distinct

Плейсхолдеры: нет

Пример: получить только уникальные заголовки страниц для каждой даты.

[!Ditto? &parents=`4` &extenders=`distinct` &distinct=`pagetitle,pub_date`!]

где:

  • &extenders=`distinct` - имя используемого расширения
  • &distinct=`pagetitle,pub_date` - параметры, по которым производится фильтрация

customsort или nosort

Источник: customsort

Описание: Пользовательский порядок сортировки документов в параметре &documents.

Параметры: &documents

Плейсхолдеры: нет

Пример: вывести список документов в строго заданном порядке.

[!Ditto? &parents=`4` &extenders=`customsort` &documents=`40,46,47,35,36,37,44,41,43,49,48,50,54,53`!]

где:

  • &extenders=`customsort` - имя используемого расширения
  • &documents=`40,46,47,35,36,37,44,41,43,49,48,50,54,53` - заданный порядок вывода документов

glossaryFilter

Источник: glossaryFilter

Описание: продвинутая фильтрация документов.

Параметры: &filterVar, &filterMode, &filterBy, &forceUTF8

Плейсхолдеры: нет

Пример: фильтрация документов по первым буквам алфавита.

<?php
$allowed_req = array(
    # 'label-for-button-or-link' => 'actual-value-for-regex-clause',
    'A' => 'A',
    'B' => 'B',
    'C' => 'C',
    'D' => 'D',
    'E' => 'E',
    'F' => 'F',
    'G' => 'G',
    'H' => 'H',
    'I' => 'I',
    'J' => 'J',
    'K' => 'K',
    'L' => 'L',
    'M' => 'M',
    'N' => 'N',
    'O' => 'O',
    'P' => 'P',
    'Q' => 'Q',
    'R' => 'R',
    'S' => 'S',
    'T' => 'T',
    'U' => 'U',
    'V' => 'V',
    'W' => 'W',
    'X' => 'X',
    'Y' => 'Y',
    'Z' => 'Z',
    '0-9' => '0|1|2|3|4|5|6|7|8|9',    
    'Все' => 'A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z',
);
$cur_filter = isset($_POST['filter']) && isset($allowed_req[$_POST['filter']]) && $allowed_req[$_POST['filter']] ? $allowed_req[$_POST['filter']] : '';
$index = '<form method="post" action="[~[*id*]~]">';
foreach ($allowed_req as $label => $request) {
    if ($request) {
        $index .= '<input type="submit" name="filter" value="' . $label . '"' . ($request == $cur_filter ? ' disabled' : '') . '>' . ' ';
    }
}
$index .= '<input type="submit" name="clear" value="Очистить">' .
'</form>';
$params['parents']='4';
$params['orderBy']='pagetitle ASC';
$params['filterVar']='pagetitle';
$params['filterBy']= $cur_filter;
$params['depth']='1';
$params['extenders']='glossaryFilter';
$custom_filter = $modx->runSnippet('Ditto',$params);
return $index . ($cur_filter ?  $custom_filter  :   '');
?>

jotcount

Описание: количество комментариев Jot к определенной странице в шаблоне Ditto.

Параметры: нет

Плейсхолдеры: [+jotcount+]

Пример: вывести количество комментариев.

[!Ditto? &parents=`4` &extenders=`jotcount` &tpl=`@CODE:<h3>[+pagetitle+] <small>[+jotcount+]</small></h3>`!]

где:

  • &extenders=`jotcount` - имя используемого расширения

jotdatesort

Описание: информация о комментариях Jot к определенной странице в шаблоне Ditto.

Параметры: &jotfilter, &jotauthorfield

Плейсхолдеры: [+jotcount+], [+jotlastdate+], [+jotlastauthor+]

Пример: вывести количество комментариев.

[!Ditto? &parents=`4` &extenders=`jotdatesort` &tpl=`@CODE:<h3><a href="[~[+id+]~]">[+title+]</a></h3>Количество комментариев: [+jotcount+]<br />Автор комментария: [+jotlastauthor+]<br />Дата последнего комментария: [+jotlastdate:date=`%d.%m.%Y, %H:%M:%S`+]<br />Дата поста: [+date+]<br />Автор поста: [+author+]` &jotfilter=`1` &jotauthorfield=`Гость`!]

где:

  • &extenders=`jotdatesort` - имя используемого расширения
  • &jotfilter=`1` - не выводить без комментариев
  • &extenders=`jotdatesort` - имя автора комментария (гостя)

level

Описание: вывод документов определенного уровня.

Параметры: &level

Плейсхолдеры: нет

Пример: вывести количество комментариев.

[!Ditto? &parents=`4` &extenders=`level` &depth=`3` &level=`3`!]

где:

  • &extenders=`level` - имя используемого расширения
  • &depth=`3` - глубина сканирования
  • &level=`3` - вывести документы 3-го уровня

search

Описание: поиск на Ditto.

Параметры: &searchFields, &searchOptions, &searchString, &searchOptionsSeparators

Плейсхолдеры: нет

Пример:

[!Ditto? &parents=`4` &extenders=`search` &searchString=`my search string` &searchFields=`content,tv1,tv2` &searchOptions=`caseSensitive` ...`!]

где:

  • &extenders=`search` - имя используемого расширения
  • &searchString=`my search string` - поисковый запрос
  • &searchFields=`content,tv1,tv2` - поля и переменные шаблона, по которым происходит поиск
  • &searchOptions=`caseSensitive` - производить поиск с учетом регистра

tvFilter

Описание: фильтрация документов по заданным TV.

Параметры: &tvFilterBy, &tvFilterMode

Плейсхолдеры: нет

Пример: показать все дочерние документы контейнеров 3, 4 и 5, к которым привязан TV-параметр dummy.

[!Ditto? &parents=`3,4,5` &extenders=`tvFilter` &tvFilterBy=`dummy` &tvFilterMode=`0`!]

где:

  • &extenders=`tvFilter` - имя используемого расширения
  • &tvFilterBy=`dummy` - имя TV-параметра, по которому происходит фильтрация
  • &tvFilterMode=`0` - исключить документы, к которым НЕ привязан TV-параметр dummy

multiTvFilter

Описание: фильтрация строк переменной шаблона multiTv.

Параметры: &multiTvFilterBy, &multiTvFilterOptions

Плейсхолдеры: нет

Пример: показать все дочерние документы контейнеров 3, 4 и 5, у которых переменная шаблона multiTv event в столбце title не содержит Important.

[!Ditto? &parents=`3,4,5` &extenders=`@FILE assets/tvs/multitv/dittoExtender/multitvfilter.extender.inc.php` &multiTvFilterBy=`event`  &multiTvFilterOptions=`[{"name":"title","type":"text","value":"Important","mode":"contains"}]`!]

где:

  • &extenders=`@FILE assets/tvs/multitv/dittoExtender/multitvfilter.extender.inc.php` - имя используемого расширения
  • &multiTvFilterBy=`event` - имя переменной шаблона multiTv, по которой происходит фильтрация
  • &multiTvFilterOptions=`[{"name":"title","type":"text","value":"Important","mode":"contains"}]` - исключить элементы, у которых в столбце title не содержится Important

Поделитесь ссылкой

Статистика

Яндекс цитирования
© 2011 - 2016 Школа MODX