UMI-CMS: Вывод значений справочников
Источник: http://umi-cms.spb.su/api/167/215/
Нечасто, но возникает необходимость вывести на странице все значения поля типа справочник независимо от того, какое из них выбрано в админке.
Теоретически, можно попробовать это сделать макросами %data getEditForm()% — там есть весьма подходящие блоки reflection_field_relation_option и reflection_field_relation_option_a
Однако, у меня это быстро не получилось. Быстрее оказалось написать кастомный макрос:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public function getGuideList($id, $template = 'guidelist', $arrayOnly = false){ if(!$id) return null;//id справочника $o = umiObjectsCollection::getInstance(); $items = $o -> getGuidedItems($id); if(!sizeof($items)) return null; if($arrayOnly) return $items; list($guide_block, $guide_item) = def_module::loadTemplates("tpls/content/guide/{$template}.tpl", "guide_block", "guide_item"); $s = ''; $block_array = array(); foreach($items as $k=>$v){ $line_array = array(); $line_array['id'] = $k; $line_array['name'] = $items[$k]; $s .= def_module::parseTemplate($guide_item,$line_array); } $block_array['lines'] = $s; unset($items); $s = def_module::parseTemplate($guide_block,$block_array); return $s; } |
Шаблон для него помещается в tpls/content/guide/guidelist.tpl
1 2 3 4 5 6 7 8 9 | $FORMS = Array(); $FORMS['guide_block'] = <<<END <ul>%lines%</ul> END; $FORMS['guide_item'] = <<<END <li>%id% = %name%</li> END; |
Все способы вывода справочников имеют нюанс: наименования выводятся как бог на душу положит, обычно — в порядке их создания. Если необходимо определенным образом упорядочивать выборку, нужно либо вводить дополнителное поле, в котором указывать положении элемента справочника в общем списке, либо делать прямой запрос к базе (прямой или через selector) который вернет упорядоченную выборку.
Добрый день!
Пытаюсь распарсить xml данные и вывести значения в шаблон используя Ваш пример, но проблема в том что распарсенный xml такого вида:
-раздел;
-подраздел;
-подраздел;
-подраздел;
-раздел;
-раздел;
-подраздел;
-подраздел;
и я немогу сделать что бы было так:
раздел
подраздел
подраздел
подраздел
раздел
раздел
подраздел
подраздел
подраздел
можете мне подсказать, что нужно добавить в ваш пример, что бы получилось так как мне надо!?
Заранее спасибо! Буду следить за Вашим ответом…
Есть объект каталога. У него одна из характеристик, задаётся выпадающим списком. Значения списка задаются справочником. В справочнике кроме значений, есть также дополнительные поля. Каждому значению соответствует дополнительный параметр. Необходимо вывести дополнительный параметр.