ИНТЕРНЕТ-МАГАЗИН / Текущая дата в Каталоге товаров

Заметка создана: 18 января 2024 г.

В XSL шаблон к xsl:stylesheet добавляем новые атрибуты xmlns:date="http://exslt.org/dates-and-times" и extension-element-prefixes="date", должно получится:

<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:hostcms="http://www.hostcms.ru/"
	exclude-result-prefixes="hostcms"
	xmlns:date="http://exslt.org/dates-and-times" extension-element-prefixes="date">

Далее например можно записать в переменную текущую дату и вычислить разницу с другой датой с помощью date:difference(string, string).



Чтобы код работал, в настройках магазина меняем формат даты на %Y-%m-%d

в ТДС записываем текущую дату 

$oCurrent_date = date('dmY'); // именно в этом формате
$Shop_Controller_Show
    ->addEntity(Core::factory('Core_Xml_Entity')->name('сurrent_date')->value($oCurrent_date)); // теперь в XML есть сurrent_date
В XSL шаблоне (в том месте где это нужно):

Теперь, если дата создания товара меньше 30 дней, выводим слово НОВИНКА

  <xsl:variable name="current_date" select="/shop/current_date"/>
            <xsl:variable name="difference_date" select="date:difference($current_date,datetime)" />
            <xsl:variable name="difference_date_cut" select="substring-before(substring-after($difference_date, 'P'), 'D')" />
            <xsl:if test="number($difference_date_cut) &lt; 30"> <!-- 30 количество дней -->
               <div class="ribbon-wrapper-new">
                  <div class="ribbon-round-new bg-color3">НОВИНКА</div>
               </div>
            </xsl:if>

XSL