В продолжение вчерашней статьи об обновлении, которое затронуло работу сторонних модулей, хочется добавить от себя. Например, у вас истек период технической поддержки до 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;
}