Класс первому не пустому дополнителльному свойству

#
Класс первому не пустому дополнителльному свойству
Добрый вечер!

Вывожу дополнительные свойства и их значения с помощью вкладок:
   
<xsl:variable name="myItem" select="." />
   <xsl:if test="count(property_value[value != '' or file != ''])">
      <!-- Nav tabs -->
         <ul class="nav nav-tabs sad">
              <xsl:for-each select="/informationsystem/informationsystem_item_properties//property">
                                  <xsl:variable name="propertyId" select="@id" />
                                 <xsl:choose>
                                <xsl:when test="count($myItem/property_value[property_id = $propertyId])">
                            <li>
            <xsl:if test="count($myItem/property_value[property_id = $propertyId]) and property_value[value != '' or file != '']">
                                <xsl:attribute name="class">active</xsl:attribute>
            </xsl:if>
                                     <a href="#{@id}" data-toggle="tab"><xsl:value-of select="name"/>
               </a>
                                </li>
                  
                                </xsl:when>
                               <xsl:otherwise><td></td></xsl:otherwise>
                                </xsl:choose>
                             </xsl:for-each>
          </ul>

         <div class="tab-content sad">
            <xsl:for-each select="/informationsystem/informationsystem_item_properties//property">
                                   <xsl:variable name="propertyId" select="@id" />
                    <div class="tab-pane fade" id="{@id}">
               <xsl:if test="count($myItem/property_value[property_id = $propertyId]) and position() = 1">
                                           <xsl:attribute name="class">tab-pane active in</xsl:attribute>
               </xsl:if>
                                          <xsl:apply-templates select="$myItem/property_value[property_id = $propertyId]"/>
                                          </xsl:if>
               </div>
               </xsl:for-each>
               </div>
                </xsl:if>
            <div style="clear: both"></div>
            


таким образом классы подставляются всем свойствам, где значение не пустое.
Если добавлять проверку по
position() = 1
,
то считает самое первое дополнительное свойство, а как сделать, чтобы класс присваивался первому не пустому!
спасибо
Модератор
#
Re: Класс первому не пустому дополнителльному свойству
ulla, вам нужно проверять еще до применения шаблона, просто дописываете предикат:
count($myItem/property_value[property_id = $propertyId][value != '' or file != ''])
#
Re: Класс первому не пустому дополнителльному свойству
HostCMS писал(а):

спасибо, что ответил в выходной!

Класс подставляется таким образом:
1. если во всех 4 свойствах есть значения - то ко всем,
2. если в двух и оба разного типа (строка и файл) - то к одному.

у меня 4 дополнительных свойства - 3 тип файл и 1 строка.

во общем не получается
Модератор
#
Re: Класс первому не пустому дополнителльному свойству
ulla, а как нужно подставлять класс?
#
Re: Класс первому не пустому дополнителльному свойству
по логике вкладок -  при загрузке страницы открытой показывается та вкладка к которой присвоен класс "актив".
Если бы заполнялись все свойства и всегда, то это не проблема)

но у меня не всегда все свойства заполняются и где то может быть заполнено только одно свойство. И оно может быть 3 по счету в XML


<informationsystem_item_properties>
      <property id="70">
         <property_dir_id>0</property_dir_id>
         <list_id>0</list_id>
         <informationsystem_id>0</informationsystem_id>
         <shop_id>0</shop_id>
         <name>Фотогалерея</name>
         <description></description>
         <type>2</type>
         <default_value></default_value>
         <tag_name>foto</tag_name>
         <sorting>0</sorting>
         <image_large_max_width>800</image_large_max_width>
         <image_large_max_height>800</image_large_max_height>
         <image_small_max_width>200</image_small_max_width>
         <image_small_max_height>120</image_small_max_height>
         <hide_small_image>1</hide_small_image>
         <guid>BEDF824E-83C0-8073-D885-0D8A20087405</guid>
         <multiple>1</multiple>
         <user_id>19</user_id>
      </property>
      
      <property id="71">
         <property_dir_id>0</property_dir_id>
         <list_id>0</list_id>
         <informationsystem_id>0</informationsystem_id>
         <shop_id>0</shop_id>
         <name>Документы</name>
         <description></description>
         <type>2</type>
         <default_value></default_value>
         <tag_name>docs</tag_name>
         <sorting>0</sorting>
         <image_large_max_width>800</image_large_max_width>
         <image_large_max_height>800</image_large_max_height>
         <image_small_max_width>200</image_small_max_width>
         <image_small_max_height>120</image_small_max_height>
         <hide_small_image>1</hide_small_image>
         <guid>FECD581E-FE56-9251-1180-9E1490CB13AB</guid>
         <multiple>1</multiple>
         <user_id>19</user_id>
      </property>
      
      <property id="72">
         <property_dir_id>0</property_dir_id>
         <list_id>0</list_id>
         <informationsystem_id>0</informationsystem_id>
         <shop_id>0</shop_id>
         <name>Видео</name>
         <description></description>
         <type>1</type>
         <default_value></default_value>
         <tag_name>video</tag_name>
         <sorting>0</sorting>
         <image_large_max_width>300</image_large_max_width>
         <image_large_max_height>300</image_large_max_height>
         <image_small_max_width>70</image_small_max_width>
         <image_small_max_height>70</image_small_max_height>
         <hide_small_image>0</hide_small_image>
         <guid>02DE4A2F-BC49-4FB7-03B9-9244610F80E7</guid>
         <multiple>1</multiple>
         <user_id>19</user_id>
      </property>
      
      <property id="73">
         <property_dir_id>0</property_dir_id>
         <list_id>0</list_id>
         <informationsystem_id>0</informationsystem_id>
         <shop_id>0</shop_id>
         <name>Презентация</name>
         <description></description>
         <type>2</type>
         <default_value></default_value>
         <tag_name>present</tag_name>
         <sorting>0</sorting>
         <image_large_max_width>800</image_large_max_width>
         <image_large_max_height>800</image_large_max_height>
         <image_small_max_width>200</image_small_max_width>
         <image_small_max_height>120</image_small_max_height>
         <hide_small_image>1</hide_small_image>
         <guid>B7D3EF83-3790-41C2-F592-85B732EF2C2C</guid>
         <multiple>1</multiple>
         <user_id>19</user_id>
      </property>
   </informationsystem_item_properties>


и первым в списке вывода:

<ul class="nav nav-tabs sad">
<li class="active1">
<a data-toggle="tab" href="#71">Документы</a>
</li>
<li class="active1">
<a data-toggle="tab" href="#73">Презентация</a>
</li>
</ul>
<div class="tab-content sad">
<div id="70" class="tab-pane fade"></div>
<div id="71" class="tab-pane active in">docsdocs</div>
<div id="72" class="tab-pane fade">video</div>
<div id="73" class="tab-pane active in">present</div>
</div>


И мне нужно, чтобы класс добавлялся к этому заполненному ПЕРВОМУ  в списке вывода свойству, а остальные пустые не показывались





#
Re: Класс первому не пустому дополнителльному свойству
Решено через Jquery
$(".sad li:first-child").addClass("active");


не знаю, насколько это правильно, но других идей у меня нет пока
Авторизация