Изменить шаблон ИЭ, в зависимости от доп. свойства «флажок»

#
Изменить шаблон ИЭ, в зависимости от доп. свойства «флажок»
Добрый день!

Каким образом при помощи доп. свойства «флажок» можно было бы менять шаблон на другой? (имя доп свойства — stylefirm).

Если галочки нет:

<!-- Шаблон вывода информационного элемента -->
   <xsl:template match="blocks/items/item">
      <div class="firma">
      <h3 class="title2"><a href="{item_path}"><xsl:value-of disable-output-escaping="yes" select="item_name"/></a></h3>
         <xsl:value-of disable-output-escaping="yes" select="item_text"/>
         <div class="adres"><xsl:value-of disable-output-escaping="yes" select="item_propertys/item_property[@xml_name='email']/value"/></div>
         <div class="phone"><xsl:value-of disable-output-escaping="yes" select="item_propertys/item_property[@xml_name='fio']/value"/></div>
      <div class="add-com"><a href="{item_path}#addcom">Добавить отзыв</a></div>
      </div>
   </xsl:template>


Если галочка стоит:

<!-- Шаблон вывода информационного элемента -->
   <xsl:template match="blocks/items/item">
      <div class="firmastyle">
      <h3 class="title3"><a href="{item_path}"><xsl:value-of disable-output-escaping="yes" select="item_name"/></a></h3>
         <xsl:value-of disable-output-escaping="yes" select="item_text"/>
         <div class="adres"><xsl:value-of disable-output-escaping="yes" select="item_propertys/item_property[@xml_name='email']/value"/></div>
         <div class="phone"><xsl:value-of disable-output-escaping="yes" select="item_propertys/item_property[@xml_name='fio']/value"/></div>
      <div class="add-com"><a href="{item_path}#addcom">Добавить отзыв</a></div>
      </div>
   </xsl:template>


Буду признателен за помощь.
Держи крепко, отпускай легко :P
Модератор
#
Re: Изменить шаблон ИЭ, в зависимости от доп. свойства «флажок»
Элементарно.
Для второго шаблона дописать mode, имя может быть любым, в данном случае придумали "item_t2".
<!-- Шаблон вывода информационного элемента -->
   <xsl:template match="blocks/items/item" mode="item_t2">
      <div class="firmastyle">
      <h3 class="title3"><a href="{item_path}"><xsl:value-of disable-output-escaping="yes" select="item_name"/></a></h3>
         <xsl:value-of disable-output-escaping="yes" select="item_text"/>
         <div class="adres"><xsl:value-of disable-output-escaping="yes" select="item_propertys/item_property[@xml_name='email']/value"/></div>
         <div class="phone"><xsl:value-of disable-output-escaping="yes" select="item_propertys/item_property[@xml_name='fio']/value"/></div>
      <div class="add-com"><a href="{item_path}#addcom">Добавить отзыв</a></div>
      </div>
   </xsl:template>

При вызове, если нужно вызвать первый шаблон - как раньше, если второй - то
<xsl:apply-templates select="..." mode="item_t2"/>
#
Re: Изменить шаблон ИЭ, в зависимости от доп. свойства «флажок»
Спасибо. Можно немного попроще объяснить пожалуйста?

Как я понял (а я мало что понял), второй вариант можно писать ниже основного с mode="…".

т.е так:
<!-- Шаблон вывода информационного элемента -->
   <xsl:template match="blocks/items/item">
      <div class="firma">
      <h3 class="title2"><a href="{item_path}"><xsl:value-of disable-output-escaping="yes" select="item_name"/></a></h3>
         <xsl:value-of disable-output-escaping="yes" select="item_text"/>
         <div class="adres"><xsl:value-of disable-output-escaping="yes" select="item_propertys/item_property[@xml_name='email']/value"/></div>
         <div class="phone"><xsl:value-of disable-output-escaping="yes" select="item_propertys/item_property[@xml_name='fio']/value"/></div>
      <div class="add-com"><a href="{item_path}#addcom">Добавить отзыв</a></div>
      </div>
   </xsl:template>

<!-- Шаблон вывода информационного элемента -->
   <xsl:template match="blocks/items/item" mode="item_t2">
      <div class="firmadasdas">
      <h3 class="title2"><a href="{item_path}"><xsl:value-of disable-output-escaping="yes" select="item_name"/></a></h3>
         <xsl:value-of disable-output-escaping="yes" select="item_text"/>
         <div class="adres"><xsl:value-of disable-output-escaping="yes" select="item_propertys/item_property[@xml_name='email']/value"/></div>
         <div class="phone"><xsl:value-of disable-output-escaping="yes" select="item_propertys/item_property[@xml_name='fio']/value"/></div>
      <div class="add-com"><a href="{item_path}#addcom">Добавить отзыв</a></div>
      </div>
   </xsl:template>

Правильно?

А где и как сделать проверку на заполнение чекбокса при выборе шаблона?

Нашёл код

<!-- Отображение записи информационной системы -->
      <xsl:apply-templates select="blocks/items/item[item_status=1]"/>

Оно? Если да, то как его модифицировать?.

Заранее признателен.
Держи крепко, отпускай легко :P
#
Re: Изменить шаблон ИЭ, в зависимости от доп. свойства «флажок»
Спасибо за помощь. Проблему не решил(
Держи крепко, отпускай легко :P
Модератор
#
Re: Изменить шаблон ИЭ, в зависимости от доп. свойства «флажок»
Richie писал(а):
Правильно?

Да.
Richie писал(а):
А где и как сделать проверку на заполнение чекбокса при выборе шаблона?

Вам их нужно отдельно выводить, вначале заполненные а потом незаполненные, или вперемешку, но с разными шаблонами?
Если отдельно, то вместо
<xsl:apply-templates select="blocks/items/item[item_status=1]"/>
пишите два условия
<xsl:apply-templates select="blocks/items/item[item_status=1 and условие на включенный чекбокс]"/>
и
<xsl:apply-templates select="blocks/items/item[item_status=1 and условие на отключенный чекбокс]"/>


Если же вперемешку, то нужно действовать иначе, а именно, оставить один теплэйт (про mode забываем) и в нем написать условие:
   <xsl:template match="blocks/items/item">
      <xsl:choose>
      <xsl:when test="Условие проверки чекбокса">
         Вариант вывода 1
      </xsl:when>
      <xsl:otherwise>
         Вариант вывода 2
      </xsl:otherwise>
   </xsl:choose>

   </xsl:template>
#
Re: Изменить шаблон ИЭ, в зависимости от доп. свойства «флажок»
HostCMS писал(а):
Вам их нужно отдельно выводить, вначале заполненные, а потом незаполненные, или вперемешку, но с разными шаблонами?


Спасибо за ответ HostCMS. Сначала заполненные, потом незаполненные.

Пойду читать как сделать условие на вкл/выкл чекбокс. С xsl первый раз столкнулся.
Держи крепко, отпускай легко :P
Модератор
#
Re: Изменить шаблон ИЭ, в зависимости от доп. свойства «флажок»
Richie,
у Вас флажок доп. свойством?
Тогда примерно так для св-ва с именем checkbox, у Вас может быть другое xml-имя свойства:
<xsl:apply-templates select="blocks/items/item[item_status=1 and item_propertys/item_property[@xml_name='checkbox']/value = 1]"/>

во втором случае равно 0.
#
Re: Изменить шаблон ИЭ, в зависимости от доп. свойства «флажок»
HostCMS писал(а):
у Вас флажок доп. свойством?

Да, доп. свойство.

Смена шаблона заработала (добавил mode="", как была дана была инструкция выше).

Но появилась проблема. Теперь показываються только элементы с включенным чекбоксом. Без чекбокса — не показываются вовсе.
Держи крепко, отпускай легко :P
Модератор
#
Re: Изменить шаблон ИЭ, в зависимости от доп. свойства «флажок»
Richie,
Тогда попробуем так:
<xsl:apply-templates select="blocks/items/item[item_status=1 and item_propertys/item_property[@xml_name='checkbox']/value != 1]"/>
#
Re: Изменить шаблон ИЭ, в зависимости от доп. свойства «флажок»
<xsl:apply-templates select="blocks/items/item[item_status=1 and item_propertys/item_property[@xml_name='stilfirmi']/value != 1]" mode="platfirm"/>
<xsl:apply-templates select="blocks/items/item[item_status=1 and item_propertys/item_property[@xml_name='stilfirmi']/value != 0]" mode="neplatfirm"/>

С такой конструкцией выводит элементы с вкл. чекбоксом без применения стиля (т.е mode не срабатывает). Без чекбокса по прежнему не выводит
Держи крепко, отпускай легко :P
Авторизация