Отображение предстоящих событий (решение для показа афиш)

#
Отображение предстоящих событий (решение для показа афиш)
Сегодня была задача выводиться на сайте те новости (события), которые должны произойти, это решение очень полезно для сайтов каких-либо клубов или им подобных. Т.е. если дата элемента еще не наступила, то он отображается (к примеру на главной), если уже наступила, точнее день уже прошел, то элемент отображается только в инф системе - это архив событий.

Проверяется переменная Дата (не дата публикации).

По сути код такой на форуме есть, но этот не много упрощен, для удобства.

Собственно код:

<?
/* Вывод информационных систем */
$InformationSystem = new InformationSystem();
$now = date('Y-m-d 00:00:00', time());
$external_propertys=array();
$property = array();
// Заполняем первое условие
$element['type'] = 0;
$element['prefix'] = ' and ';
$element['name'] = 'information_items_date';
$element['if'] = '>';
$element['value'] = $now;
$element['sufix'] = '';
$property['select'][] = $element;
$external_propertys['ОтображатьСсылкуНаАрхив']=0;
$external_propertys['ОтображатьСсылкиНаСледующиеСтраницы']=0;
/* Количество выводимых элементов */
$item_count = 5;
$InformationSystemId = 15;
$InformationGroupId = false;  //  - из всех групп, 0 - из корневой группы
$InformationSystem->ShowInformationSystem($InformationSystemId, $InformationGroupId,'АфишаНаГлавной',$item_count,0,$external_propertys,$property);  
?>

Xsl шаблон - стандартный, в него никакие изменения вносить не надо.
p.s. спасибо за подсказку пользователю с ником Kotoff.
Делаю сайты на HostCMS! Подробнее по почте anton.yurzanov@gmail.com
#
Re: Отображение предстоящих событий (решение для показа афиш)
Ребят подскажите, мне нужно в шаблоне  отсортировать предстоящие и прошедшие концерты - так можно?

Есть обычная типовая страница ИС, я добавил в xml только текущую дату

<document>
   <site_user_id>0</site_user_id>
   <ОтображатьСсылкуНаАрхив>0</ОтображатьСсылкуНаАрхив>
   <ОтображатьСсылкиНаСледующиеСтраницы>1</ОтображатьСсылкиНаСледующиеСтраницы>
   <ТекущаяДата>2010-03-17 00:00:00</ТекущаяДата>
.....



Далее в шаблоне обрабатываю например предстоящие события но видимо не так... сравнение с текущей датой не работает (не выводится ничего)



<!-- Отображение записи информационной системы -->

<xsl:if test="blocks/items/item/item_datetime &gt; ТекущаяДата">
<xsl:apply-templates select="blocks/items/item[item_status=1]" mode="next" />
</xsl:if>





Как правильно сделать обработку?

Cпасибо
ку
#
Re: Отображение предстоящих событий (решение для показа афиш)
Ребят помогите отсортировать, не получается

Получил текущую дату и преобразовал в число, с датой ИЭ делаем тоже самое. А как правильно конструкции собрать?

Нужно так:

Ближайшие
тут темплейт для ИЭ mode=next

Прошедшие
тут темплейт для ИЭ mode=last





<!-- Заносим в переменную текущую дату -->
<xsl:variable name="cur_date" select="concat(substring(ТекущаяДата, 7, 4), substring(ТекущаяДата, 4, 2), substring(ТекущаяДата, 1, 2), substring(ТекущаяДата, 12, 2), substring(ТекущаяДата, 15, 2), substring(ТекущаяДата, 18, 2))"/>

<xsl:for-each select="blocks/items/item">

<xsl:variable name="item_datetime" select="concat(substring(item_datetime, 7, 4), substring(item_datetime, 4, 2), substring(item_datetime, 1, 2), substring(item_datetime, 12, 2), substring(item_datetime, 15, 2), substring(item_datetime, 18, 2))"/>

</xsl:for-each>

<!-- Отображение записи информационной системы -->
<xsl:if test="$item_datetime &gt; $cur_date">
<xsl:apply-templates select="blocks/items/item[item_status=1] mode="next"/>
</xsl:if>




Там неправильно с for each, в общем подскажите на словах как делать. Грубо говоря не понимаю как сравнить у всех элементов в дереве даты с текущей и вывести их с разными темплейтами в зависимости от больше или меньше.

Спасибо
ку
Модератор
#
Re: Отображение предстоящих событий (решение для показа афиш)
<xsl:sort select="здесь concat" data-type="number" order="descending" />
#
Re: Отображение предстоящих событий (решение для показа афиш)
<xsl:sort select="concat(substring(item_datetime, 7, 4), substring(item_datetime, 4, 2), substring(item_datetime, 1, 2), substring(item_datetime, 12, 2), substring(item_datetime, 15, 2), substring(item_datetime, 18, 2)) &gt; $cur_date" data-type="number" order="descending" />


Так? И эту конструкцию вставлять внутри for each?

Не понимаю пока что.

Как сделать:

условие: дата элемента > текущей
Ближайшие
тут темплейт для ИЭ mode=next

условие: дата элемента < текущей
Прошедшие
тут темплейт для ИЭ mode=last


ку
#
Re: Отображение предстоящих событий (решение для показа афиш)
Подскажите... кто-нибудь
ку
#
Re: Отображение предстоящих событий (решение для показа афиш)
Я так понимаю нужно делать группировку с помощью xsl key
?
Можно более подробно или примером?
ку
#
Re: Отображение предстоящих событий (решение для показа афиш)
вопрос решен
ку
Авторизация