XSL-условие для вывода элемента на определённой странице, например — только в категории магазина

#
XSL-условие для вывода элемента на определённой странице, например — только в категории магазина
Заголовок получился туманным, поэтому объясню подробнее.
XSL-конструкция: <xsl:if test="условие">. Что указать в условии, чтобы выводить элемент на определённой странице?
Конкретно интересует вот это:
<xsl:if test="если это главная страница магазина">{image}</xsl:if>
<xsl:else>{small_image}</xsl:else>
Но знаю, что в XSL нет if/else, есть только if.
(Заметил ещё кое-где when/otherwise, но как-то не удалось его заставить работать как if/else, как в PHP.)
#
Re: XSL-условие для вывода элемента на определённой странице, например — только в категории магазина
<xsl:choose>
<xsl:when test=""></xsl:when>  // if
<xsl:otherwise></xsl:otherwise> // else
</xsl:choose>

если нужно elseif то можно сделать вложенность дополнительную.... например

<xsl:choose>
<xsl:when test=""></xsl:when>  // if
<xsl:otherwise>
<xsl:choose>
<xsl:when test=""></xsl:when>  // if
<xsl:otherwise></xsl:otherwise> // else
</xsl:choose>
</xsl:otherwise> // else
</xsl:choose>
#
Re: XSL-условие для вывода элемента на определённой странице, например — только в категории магазина
То есть пары when/otherwise нужно просто обернуть в choose. Понял, благодарю.
А как, всё-таки, определять — главная это страница или нет? Это ведь уже совсем по HostCMS вопрос.
Модератор
#
Re: XSL-условие для вывода элемента на определённой странице, например — только в категории магазина
Grawl писал(а):
А как, всё-таки, определять — главная это страница или нет?

Главная магазина? У нее current_group_id для тега <shop> равен 0.

Например,
<xsl:choose>
<xsl:when test="@current_group_id = 0">
11111
</xsl:when>
<xsl:otherwise>
22222
</xsl:otherwise>
</xsl:choose>
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: XSL-условие для вывода элемента на определённой странице, например — только в категории магазина
Угу, принцип понял.
Но попробовал воткнуть — получилось ничего.
      <!-- Отображение подгрупп данной группы, только если подгруппы есть и нет фильтра по меткам -->
      <xsl:if test="count(selected_tags/tag) = 0 and count(//group[@parent=$parent_group_id]) &gt; 0">
         <xsl:choose>
            <xsl:when test="@current_group_id = 0">
               <div class="groups">
            </xsl:when>
            <xsl:otherwise>
               <div class="groups sub">
            </xsl:otherwise>
         </xsl:choose>
            <xsl:apply-templates select=".//group[@parent=$parent_group_id]"/>
         </div>
      </xsl:if>

То есть этот код ломает что-то, и вместо списка групп, потом списка товаров и прочего, выходит пустота.

А вот так прокатило:
<!-- Шаблон для групп товара -->
   <xsl:template match="group">
      <xsl:variable name="parent_id" select="@parent"/>
      <div class="group" id="{path}">
         <a href="{/shop/path}{fullpath}">
            <xsl:choose><!-- вот тут вот -->
               <xsl:when test="@current_group_id = 0">
                  <xsl:if test="image!=''">
                     <img src="{small_image}"/>
                  </xsl:if>
               </xsl:when>
               <xsl:otherwise>
                  <xsl:if test="image!=''">
                     <img src="{image}"/>
                  </xsl:if>
               </xsl:otherwise>
            </xsl:choose><!-- вот тут вот -->
            <div class="label">
               <span class="name">
                  <xsl:value-of disable-output-escaping="yes" select="name"/>
               </span>
               <span class="meta">
                  <xsl:value-of select="count_all_items"/>
               </span>
               <xsl:value-of disable-output-escaping="yes" select="description"/>
               <xsl:if test="count(group) &gt; 1">
                  <xsl:apply-templates select="group" mode="sub_group"/>
               </xsl:if>
            </div>
         </a>
      </div>
   </xsl:template>


А вообще, было бы просто прекрасно — добавлять классы тэгу body в зависимости от положения на сайте. В WP такое просто делается, а у вас как?
#
Re: XSL-условие для вывода элемента на определённой странице, например — только в категории магазина
И ещё вопрос. Как сделать то же самое в PHP? В шаблоне есть здоровенный слайдер, и хотелось бы оставить его лишь на главной.
#
Re: XSL-условие для вывода элемента на определённой странице, например — только в категории магазина
Сделал хитро и перенёс его из шаблона одной страницы в другой.
Авторизация