Ivanov писал(а):
Для того, чтобы работал фильтр по дате необходимо в XSL-шаблоне в том месте, где формируется форма фильтра, добавить 2 поля: «Дата от» и «Дата до». Каждое из них может быть реализовано в виде календаря. В типовой динамической странице Интернет-магазина добавить проверку значений из этих полей.
Сделал я фильтр по дате таким образом:
В XSL добавил поля с календарями:
Дата от: 
<input id="date_from" name="date_from" size="10" type="text" class="calendar_field" value="{/shop/date_from}"/> 
<script type="text/javascript">
Calendar.setup({inputField: 'date_from', ifFormat: '%d.%m.%Y', showsTime: false, button: 'date_from', align: 'Br', singleClick: true, timeFormat: 24, firstDay: 1});
</script>
до: 
<input id="date_to" name="date_to" size="10" type="text" class="calendar_field" value="{/shop/date_to}"/>
<script type="text/javascript">
Calendar.setup({inputField: 'date_to', ifFormat: '%d.%m.%Y', showsTime: false, button: 'date_to', align: 'Br', singleClick: true, timeFormat: 24, firstDay: 1});
</script>
В типовой добавил проверку этих полей:
/* Ограничиваем по дате ОТ */
if (to_str($_GET['date_from']) !="")
{
$element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
$element['name'] = 'shop_items_catalog_putoff_date';
$element['prefix'] = 'AND'; // префикс
$element['if'] = '>'; // Условие
$element['value'] = to_str($_GET['date_from']);
$element['sufix'] = '';
$param['select'][] = $element;
$external_propertys['date_from'] = to_str($_GET['date_from']);
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}
/* Ограничиваем по дате ДО */
if (to_str($_GET['date_to']) !="")
{
$element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
$element['name'] = 'shop_items_catalog_putoff_date';
$element['prefix'] = 'AND'; // префикс
$element['if'] = '<'; // Условие
$element['value'] = to_str($_GET['date_to']);
$element['sufix'] = '';
$param['select'][] = $element;
$external_propertys['date_to'] = to_str($_GET['date_to']);
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}
Но вот незадача, фильтрует не по дате, а по алфавиту. К примеру, если у товара дата активности 10.02.2012 — сначала по первой цифре (
10.02.2012), потом по второй (1
0.02.2012) и т.д. А должно быть: сначала год, потом месяц, потом дата и время. Как это сделать?