У объекта каталога, как у любой странице есть /result/page/@update-time, делаем примерно так:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version = "1.0" xmlns = "http://www.w3.org/1999/xhtml" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" xmlns:date = "http://exslt.org/dates-and-times" extension-element-prefixes = "date">
<xsl:template match="/result[@module = 'catalog' and @method = 'object']">
<xsl:variable name="isNew">
<xsl:choose>
<xsl:when test="page/@update-time <= date:date-time() - 60 * 60 * 24 * 7">
<xsl:text> new</xsl:text>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<div class="item{$isNew}">
...
</div>
</xsl:template>
</xsl:stylesheet>
А покажите, пожалуйста, объявление <xsl:stylesheet> полностью в начале файлика ...
Есть ли внутри него такие вот упоминания про date ?
xmlns:date="http://exslt.org/dates-and-times"
exclude-result-prefixes="xsl php udt date">
Вставил вот такой вариант:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
xmlns:udt="http://umi-cms.ru/2007/UData/templates"
xmlns:umi="http://www.umi-cms.ru/TR/umi"
exclude-result-prefixes="xsl date udt umi">
ошибка ушла, но и пометка "новое" не вывелась в заголовке сегодняшней новости (точнее говоря в её анонсе)...
Вот код у меня такой:
<xsl:variable name="isNew">
<xsl:choose>
<xsl:when test="page/@update-time <= date:date-time() - 60 * 60 * 24 * 7">
<xsl:text> новое</xsl:text>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<div class="item{$isNew}">
<a href="{@link}" class="title" title="{document(concat('upage://', @id, '.title'))//value}">
<h3 class="media-heading">
<xsl:value-of select="node()" />
</h3>
</a>
</div>
видно, что-то с параметрами надо сделать <xsl:when test="page/@update-time <= date:date-time() - 60 * 60 * 24 * 7">
Похоже дело в разности форматов значений. Опытным экспериментальным путем нашел функцию date:seconds() ( http://exslt.org/date/functions/seconds/index.html ). С ней получаются более менее похожие результаты.
Во всяком случае у меня получилось следующее -
xsl:value-of select="page/@update-time" />
<br />
<xsl:value-of select="date:seconds()" />
<br />
<xsl:value-of select="(60 * 60 * 24 * 7)" />
С результатами -
1394105788
1394308688
604800
date:date-time() дает же следующий результат - 2014-03-08T23:03:20+03:00
select="/result/page/@update-time" или как вариант "./page/@update-time" - так же не даст результата?
Тогда хотелось бы глянуть на xml страницы к которой идет обращение ...
Кстати, обратил внимание на описание шаблона
<xsl:template match="/result[@module = 'catalog' and @method = 'object']">
Вопрос больше для себя уточняющий ...
Слеш "/" перед result обязателен ли? Я в своих шаблонах его не использую. Чем мои действия могут в дальнейшем навредить мне?
select="/result/page/@update-time" или как вариант "./page/@update-time" - так же не даст результата?
Тогда хотелось бы глянуть на xml страницы к которой идет обращение ...
вот код ленты новостей для которой и надо применить (к ссылке на последнюю новость) пометку "новое":
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet SYSTEM "ulang://i18n/constants.dtd:file">
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
xmlns:udt="http://umi-cms.ru/2007/UData/templates"
xmlns:umi="http://www.umi-cms.ru/TR/umi"
exclude-result-prefixes="xsl date udt umi">
<!-- ЛЕНТА СПРАВА НА ГЛАВНОЙ СТРАНИЦЕ БЛОГА -->
<xsl:template match="/result[@module = 'news' and @method = 'rubric']">
<xsl:apply-templates select="document('udata://news/lastlist/?extProps=publish_time,anons,anons_pic')" mode="news-list-right" />
</xsl:template>
<xsl:template match="udata[@method = 'lastlist']" mode="news-list-right">
<xsl:apply-templates select="items/item" mode="news-list-right" />
<xsl:apply-templates select="total" />
</xsl:template>
<xsl:template match="page|item" mode="news-list-right">
<div class="media">
<div class="img-lenta">
<xsl:if test=".//property[@name = 'anons_pic']/value">
<a href="{@link}" title="{document(concat('upage://', @id, '.h1'))//value}" class="pull-left">
<xsl:call-template name="catalog-thumbnail">
<xsl:with-param name="element-id" select="@id" />
<xsl:with-param name="field-name">anons_pic</xsl:with-param>
<xsl:with-param name="width">120</xsl:with-param>
<xsl:with-param name="height">120</xsl:with-param>
</xsl:call-template>
</a>
</xsl:if>
<p class="article-date">
<span class="label label-default">
<xsl:apply-templates select=".//property[@name = 'publish_time']" />
</span>
</p>
</div>
<div class="media-body">
<xsl:variable name="isNew">
<xsl:choose>
<xsl:when test="page/@update-time <= date:seconds() - 60 * 60 * 24 * 7">
<xsl:text> новое</xsl:text>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<div class="item{$isNew}">
<a href="{@link}" class="title" title="{document(concat('upage://', @id, '.title'))//value}">
<h3 class="media-heading">
<xsl:value-of select="node()" />
</h3>
</a>
</div>
<xsl:apply-templates select="document(concat('upage://', @id, '.included_storyline'))" mode="storylines-simlink-right" />
<div class="article-description">
<xsl:value-of select=".//property[@name = 'anons']/value" disable-output-escaping="yes" />
</div>
</div>
<hr/>
</div>
</xsl:template>
</xsl:stylesheet>