UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Axiomateria от 18 Января 2014, 17:26:47

Название: Не выводить пустые поля для выпадающего списка
Отправлено: Axiomateria от 18 Января 2014, 17:26:47
Здравствуйте!

У меня в объекте есть несколько разных полей с выпадающими списками элементов в них и не на всех объектов каталога они заполняются, то есть поле "Мобильная версия" с выпадающим список с трёмя элементами справочника:  "да" , "нет" ,  "в разработке".
На данный момент поле "Мобильная версия" отображается на сайте даже если ни чего не выбрано из эти трёх вариантов справочника.

Вызов:  
<xsl:apply-templates select=".//group[@name = 'card_site_full']/property" mode="cardsitefull" />

Шаблон:
    <xsl:template match="property[@type='relation']" mode="cardsitefull">
        <div class="item-properties">                                                        
            <xsl:value-of select="title"/>
            <xsl:text>: </xsl:text>
            <xsl:value-of select="value/item/@name"/>
        </div>
    </xsl:template>
    <xsl:template match="property[@type='relation' and value = '']" mode="cardsitefull"/>  

Как сделать так, что поле "Мобильная версия" вообще не выводилось, если ни один из трёх вариантов справочника не выбран при редактировании объекта ?
Название: Re:Не выводить пустые поля для выпадающего списка
Отправлено: admin от 18 Января 2014, 21:58:13
пустые поля погружаются, скорее всего, из-за параметра ?show-empty (смотрите строчку, типа <xsl:apply-templates select="document(concat('upage://', page/@id,'?show-empty'))/udata" mode="object-view" />)

Если этого параметра не будет, то поля, у которых пустые значения, не будут выводиться в xml (в том числе, поля типа "кнопка галочка", если она не поставлена)

Если в вашем xml по каким-то причинам все равно надо выводить все поля, даже пустые, то делайте проверку на существование значения в этом поле.
Для пример, шаблон, который был приведен выше, можно попробовать так.
<xsl:template match="property[@type='relation']" mode="cardsitefull"/>  
<xsl:template match="property[@type='relation' and value/item/@id]" mode="cardsitefull">
<div class="item-properties">                                                       
<xsl:value-of select="title"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="value/item/@name"/>
</div>
</xsl:template>
Название: Re:Не выводить пустые поля для выпадающего списка
Отправлено: Axiomateria от 19 Января 2014, 12:09:24
[quote author=admin link=topic=1736.msg7399#msg7399 date=1390067893]
пустые поля погружаются, скорее всего, из-за параметра [b]?show-empty[/b] (смотрите строчку, типа [b]<xsl:apply-templates select="document(concat('upage://', page/@id,'?show-empty'))/udata" mode="object-view" />[/b])
Если этого параметра не будет, то поля, у которых пустые значения, не будут выводиться в xml (в том числе, поля типа "кнопка галочка", если она не поставлена)
[/quote]
Спасибо, Admin, это то что и надо!

Кстати не подскажите, где можно почитать про вот этим самые "?show-empty" , "?extProps" и еже подобные вещи ?
Интересует хотя бы их основной список с кратким описанием их предназначения.
Название: Re:Не выводить пустые поля для выпадающего списка
Отправлено: admin от 19 Января 2014, 13:00:06
?show-empty - вывод всех полей при работе с протоколом upage
?skip-lock=1 выводит кнопки на управление системными полями (изменить, удалить, добавить поле в группу) на страницах редактирования типа данных (шаблон данных в админке).
?extProps и ?extGroups - вывод доп полей и доп групп при работе с макросами (через протокол udata) выводящими список чего-то (товаров, новостей, комментариев и т.п.) почитать можно в документации (http://dev.docs.umi-cms.ru/shablony_i_makrosy/xslt-shablonizator_umi_cms/makrosy_protokol_udata/#extended)

есть еще параметры:
?expire=600  -  кеширование результатов xml запроса
?showStreamsCalls - показывает, что именно запрашивается на конкретной странице и по каким протоколам

.xml
- вывод данной странихы в xml виде
.json - вывод данной страницы или данного макроса в json виде

... вроде, основные все написал.