Опция 1==1||Опция 2==2||Опция 3==3
Для вывода названия опции из сохраненного значения TV используем сниппет getTvDisplayName.
Коротко поясню работу компонента. При вызове в качестве фильтра вывода
[[*tempvar:getTvDisplayName]]
сниппет возвращает текст опции, записанной в переменной [[*tempvar]]
при мультивыборе возвращает строку из опций через разделитель, указанный в параметрах вывода TV.Небольшая модификация позволяет выводить список всех возможных значений переменной, для заполнения, например списка. Для удобства добавим INLINE чанки обертки строк и всего списка.
Небольшое уточнение, в коде сниппета, представленного в репозитории, последняя строка содержит лишний символ "?". Его нужно удалить, чтобы компонент начал работать).
Итак, строка 86, добавляем свой код (требуется установленный pdoTools):
//дополнительные опции сниппета
if (!$pdo = $modx->getService('pdoTools')) {$modx->log(1,"Не установлен компонент pdotools");}
else {
//параметр &tpl обертка элемента списка, плейсхолдеры +opt - метка элемента, +val - значение
//пример &tpl=`@INLINE <option value="[[+val]]">[[+opt]]</option>`
if ($tpl) {
$output = '';
foreach ($lookup as $val => $n ) {
$tmp = array('opt' => $n,
'val'=> $val
);
$output .= $pdo->getChunk($tpl, $tmp);
}
//параметр &tplWrap обертка всего списка, плейсхолдер +out
//пример &tplWrap=`@INLINE <select>[[+out]]</select>`
if ($tplWrap) {
$temp = array ('out' => $output);
$output = $pdo->getChunk($tplWrap, $temp);
}
return $output;
}
}
При пустых дополнительных параметрах сниппет работает, как обычно.
Пример вызова на странице документа, содержащего TV с названием «tempvar»:
[[!getTvDisplayName?
&name=`tempvar`
&tplWrap=`@INLINE <select>[[+out]]</select>`
&tpl=`@INLINE <option value="[[+val]]">[[+opt]]</option>`]]
Комментарии (0)