Morozov&Pimnev blog

Полезные решения, шпаргалки и примеры по html, css, js, jQuery, MySQL, PHP, HostCMS, ssh.

Вывод товаров или элементов ИС на главную по доп. свойству типа "флажок" на HostCMS v6

Для товаров из магазина:

<?php
	$Shop_Controller_Show = new Shop_Controller_Show(
		Core_Entity::factory('Shop', 1)
	);

	$Shop_Controller_Show
		->xsl(
			Core_Entity::factory('Xsl')->getByName('МагазинТоварыНаГлавной')
		)
		->groupsMode('none') // избавляемся от групп и лишних запросов
		->group(FALSE) // добавляем элементы из всех групп
		->itemsForbiddenTags(array('text','description'))
		->viewed(FALSE) // исключаем просмотренные товары, т.к. по умолчанию они добавляются в XML, а нам не нужна дополнительнеая нагрузка, тем более мы их не выводим в группах
		->itemsPropertiesList(FALSE) // исключаем вывод списка доп. свойств, т.к. по умолчанию они добавляются в XML, а нам не нужна дополнительная нагрузка, тем более мы их не выводим
		->limit(5);

	$Shop_Controller_Show
		->shopItems()
		->queryBuilder()
		->leftJoin('shop_item_properties', 'shop_items.shop_id', '=', 'shop_item_properties.shop_id')
		->leftJoin('property_value_ints', 'shop_items.id', '=', 'property_value_ints.entity_id',
			array(
				array('AND' => array('shop_item_properties.property_id', '=', Core_QueryBuilder::expression('`property_value_ints`.`property_id`')))
			)
		)
		->where('shop_item_properties.property_id', '=', 63) // ID свойства типа "флажок"
		->where('property_value_ints.value', '=', 1) // флажок включен
		// расскомментировать если нужно товары показывать рандомно
		//->clearOrderBy()
		//->orderBy('RAND()')
	;

	$Shop_Controller_Show->show();
?>

Для элементов информационной системы:

<?php
	$Informationsystem_Controller_Show = new Informationsystem_Controller_Show(
		Core_Entity::factory('Informationsystem', 1)
	);

	$Informationsystem_Controller_Show
		->xsl(
			Core_Entity::factory('Xsl')->getByName('СписокЭлементовНаГлавной')
		)
		->groupsMode('none') // избавляемся от групп и лишних запросов
		->group(FALSE) // добавляем элементы из всех групп
		->itemsForbiddenTags(array('text','description'))
		->itemsPropertiesList(FALSE) // исключаем вывод списка доп. свойств, т.к. по умолчанию они добавляются в XML, а нам не нужна дополнительная нагрузка, тем более мы их не выводим
		->limit(5);

	$Informationsystem_Controller_Show
		->informationsystemItems()
		->queryBuilder()
		->leftJoin('informationsystem_item_properties', 'informationsystem_items.informationsystem_id', '=', 'informationsystem_item_properties.informationsystem_id')
		->leftJoin('property_value_ints', 'informationsystem_items.id', '=', 'property_value_ints.entity_id',
			array(
				array('AND' => array('informationsystem_item_properties.property_id', '=', Core_QueryBuilder::expression('`property_value_ints`.`property_id`')))
			)
		)
		->where('informationsystem_item_properties.property_id', '=', 63) // ID свойства типа "флажок"
		->where('property_value_ints.value', '=', 1) // флажок включен
		// расскомментировать если нужно товары показывать рандомно
		//->clearOrderBy()
		//->orderBy('RAND()')
	;

	$Informationsystem_Controller_Show->show();
?>

php, shop, shop_items, informationsystem_items, informationsystem, hostcms6