multiTV
MultiTV позволяет преобразовать переменную шаблона в список из нескольких элементов.
Установка
1. Скачать файлы по ссылке
2. Загрузите скаченные файлы в папку assets/tvs/multitv
3. Создайте новый TV-параметр с типом ввода custom input (если вы назовете этот параметр multidemo, он будет использовать конфигурационный файл assets/tvs/multitv/configs/multidemo.config.inc.php, для параметра с другим названием, не забудьте создать аналогичный конфигурационный файл)
3. В поле Возможные значения поместите следующий код:
@INCLUDE/assets/tvs/multitv/multitv.customtv.php
4. При обновлении с версии 1.4.10 и ниже вы можете установить сниппет updateTV для изменения данных в вашем multiTVs в новый формат. Это потребуется, если вы хотите добавить/удалить столбцы в multiTV.
Опции
Все опции задаются в конфигурационном файле в папке configs с тем же именем, что и переменная шаблона и с расширением .config.inc.php.
Свойства полей
Поле |
Описание |
Значение по умолчанию |
caption |
Заголовок (при horizontal) или лейбл (при vertical) для поля ввода |
нет |
type |
Тип поля ввода (используются все типы ввода MODX кроме url и richtext, добавлен thumb для отображения эскизов изображений) |
text |
elements |
Для ввода возможных значений переменной, например, для выпадающего списка всех дочерних документов корневой папки сайта: @SELECT `pagetitle`, `id` FROM `modx_site_content` WHERE parent = 0 ORDER BY `menuindex` ASC |
нет |
default |
Значение по умолчанию. This value could contain calculated parts. Может содержать два плэйсхолдера: {i} - автоматически увеличивающийся индекс, {alias} - псевдоним редактируемого документа. |
нет |
thumbof |
Название миниатюры изоображения |
нет |
width |
Ширина поля ввода (только если тип отображения полей horizontal) |
нет |
Поддерживаемые типы полей: text, rawtext, email, number, textareamini, textarea, rawtextarea, htmlarea, date, dropdown, listbox, listbox-multiple, checkbox, option, image, file
Шаблоны для сниппета multiTV
Поле |
Описание |
Значение по умолчанию |
rowTpl |
Шаблон вывода строки. Может быть изменен в вызове сниппета |
нет |
outerTpl |
Шаблон вывода внешнего блока. Может быть изменен в вызове сниппета |
нет |
Конфигурации:
Поле |
Описание |
Значение по умолчанию |
enablePaste |
multiTV может содержать ссылку для вставки данных из таблицы |
TRUE |
enableClear |
Ссылка на удаление всех элементов multiTV |
TRUE |
csvseparator |
Разделитель столбцов |
, |
Сниппет multiTV
Установка
Создайте новый сниппет multiTV со следующим кодом:
<?php
return include(MODX_BASE_PATH.'assets/tvs/multitv/multitv.snippet.php');
?>
Применение
Вставьте примерно такой вызов сниппета (параметры docid, display, rows, toPlaceholder и randomize при использовании стандартных значений могут быть удалены из вызова).
[!multiTV?
&tvName=`yourMultiTVname`
&docid=`[*id*]`
&tplConfig=``
&outerTpl=`@CODE:<ul>((wrapper))</ul>`
&rowTpl=`@CODE:<li>((event)), ((location)), ((price))</li>`
&display=`5`
&rows=`all`
&toPlaceholder=``
&randomize=`0`
&orderBy=``
&published=`1`
&emptyOutput=`1`
&emptyOutput=`1`
&outputSeparator=``!]
Параметры
Параметр |
Описание |
Значение по умолчанию |
tvName |
Имя TV-параметра, который содержит multiTV (имена полей multiTV будут получены из конфигурационного файла) |
нет |
docid |
Id документа, содержащего multiTV |
id текущего документа |
tplConfig |
Ключ массива в конфигурационном файле, который содержит конфигурацию шаблона вывода (будет с префиксом шаблона) |
'' |
offset |
Количество первых строк, которые необходимо пропустить |
0 |
outerTpl |
Шаблон внешнего блока: имя чанка, имя файла (должно начинаться с @FILE) или код (должно начинаться с @CODE - плэйсхолдеры должны быть в двойных скобках (( и )). |
@CODE:<select name="$tvName">[+wrapper+]</select> или шаблон в конфигурационном файле |
rowTpl |
Шаблон вывода строки: имя чанка, имя файла (должно начинаться с @FILE) или код (должно начинаться с @CODE - плэйсхолдеры должны быть в двойных скобках (( и )). |
@CODE:<option value="[+value+]">[+key+]</option> или шаблон в конфигурационном файле |
display |
Количество отображаемыз строк, all - показать все |
5 |
rows |
Разделенный запятыми список номеров строк, которые должны быть отображены |
all |
toPlaceholder |
Вывод плейсхолдера присваивается качестве переменной шаблона (т.е. [+element+]), отдельные элементы присваиваются плейсхолдеры названные в качестве переменной шаблона с последующим номером строки (т.е. [+element.1+]). Нормальный выход фрагмент подавляется. |
нет |
randomize |
Случайный порядок вывода строк |
0 |
orderBy |
Имя столбца и порядок направления (направление по умолчанию по возрастанию - asc) для сортировки вывода |
нет |
published |
Отображать только multiTV из опубликованных (1), неопубликованных (0) или любых (2) документов |
1 |
emptyOutput |
Вернуть пустую строку, если multiTV пуста, иначе возвращает внешний шаблон |
1 |
outputSeparator |
Вернуть пустую строку, если multiTV пуста, иначе возвращает внешний шаблон |
пусто |
По умолчанию шаблоны для внешнего блока и строки могут быть определены в файле конфигурации. Эти шаблоны могут быть перезаписаны параметрами rowTpl и outerTpl в вызове сниппета.
Плэйсхолдеры rowTpl
Имя |
Описание |
fieldname |
Может быть использовано каждое поле, определенное в конфигурации |
iteration |
Содержит номер текущего элемента multiTV |
row.number |
Содержит номер строки текущего элемента multiTV |
row.class |
'first' - для первой отображенной строки, 'last' - для последней отображенной строки |
row.total |
Содержит количество всех отображаемых строк |
docid |
Значение параметра docid или id текущего документа |
Плэйсхолдеры outerTpl
Имя |
Описание |
wrapper |
Место вывода всех строк |
rows.offset |
Содержит количество строк от начала, которые не отображаются |
rows.total |
Содержит количество всех отображаемых строк |
docid |
Значение параметра docid или id текущего документа |