Здравствуйте! Подскажите пожалуйста, как вывести во фронтенде Select-список из TV? Что-то голова уже не варит… Создал TV: параметры ввода: @SELECT pagetitle, id FROM modx_site_content WHERE parent=18 В ресурсах >> дополнительные поля >> выводится нормальный список с категориями — ОК А во фронтенде, как? Создал еще снипет: /* ShowDropdown сниппет */ $items = $modx->getOption('items', $scriptProperties, 'Нет данных для показа'); $multiple = $modx->getOption('multiple', $scriptProperties, false);
/* Задать Tpl для каждого вывода опции */ $tpl = ' <option value="[[+item]]">[[+item]]</option>';
/* Конвертировать значения через запятую в массив */ $items = explode(',', $scriptProperties['items']);
/* Проверить создаём ли мы список с мультивыбором */ if ($multiple) { $output = '<select id="profile" multiple="multiple">'; } else { $output = '<select id="profile">'; }
/* Создание внутреннего HTML */ foreach ($items as $item) { $output .= "\n" . str_replace('[[+item]]', trim($item), $tpl); }
/* добавить закрывающий тег */ $output .= "\n</select>";
/* возвратить законченный HTML */
return $output; Вызываю его в чанке: [[ShowDropdown? &items=[[*category]]
&multiple=0
]] Но в выпадающем списке на странице пусто.
[[*category]]
А с чего вы взяли, что у вас поле документа должно в себе нести выборку по вашему запросу? Оно несет конечное установленное значение, но никак не выборку данных по запросу.{/foreach} </select> 4. Если вы совсем по религии хотите сделать (чтобы не было двух отдельных запросов в админке и фронте), то правильней делать так: создавать сниппет, в котором будет выполняться формирование запроса и набивка полученных данных. В нем надо будет рулить по условию тип вывода — для ТВшки все данные должны быть вида Заголовок1==id_1||Заголовок2==id_1....., а для фрона как раз своим способом и набивайте HTML. Или возвращайте JSON-строку и если используете Смарти, то там выполняйте JSON-декодинг и набивайте конечный HTML. А в ТВшке в качестве возможных значений указывайте @CHUNK, в котором будет вызываться этот сниппет (к сожалению нельзя сразу указать сниппет, ТВшки этого не умеют, хотя можно еще использовать @EVAL return $modx->runSnippet(...))