3. Свойства товара не позволяют создать свойство без возможных значений. Насколько логичным будет просто убрать проверку? Мне в фильтре требуется слайдер с диапазоном по свойствам. К каким последствиям может привести изменение?
Отвечаю сам на свой вопрос: ни к каким. Простое отключение проверки позволяет создавать "произвольные" свойства. Над диапазоном значений пришлось "попотеть" - я решил эту задачу добавлением параметра filter_property_range. Sql запрос в .db-models/products оставил аналогичным filter_properties, изменив только условия where для properties на
. 'CAST(' . DATABASE_PROPERTIES_VALUES_TABLENAME . '.value AS unsigned) >= \'' . $this->cms->db->query_value($values['min']) . '\' AND '
. 'CAST(' . DATABASE_PROPERTIES_VALUES_TABLENAME . '.value AS unsigned) <= \'' . $this->cms->db->query_value($values['max']) . '\' ';
минимальные-максимальные значения для диапазона по умолчанию извлекаю таким способом:
SELECT pv.property_id,
MAX(CAST(pv.value AS UNSIGNED)) AS max,
MIN(CAST(pv.value AS UNSIGNED)) AS min
FROM properties_values pv,
products p,
properties prop
WHERE pv.product_id = p.product_id
AND p.category_id = ' . $this->cms->db->query_value($params->category_id) . '
AND pv.property_id = prop.property_id
AND prop.options = ''
GROUP BY pv.property_id
добавляю в переменную $properties[$row->property_id]->range
Такие дела.
Вообще, это все же костыль на скорую руку. Думается мне, стоит ввести типы свойств: select, string, int (range specific). можно еще float. и дать возможность человеку самому автоматически решать этот вопрос. еще select image неплохо было бы :) *мечтательно*
*мелкими буквами* Кстати, почему-то оказалось проще "сверстать" свой фильтр, чем адаптировать дизайн nextweb'a под свои нужды :)