- Главная
- Документация
- Ditto
- 193243
- Июль 2014
Автор: Марк Каплан
Ditto - сниппет для организации информации из множества документов в необходимом виде. С его помощью можно реализовать:
- блог
- список статей, новостей, ссылок
- архив новостей
- каталог товаров, сайтов, файлов и т.д.
- RSS, XML, JSON, ATOM данные
- много других форматов вывода, благодаря полной поддержке шаблонов
Параметры Ditto
Значение по умолчанию: default
Примечание: Файл конфигурации может включать значения различных параметров Ditto, избавляя от неудобств, связанных с ограничениями, накладываемыми MODx на значения параметров сниппетов (нельзя использовать &, `, <enter> т.п.). Файлы конфигурации сохраняются в папке &ditto_base/configs/. Их имена имею формат &config.config.php
Пример:
&config=``
Значение по умолчанию: [LANG]
Примечание: Определяет формат времени, которое выводится с помощью плейсхолдера
Пример:
&dateFormat=`%d.%m.%Y`
Значение по умолчанию: createdon
Примечание: Любое значение времени в формате UNIX timestamp из поля MODx или TV-параметра, как например createdon, pub_date, or editedon.
Пример:
&dateSource=`pub_date`
Значение по умолчанию: 0
Примечание: Режим отладки позволяет разобраться в сложных и непонятных ситуациях. Особенно актуальная возможндость для крупных сайтов, где множество вызовов Ditto могут конфликтовать между собой. При включенном режиме отладки помимо результатов работы выводится множество полезной для разработчика информации (все параметры, список документов результата, их ID и т.п.).
Пример:
&debug=`1`
Значение по умолчанию: 1
Примечание: Число уровней в глубину для поиска документов. Документы будут найдены внутри документов-контейнеров, указанных в &startID и &parents и вложенных документов-контейнеров до уровня указанного в &depth. Т.е. если этот параметр равен 1, то будут брать только непосредственно дочерние документы, указанных в &startID и &parents. Если &depth = 2, в поиск пройдет еще и в дочерних.
Пример:
&depth=`5`
Значение по умолчанию: 3
Примечание: all - все документы
&display - это число отображаемых документов на странице при включенной пагинации. Для ограничения вывода количества документов без пагинации использовать параметр &total
Пример:
&display=`10`
Значение по умолчанию: [(base_path)]assets/snippets/ditto/
Примечание: Папка со слэшем на конце, указывающая размещение фалов Ditto на сервере. Как правило этот параметр изменять не приходится.
Пример:
&ditto_base=``
Значение по умолчанию: нет
Примечание: Этот параметр должен сожержать список 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
Примечание: Ditto умеет работать с различными форматами данных. Например, он может выводить RSS ленту новостей или данные в XML формате.
Пример:
&format=`rss`
Значение по умолчанию: |
Примечание: Задает значение разделителя для параметра &filter.
Пример:
&globalFilterDelimiter=``
Значение по умолчанию: NULL
Примечание:
Пример:
&hiddenFields=``
Значение по умолчанию: 0
Примечание:
Пример:
&hideFolders=`1`
Значение по умолчанию: 1
Примечание:
Пример:
&hidePrivate=`0`
Значение по умолчанию: нет
Примечание: Уникальный идентификатор нужен главным образом тогда, когда необходимо использовать более одного вызова Ditto на странице, причем актуален этот параметр тогда, когда для более чем одного вызова Ditto используются глобальные плэйсхолдеры.
К примеру, Вы выводите на одной странице спосок новостей и список последних публикаций, причем оба списка имеют пэйджер. Если Вы вставите дважды [+pages+], то оба пэйджера будут управлять двумя списками сразу. Это во-первых. А во-вторых оба пэйджера буду отражать страницы первого списка. Т.е. когда MODx обработает первый вызов, он заменит оба плэйсхолдера [+pages+] на это значение. А список страниц второго списка ни куда не попадет.
Так вот в таком случае, следует использовать для каждого вызова Ditto свой id. А глобальные плэйсхолдеры примут вид [+id_placeholder+]. Символ подчеркивания между идентификатором и названием плэйсхолдера добавится автоматически.
Пример:
&id=`nav`
Значение по умолчанию: 0
Примечание: Используется как [+keywords+] или источник tagData.
Пример:
&keywords=`1`
Значение по умолчанию: english
Примечание: В языковых файлах Ditto хранятся шаблоны, используемые по-умолчанию, описания ошибок и уведомления.
Ditto сначала загружает свой стандартный языковой файл, а уже после этого тот файл, что указан в данном параметре. Таким образом, если в файле указанном пользователем нет какой-либо строки, она будет использована из стандартного файла. Примечание. Языковые файлы находятся в папке &ditto_base/lang/. Имена имею формат: &language.inc.php
Пример:
&language=`russian-UTF8`
&localFilterDelimiter - Разделитель, используемый для разделения отдельных параметров в каждой строке фильтра
Значение по умолчанию: ,
Примечание:
Пример:
&localFilterDelimiter=``
Значение по умолчанию: LANG
Примечание:
Пример:
&noResults=`Документы не найдены`
Значение по умолчанию: createdon DESC
Примечание: Взамен &sortBy и &sortDir.
Пример:
&orderBy=`pagetitle ASC`
Значение по умолчанию: Текущий документ
Примечание: Указывает Ditto список идентификаторов (id) документов-контейнеров, откуда будут браться документы для вывода Ditto. Документы беруться до глубины &depth.
Пример:
&parents=`1, 5, 8`
Значение по умолчанию: 1
Примечание: В Ditto имеется встроенный парсер PHx. Эта опция включает / выключает его. В зависимости от версии или сборки MODX параметр может быть по умолчанию отключен.
Пример:
&phx=`0`
Значение по умолчанию: 0
Примечание: 0 - нет ограничения
Пример:
&queryLimit=``
Значение по умолчанию: 0
Примечание: Остерегайтесь кэшированных вызовов!
Пример:
&randomize=`1`
Значение по умолчанию: NULL
Примечание: Обычно используется для удаления комментариев
Пример:
&removeChunk=``
Значение по умолчанию: 0
Примечание: 0 - off; returns output
1 - remaining; returns output
2 - all;
3 - all; returns ph only
Пример:
&save=`3`
Значение по умолчанию: 0
Примечание: Используется если глубина (&depth) больше 1
Пример:
&seeThruUnpub=`1`
Значение по умолчанию: 0
Примечание:
0 - показывать все документы
1 - показывать только документы у которых поставлен флаг «Показывать в меню»
Пример:
&showInMenuOnly=`1`
Значение по умолчанию: 1
Примечание:
0 - показывать только неопубликованные документы
1 - показывать только опубликованные документы
Пример:
&showPublishedOnly=`0`
Значение по умолчанию: 0
Примечание:
Пример:
&start=`5`
Значение по умолчанию: all
Примечание:
Пример:
&total=`10`
Значение по умолчанию: NULL
Примечание: Используется только для параметров документов. Не поддерживает TV-параметры.
Пример:
&where=``
Шаблоны
Значение по умолчанию: LANG
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tpl=`news`
Значение по умолчанию: &tpl
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplAlt=`news_alt`
Значение по умолчанию: &tpl
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplCurrentDocument=`news_current`
Значение по умолчанию: &tpl
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplFirst=`news_first`
Значение по умолчанию: &tpl
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplLast=`news_last`
Значение по умолчанию: нет
Примечание: Доступные плейсхолдеры:
[+ditto+]
или идентичный ему
[+wrapper+]
Пример:
&outerTpl=`<ul>[+ditto+]</ul>`
Параметры пагинации
Значение по умолчанию: 0
Примечание: На каждой странице выведется &show документов. Для вывода пэйджера используются глобальные плэйсхолдеры:
[+next+] – Кнопка «Следующее»
[+previous+] – Кнопка «Предыдущее»
[+pages+] – Список страниц
[+totalPages+] – Общее количество страниц
[+start+] – Номер первой показываемой страницы
[+stop+] – Номер последней показываемой страницы
[+currentPage+] – Номер показываемой текущей страницы
[+total+] – Общее количество страниц
Пример:
&paginate=`1`
Значение по умолчанию: 0
Примечание: В случае если страницы для перехода нет (крайние страницы), то ссылка Previous или Next будет показана в виде текста без ссылки и будет заключена в тэг <spanclass="ditto_off">Privious</span>
0 - показывать ссылки Next и Previous только, если существуют страницы для перехода
1 - всегда показывать ссылки Next и Privious
Пример:
&paginateAlwaysShowLinks=`1`
Значение по умолчанию: |
Примечание: Символ для разделения Previous и Next, когда paginateAlwaysShowLinks выключен и обе ссылки есть. Предотвращает показ ссылок в виде <Previous Next>, когда [+pages+] не используется
Пример:
&paginateSplitterCharacter=``
Значение по умолчанию: <span class='ditto_currentpage'>[+page+]</span>
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplPaginateCurrentPage=``
Значение по умолчанию: <a href='[+url+]' class='ditto_next_link'>[+lang:next+]</a>
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplPaginateNext=`newsPaginateNext`
Значение по умолчанию: <a href='[+url+]' class='ditto_previous_link'>[+lang:previous+]</a>
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplPaginatePrevious=`newsPaginatePrevious`
Значение по умолчанию: <span class='ditto_next_off ditto_off'>[+lang:next+]</span>
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FIL
Пример:
&tplPaginateNextOff=``
Значение по умолчанию: <a class='ditto_page' href='[+url+]'>[+page+]</a>
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplPaginatePage=``
Значение по умолчанию: <span class='ditto_previous_off ditto_off'>[+lang:previous+]</span>
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplPaginatePreviousOff=``
Параметры summary
Значение по умолчанию: 1
Примечание:
Пример:
&truncSplit=`0`
Значение по умолчанию: 1
Примечание:
0 - выкл
1 - вкл
Пример:
&trunc=`0`
Значение по умолчанию: <!-- splitter -->
Примечание: Любой уникальный текст или код, который содержится в содержании каждого документа
Пример:
&truncAt=``
Значение по умолчанию: 300
Примечание: Любое число больше чем &truncOffset
Пример:
&truncLen=`800`
Значение по умолчанию: 30
Примечание: Любое число не превышающее &truncLen
Пример:
&truncOffset=`50`
Значение по умолчанию: Read more...
Примечание: Любой текст или отрывок html-кода
Пример:
&truncText=`Читать далее...`
Значение по умолчанию: &truncText
Примечание:
Любое валидное название чанка
Код через @CODE
Файл через @FILE
Пример:
&tplTrunc=``
Параметры dateFilter
Значение по умолчанию: get
Примечание:
Пример:
&dateFilterSource=``
Значение по умолчанию: 0
Примечание: 0,1,2,3 (выключено, текущий год, текущий месяц, сегодня)
Пример:
&dateFilterDefault=`1`
Значение по умолчанию: нет
Примечание: Численное значение месяца
Пример:
&month=`10`
Значение по умолчанию: нет
Примечание:
Пример:
&year=`2012`
Значение по умолчанию: нет
Примечание:
Пример:
&day=`25`
Параметры tagging
Значение по умолчанию:
Примечание:
Пример:
&tagDocumentID=``
Значение по умолчанию: нет
Примечание: Любые допустимые теги, разделенные с помощью tagDelimiter
Пример:
&tags=``
Значение по умолчанию: onlyTags
Примечание:
onlyAllTags показать документа, содержащие все теги из параметра tags
onlyTags показать документы, которые имеют любой из тегов tags
removeAllTags удалить документы, которые содержат все теги tags
removeTags удалить документы, которые имеют любой из тегов tags
Пример:
&tagMode=`onlyAllTags`
Значение по умолчанию: пробел
Примечание: Любой символ, не содержащийся в тегах
Пример:
&tagDelimiter=`, `
Значение по умолчанию: 0
Примечание: 1 - вкл., 0 - выкл.
Пример:
&caseSensitive=`1`
Значение по умолчанию: значение параметра tagDelimiter
Примечание:
Пример:
&tagDisplayDelimiter=`, `
Значение по умолчанию: 1
Примечание:
Пример:
&tagSort=`0`
Значение по умолчанию: нет
Примечание: автоматически добавляет в пометки Extender
Пример:
&tagData=`tags`
Значение по умолчанию: 1
Примечание:
1 - строка с ссылками и разделителем tagDisplayDelimiter)
2 - UL/LI список
Пример:
&tagDisplayMode=`2`
Значение по умолчанию: нет
Примечание:
Пример:
&tplTagLinks=``
Значение по умолчанию: нет
Примечание:
Пример:
&tagCallback=``
Параметры request
Значение по умолчанию: 1
Примечание:
Пример:
&stripTags=`0`
Значение по умолчанию: seeThroughtUnpub, showInMenuOnly, showPublishedOnly, debug, start, config, extenders, dittoID
Примечание:
Пример:
&bad=``
Значение по умолчанию: Все параметры, которые не вошли в список bad
Примечание:
Пример:
&good=``
Параметры glossaryFilter
Значение по умолчанию: pagetitle
Примечание: ВАЖНО! Вам лучше избегать использования поля content, либо делать это осмотрительно
Пример:
&filterVar=``
Значение по умолчанию: 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
Примечание:
Пример:
&forceUTF8=`1`
Параметры search
Значение по умолчанию: content
Примечание:
Пример:
&searchFields=`content,tv1,tv2`
Значение по умолчанию: нет
Примечание: caseSensitive - производить поиск с учетом регистра
regex - поиск с регулярными выражениями
snippet - использование сниппетов для получения результатов
Пример:
&searchOptions=`caseSensitive`
Значение по умолчанию: пусто
Примечание: JSON строка с разделителями для списка опций.
Пример:
&searchString=`@CHUNK regexSearchChunk`
Значение по умолчанию: '{"outer":",","inner":"="}'
Примечание:
Пример:
&searchOptionsSeparators=``
Параметры tvFilter
Значение по умолчанию: пусто
Примечание:
Пример:
&tvFilterBy=``
Значение по умолчанию: 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