Отметка у товара в каталоге

#
Отметка у товара в каталоге
вот так я в каталоге и на странице товара вывожу картинку у товара если это горячее предложение:
<xsl:if test="price_tax != price_discount">
<img border="0" src="/images/hot2.gif" width="78" height="63" style="float: right"/>
</xsl:if>

Вопрос: Может кто подскажет, как поставить картинку товару если это новинка. (тоесть с даты размещение прошло 15 или 30 дней)?
#
Re: Отметка у товара в каталоге
Да, в общем-то, просто.
В ТДС, через external_propertys передаете значение даты на день 15 (или 30) дней назад, в формате ГГГГММДД. Что-то типа
$now = time();
$period = 30;
$backdate = date(Ymd, mktime(0, 0, 0, date(m, $now), intval(date(d, $now)) - $period, date(Y, $now)));
$external_propertys['backdate'] = $backdate;


А в xsl для каждого элемента высчитываете его дату в таком же формате с помощью оператора concat
<xsl:variable name="add_date" select="concat(substring(datetime, 7, 4), substring(datetime, 4, 2), substring(datetime, 1, 2)" />
и после вычисления сравниваете полученное значение переменной со значением узла /shop/backdate, т.е с датой, переданной из ТДС. Если вычисленное значение больше переданного - то этот товар новинка.
Заказов не беру. Консультирую редко.
#
Re: Отметка у товара в каталоге
при внесении в ТДС Интернет магазин Kotoff писал(а):
$now = time();
$period = 30;
$backdate = date(Ymd, mktime(0, 0, 0, date(m, $now), intval(date(d, $now)) - $period, date(Y, $now)));
$external_propertys['backdate'] = $backdate;

сразу выдаются замечания...

Походу не вариант...
#
Re: Отметка у товара в каталоге
Миль пардон, у меня вывод замечаний был отключен. Чтобы не было замечений можете еще попробовать вот такой вариант:
$now = time();
$period = 30;
$backdate = date('Ymd', mktime(0, 0, 0, date('m', $now), intval(date('d', $now)) - $period, date('Y', $now), -1));
$external_propertys['backdate'] = $backdate;

Заказов не беру. Консультирую редко.
#
Re: Отметка у товара в каталоге
Kotoff писал(а):
<xsl:variable name="add_date" select="concat(substring(datetime, 7, 4), substring(datetime, 4, 2), substring(datetime, 1, 2)" />

теперь на эту строку ругается
в xsl ставлю и в темплейт выводв товара и вне его...

Может не туда куда-то ставлю...? раз предупреждения
#
Re: Отметка у товара в каталоге
Ставить надо в теплейт вывода товара.

<xsl:variable name="add_date" select="concat(substring(datetime, 7, 4), substring(datetime, 4, 2), substring(datetime, 1, 2))" />


Видимо, мне перед каждым ответом надо писать дисклаймер, что куски кода написанные поздним вечером за пару минут в ответ на какой-нибудь банальный вопрос могут содержать столь же банальные опечатки.
Заказов не беру. Консультирую редко.
#
Re: Отметка у товара в каталоге
простите чайника...

Но опять не получается.
Делаю так:

<xsl:variable name="add_date" select="concat(substring(datetime, 7, 4), substring(datetime, 4, 2), substring(datetime, 1, 2))" />
<xsl:if test="add_date > backdate">
                              <img border="0" src="/images/hot2.gif" width="78" height="63" style="float: right"/>
                           </xsl:if>


Но ничего не выводиться у новинок... Что-то опять не так сделал...
#
Re: Отметка у товара в каталоге
А вот тут уже у вас ошибка, а не у меня

add_date это у нас что? - Переменная! Так значит везде, кроме своего определения, она должна писаться со знаком доллара в начале.
А без доллара получается что вы обращаетесь к несуществующему узлу item/add_date.
Но мало того, вы еще и не указываете полный путь к узлу backdate, поэтому обращение идет к несуществующему /shop/item/backdate вместо /shop/backdate
В результате в логическом выражении получается что-то типа if test="0 > 0" и условие никогда не будет истинным.

Ну и знак "больше" в xsl принято записывать "&gt;".

Правильный код примерно таков:
<xsl:variable name="add_date" select="concat(substring(datetime, 7, 4), substring(datetime, 4, 2), substring(datetime, 1, 2))" />
<xsl:if test="$add_date &gt; /shop/backdate">
   <img border="0" src="/images/hot2.gif" width="78" height="63" style="float: right"/>
</xsl:if>
Заказов не беру. Консультирую редко.
#
Re: Отметка у товара в каталоге
Kotoff писал(а):
<xsl:variable name="add_date" select="concat(substring(datetime, 7, 4), substring(datetime, 4, 2), substring(datetime, 1, 2))" />
<xsl:if test="$add_date &gt; /shop/backdate">
   <img border="0" src="/images/hot2.gif" width="78" height="63" style="float: right"/>
</xsl:if>

Уже пробовал и так.... не отображает и всё...
я целый раздел создал вчера. Товары от-туда выводятся на главной как новинки (значит дата работает),а вот пиктограмка у этого товара в каталоге не подставляется...
#
Re: Отметка у товара в каталоге
Вышеприведенный мною код - рабочий.
Проверьте xml - есть ли в нем узел /shop/backdate
Если нет - значит вы неправильно вставили кусочек кода в ТДС.
Если узел есть - проверьте существование картинки /images/hot2.gif Попробуйте вместо нее вывести текст.
Попробуйте над тегом xsl:if вывести значения переменной add_date и узла /shop/backdate
значение $add_date: <xsl:value-of select="$add_date" />
значение узла backdate: <xsl:value-of select="/shop/backdate" />

Если выведенные значения не соответствуют реальности то скорее всего вы в xsl-шаблоне куда-то не туда вставили вышеприведенный код.

Ну а если уж и это все не поможет, тогда стучитесь в аську с доступом - настрою вам все сам, но уже за денежку. Потому что рабочее решение - вот оно, перед вами. Специально для вас сейчас проверил на тестовой площадке.
Заказов не беру. Консультирую редко.
Авторизация