О дополнительных свойствах товара интернет-магазина

#
О дополнительных свойствах товара интернет-магазина
Вопрос следующий: есть интернет магазин, есть корневая группа товаров, группе задано дополнительное свойство "Станция метро" - строка, значение по умолчанию не задано, отображение "список-списком", название xml-тега "metro"

В стандартном случае шаблон "Интернет-магазин" - "МагазинКаталогТоваров" (я его не трогал) показывает возможности фильтра + фильтр по дополнительным параметрам. Для моего дополнительного свойства (станция метро) фильтр появляется, но почему-то ни одного значения в списке нет. Хотя в XMLе они есть, то есть самим товарам значения заданы и разрешения на группу тоже стоят.

Чего делать?
Модератор
#
Re: О дополнительных свойствах товара интернет-магазина
Версию и редакцию системы управления предлагается угадать?
km-g писал(а):
«Станция метро» — строка

Поле типа "строка" не может отображаться списком. Списком могут отображать только доп. св-ва типа "список".
#
Re: О дополнительных свойствах товара интернет-магазина
Да, прошу прощения. Версия 5.6.9, редакция "Халява". Как я понял, списки в этой версии не поддерживаются.

ОК, еще вопрос в тему. В API нашел вот такую штуку, это выборка товаров из интернет-магазина по дополнительным свойствам:
<?php
$shop = & singleton('shop');
$param = array()

// Ограничение по цвету
$element['type'] = 1; // 0 - основное св-во, 1 - дополнительное
$element['property_id'] = 159;
$element['prefix'] = ' AND ('; // префикс
$element['if'] = '='; // Условие
$element['value'] = '10';  //
$element['sufix'] = '';
$param['select'][] = $element;
// Ограничение по флажку
$element['type'] = 1; // 0 - основное св-во, 1 - дополнительное
$element['property_id'] = 183;
$element['prefix'] = ' OR '; // префикс
$element['if'] = '='; // Условие
$element['value'] = '1';  //
$element['sufix'] = ' ) ';
$param['select'][] = $element;

$param['sql_group_by'] = "GROUP BY shop_items_catalog_table.shop_items_catalog_item_id ";
$param['sql_having'] = "HAVING COUNT(shop_properties_items_table.shop_properties_items_id) = 2";

$shop->ShowShop(1,'МагазинКаталогТоваров', $param);
?>


Если не сложно, объясните, пожалуйста, на моем примере, как, сделать следующую выборку: есть, как я написал в первом посте, дополнительный параметр metro (ID 134). Тип - строка, значение по умолчанию не установлено, префикс не установлен. У каждого товара значение этого дополнительного параметра заполнено. Например, есть три товара со значением "Новогиреево" и 10 товаров со значением "Бирюлево", нужно выбрать все товары, у которых это свойство равно "Бирюлево".

Судя по всему, формируется массив $element, какой-то кусок MySQL-запроса, только не ясно, как все это дело совместить в одну кучу и использовать.

Буду очень благодарен, когда пойму принцип.

Заранее спасибо
#
Re: О дополнительных свойствах товара интернет-магазина
Уже нашел решение сам. Если я, например, хочу выбрать товар, у которого есть доп. свойство №134, и мне нужно выбрать все товары, для которых это свойство равно "Университет" или "Проспект Вернадского":
<?
$shop = new Shop();
$param = array();

$element['type'] = 1; // 0 - основное св-во, 1 - дополнительное
$element['property_id'] = 134;
$element['prefix'] = 'and'; // префикс
$element['if'] = '='; // Условие
$element['value'] = 'Университет';  //
$element['sufix'] = '';
$param['select'][] = $element;

$element['type'] = 1;
$element['property_id'] = 134;
$element['prefix'] = 'or';
$element['if'] = '=';
$element['value'] = 'Проспект Вернадского';
$element['sufix'] = '';
$param['select'][] = $element;

$param['current_group_id'] = false;
$param['items_on_page'] = 10;
$param['items_order'] = 'rand';

$shop->ShowShop(7,'МагазинКаталогТоваровНаГлавной',$param);
?>
Модератор
#
Re: О дополнительных свойствах товара интернет-магазина
km-g,
Вы привели правильный пример. Только обратите внимание, если ['value'] получаете из внешних данных - GET, POST, REQUEST, COOKIES, то им нельзя доверять и перед подстановкой в запрос необходимо обработать принятые данные функцией quote_smart();
Пример:
$element['value'] = quote_smart(to_str($_POST['myvalue']));
#
Re: О дополнительных свойствах товара интернет-магазина
большое спасибо за уточнение - о функции не знал, собирался руками писать проверки
Модератор
#
Re: О дополнительных свойствах товара интернет-магазина
km-g,
Пожалуйста.
Авторизация