UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: john от 07 Марта 2014, 22:51:53

Название: Как выделить четные или нечетные элементы?
Отправлено: john от 07 Марта 2014, 22:51:53
Как выделить ленту новостей, четные новости имеют класс - i1, а нечетные без класса.
            <xsl:choose>
            <xsl:when test="item[position() mod 1 = 0]">
<div id="anons_{@id}_{generate-id()}" class="news_anons text i1" umi:field-name="anons" umi:field-type="wysiwyg" umi:empty="&empty-page-anons;">
<xsl:value-of select="$item//property[@name = 'anons']/value" disable-output-escaping="yes" />
</div>
            </xsl:when>
            <xsl:otherwise>
            <div id="anons_{@id}_{generate-id()}" class="news_anons text" umi:field-name="anons" umi:field-type="wysiwyg" umi:empty="&empty-page-anons;">
<xsl:value-of select="$item//property[@name = 'anons']/value" disable-output-escaping="yes" />
</div>
            </xsl:otherwise>
            </xsl:choose>
Как правильно должно выглядеть условие?
Спасибо.
Название: Re:Как выделить четные или нечетные элементы?
Отправлено: NOIRMAN от 08 Марта 2014, 00:11:24
Попробуйте mod 2 = 0.
Название: Re:Как выделить четные или нечетные элементы?
Отправлено: john от 08 Марта 2014, 08:25:06
К сожалению, не помогло. Выполняется второе условие.
Название: Re:Как выделить четные или нечетные элементы?
Отправлено: NOIRMAN от 08 Марта 2014, 12:25:08
А покажите полностью данный шаблон ...
Название: Re:Как выделить четные или нечетные элементы?
Отправлено: john от 08 Марта 2014, 12:29:06
Файл news/lastlist.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" xmlns:umi="http://www.umi-cms.ru/TR/umi">

<!--Обертка списка новостей-->
<xsl:template match="udata[@module = 'news'][@method = 'lastlist']">
<xsl:param name="id" select="category_id"/>
<xsl:param name="noPages" select="0"/>
<xsl:variable name="newsItemPageTypeId" select="document('utype://news~item')/udata/type/@id" />
<div class="news" umi:element-id="{$id}" umi:add-text="&add-text-news;" umi:module="news" umi:method="lastlist" umi:region="list" umi:type-id="{$newsItemPageTypeId}" umi:button-position="top right">
<xsl:if test="(count(items/item) = 0) and ($isAdmin = 1)">
<xsl:attribute name="umi:sortable" select="'none'"/>
<div class="hidden no-style">
<div class="hidden-text">
<p>&empty-news;</p>
</div>
</div>
<div class="news_item blank_item" umi:region="row" umi:element-id="void" umi:delete="delete">
<div class="news_title" >
<div class="top_date news_date" umi:field-name="publish_time" umi:field-type="date" umi:empty="&empty-page-date;" />
<a class="news_headline" href="{@link}" umi:field-name="name" umi:field-type="string" umi:empty="&empty-page-name;"/>
<div class="bottom_date news_date" umi:field-name="publish_time" umi:field-type="date" umi:empty="&empty-page-date;" />
</div>
<div class="news_anons text" umi:field-name="anons" umi:field-type="wysiwyg" umi:empty="&empty-page-anons;"/>
</div>
</xsl:if>
<xsl:apply-templates select="items/item" />
</div>
<xsl:if test="not($noPages)">
<xsl:apply-templates select="document(concat('udata://system/numpages/',total,'/',per_page,'/'))/udata" />
</xsl:if>
</xsl:template>

<!--Эллемент списка новостей-->
<xsl:template match="udata[@method = 'lastlist']/items/item">
<xsl:variable name="item" select="document(concat('upage://', @id))/udata" />
<xsl:variable name="publish_time">
<xsl:apply-templates select="@publish_time">
<xsl:with-param name="date_format" select="$newsDateFormat" />
</xsl:apply-templates>
</xsl:variable>
<div class="news_item" umi:region="row" umi:element-id="{@id}" umi:delete-text="&delete-text-news;" umi:delete="delete">
<div class="news_title" >
<a class="news_headline" href="{@link}" umi:field-name="name" umi:field-type="string" umi:empty="&empty-page-name;" umi:url-attribute="href">
<xsl:value-of select="." disable-output-escaping="yes" />
</a>
<div class="bottom_date news_date" umi:field-name="publish_time" umi:field-type="date" umi:empty="&empty-page-date;" >
<xsl:value-of select="$publish_time" disable-output-escaping="yes" />
</div>
</div>
            
            <xsl:choose>
            <xsl:when test="item[position() mod 2 = 0]">
<div id="anons_{@id}_{generate-id()}" class="news_anons text i1" umi:field-name="anons" umi:field-type="wysiwyg" umi:empty="&empty-page-anons;">
<xsl:value-of select="$item//property[@name = 'anons']/value" disable-output-escaping="yes" />
</div>
            </xsl:when>
            <xsl:otherwise>
            <div id="anons_{@id}_{generate-id()}" class="news_anons text" umi:field-name="anons" umi:field-type="wysiwyg" umi:empty="&empty-page-anons;">
<xsl:value-of select="$item//property[@name = 'anons']/value" disable-output-escaping="yes" />
</div>
            </xsl:otherwise>
            </xsl:choose>
          
</div>
</xsl:template>

</xsl:stylesheet>
Название: Re:Как выделить четные или нечетные элементы?
Отправлено: NOIRMAN от 08 Марта 2014, 12:37:34
А, ну так мы и так уже в узле item находимся...
<xsl:when test="position() mod 2 = 0">
Так попробуйте.
Название: Re:Как выделить четные или нечетные элементы?
Отправлено: john от 08 Марта 2014, 13:06:04
Спасибо. Заработало.