addMinMaxPrice в Host CMS до обновления 6.1.1

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

addMinMaxPrice в Host CMS до обновления 6.1.1: 1 комментарий

  1. Если шаблон, он же макет используется не только для интернет-магазина, а вообще по всему сайту, то будет логично использовать вместо:
    $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;
    }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*