В продолжение вчерашней статьи об обновлении, которое затронуло работу сторонних модулей, хочется добавить от себя. Например, у вас истек период технической поддержки до 15.11.2013, но вы хотите использовать фильтр, который можно разместить в макете сайта. У вас есть дизайн сайта / интернет-магазина / каталога, в котором предусмотрены фильтры в сайдбаре или есть желание задействовать в проекте jQuery UI Slider? Ползунок с выбором ценового диапазона, кроме выбранных значений price_from и price_to использует ещё min_price и max_price. Обновление включает addMinMaxPrice, а мы сделаем его самостоятельно.
Ранее в фильтре объявляется текущая рубрика:
$iCurrentShopGroup = intval(Core_Page::instance()->object->group);
Теперь вставляем перед:
$Shop_Controller_Show ->group($iCurrentShopGroup) ->show();
Следующий код:
// Узнаем МАКСИМАЛЬНУЮ цену товара в группе
$oCore_QueryBuilder_Select = Core_QueryBuilder::select('MAX(price)')->from('shop_items')
->where('shop_group_id', '=', $iCurrentShopGroup)
->where('active', '=', 1);
$row = $oCore_QueryBuilder_Select->execute()->asAssoc()->current();
$max_price = round($row["MAX(`price`)"]);
// Узнаем МИНИМАЛЬНУЮ цену товара в группе
$oCore_QueryBuilder_Select2 = Core_QueryBuilder::select('MIN(price)')->from('shop_items')
->where('shop_group_id', '=', $iCurrentShopGroup)
->where('active', '=', 1);
$row2 = $oCore_QueryBuilder_Select2->execute()->asAssoc()->current();
$min_price = round($row2["MIN(`price`)"]);
if(isset($max_price) && $max_price != 0) {
$Shop_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('max_price')->value($max_price)
);
}
if(isset($min_price) && $min_price != 0) {
$Shop_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('min_price')->value($min_price)
);
}
После этого в XML для XSL-шаблона «МагазинФильтр» передаются данные max_price и min_price.
Если шаблон, он же макет используется не только для интернет-магазина, а вообще по всему сайту, то будет логично использовать вместо:
$iCurrentShopGroup = intval(Core_Page::instance()->object->group);
вот этот вариант:
if (is_object(Core_Page::instance()->object)
&& get_class(Core_Page::instance()->object) == ‘Shop_Controller_Show’)
{
$Shop_Controller_Show->group(Core_Page::instance()->object->group);
$iCurrentShopGroup = Core_Page::instance()->object->group;
}
else
{
$iCurrentShopGroup = 0;
}