Переборка полей документа оператором foreachПоддерживается в <dynamic> <foreach type=content>
Оператор foreach с типом
content используется для последовательного перебора полей
документа, определенных При использовании оператора foreach с типом content можно обращаться к следующим служебным полям: _type – числовой код, описывающий тип поля: 1 Текстовое поле _code – имя поля; _description – описание поля; _tab закладка, в которой находится поле _sort Значение координаты поля по оси Y _count – порядковый номер поля; _total – общее количество полей в документе.
В <foreach type=content> параметр where не работает. Для выборки используйте оператор <if> Параметр sort="_sort" сортирует поля по их расположению в закладке (по высоте) ПримерПостроим форму по КШ документа с ID 437
<foreach name=s path="437" type=content sort="_sort"
>
<if <foreach[s]._tab> == 'Данные'> {{ Выбираем поля из нужной закладки КШ }} <if <foreach[s]._type> == '4'> {{Если это галочка}} <div><input type="checkbox" name="<foreach[s]._code>" value="on"><foreach[s]._description></div> </if> <if <foreach[s]._type> == '13'> {{Вывод описания}} <h3><foreach[s]._description></h3> </if> <if <foreach[s]._type> == '1'> {{Если это текстовое поле}} <div><input type="text" name="<foreach[s]._code>"> <foreach[s]._description></div> </if> </if> </foreach> ПримерВывод таблицы характиристик товара <table class="shop">
<foreach name=s path="<#_type->_ctpl_id#>" type=content sort="_sort"> {{Выводим поля только из закладки Характиристики }} <if <foreach[s]._tab> == "Характеристики"> {{Если это текстовое поле}} <if <foreach[s]._type> == '1'> <if <#<foreach[s]._code>#>> {{если поле не пустое}} <tr> <td><foreach[s]._description> :</td> <td><#<foreach[s]._code>#></td> </tr> </if> </if> {{Если это галочка}} <if <foreach[s]._type> == '4'> <if <#<foreach[s]._code>#> == 'on'> <tr><td><foreach[s]._description></td><td>Есть</td></tr> </if> </if> {{Если это селект}} <if <foreach[s]._type> == '3'> <if <#<foreach[s]._code>#>> {{если поле не пустое}} <tr> <td><foreach[s]._description></td> <td><[<#<foreach[s]._code>#>]._name></td> </tr> </if> </if> {{Вывод описания заголовком}} <if <foreach[s]._type> == '13'> <tr><td colspan=2><h3><foreach[s]._description></h3></td></tr> </if> </if> </foreach> </table> На первый взгляд, может показаться, что код немного сложен, но тут все очень просто. Допустим у нас есть поле price. Прямой доступ к полю осуществляется так <#price#>
В случае вывода поля через <foreach> вместо кода поля price мы пишем <foreach[s]._code>. Получается <#<foreach[s]._code>#>
Особого внимания заслуживает path. Текущему документу не присвоен
<#_type#> выведет ID Типа документа.
Можно получить КШ, который задан в данном Типе документа так: <#_type->_ctpl_id#> или так: <[<#_type#>]._ctpl_id>
Примечание
В некоторых случаях для корректной работы необходимо установить для
|
![]() |
Поиск по документации![]() |