Сейчас на сайте

  • [Bot] [Bot]
  • [Yahoo] [Yahoo]
Всего на сайте:
  • 1 гость
  • 2 роботов
Последними зарегистрировались:

Дни рождения

В ближайшем будущем дней рождения не предвидится




Правильный выбор доменного имениприносит успех в парковке доменаКомпонент зависимых выпадающих списков для Joomla 2.5 ZavispisКомпонент Matukio - русификация
YJ K2 Filter - вместо диапозона цен делаем минимальную и максимальную PDF Печать E-mail
(0 голоса, среднее 0 из 5)
Автор: Slim888   
31.03.2013 17:58

YJ k2 filter минимальная и максимальная цены

В модуле для Joomla 2.5 YJ K2 Filter есть возможность фильтра по диапозону цены. Но, к сожалению, нельзя создать 2 списка с минимальной и максимальной ценой.

Создаем 2 списка цен в YJ K2 Filter

В админке компонента K2 создаем 2 поля типа Мульти-список и заполняем их, соответсвенно значениями минимальной и максимальной цены.

При заполнении этих полей в карточке товара необходимо указывать все цены ниже мин. и макс.

Поясню на примере. Допустим у нас цена 2 500. Значит в списке мин. значений мы выбираем все цены, которые меньше (500, 1 000, 2 000 ...). А в списке макс. значений, соответственно всё, что больше (3 000, 5 000, 10 000 ...).

Отменяем мультисписочность во фронтэнде модуля YJ K2 Filter

Открываем файл /modules/mod_yjk2filter/helper.php и немного правим его:

В строках (примерно 212 стр.):

if($add_default == 1 && $extraField->type == 'select') {
$added_default_value = new stdClass();
$added_default_value->name = JText::_("MOD_YJK2FILTER_SELECT_DEFAULT_OPTION");
$added_default_value->value = "";
$added_default_value->target = "";
$added_default_value->class = "class='first_option'";
array_unshift($defaultValues, $added_default_value);
}

Меняем условие (1 строка блока) на:

if($add_default == 1 && $extraField->type == 'select' || $add_default == 1 && $extraField->type == 'multipleSelect' ){

Таким образом мы добавляем значение по умолчанию (any value) в наши списки во фронтэнде.

Теперь превратим наши 2 мульти-списка в простые списки. В том же файле находим блок, который начинается с

case 'multipleSelect':

У меня это 291-319 строчки. Комментируем строку (298):

$onchange_action['multiple'] = 'multiple';

В строке (318)

$output=JHTML::_('select.genericlist', $defaultValues, 'YJK2Filter[ExtraField_'.$extraField->id.'][]', $yjk2filter_select_attr);

Убираем 2 скобки [].

Изменяем запрос к базе данных в плагине System - YJ K2 Filter

Находим файл /plugins/system/yjk2filter/yjk2filter/models/yjk2filteritemlist_256.php и правим его:

Строку (328)

$query .= " AND extra_fields REGEXP BINARY '(.*{\"id\":\"".($field_id[1])."\",\"value\":\"".$yjk2filter_search_value."\"}.*)'";

Меняем на блок:

if ($field_id[1] == 'idmin') //min_price
{
$query .= " AND extra_fields LIKE '%{\"id\":\"".($field_id[1])."\",\"value\":[%\"".$yjk2filter_search_value."\"%]},{\"id\":\"nextminid\"%'";
}
else if ($field_id[1] == 'idmax') //max_price
{
$query .= " AND extra_fields LIKE '%{\"id\":\"".($field_id[1])."\",\"value\":[%\"".$yjk2filter_search_value."\"%]},{\"id\":\"
nextmaxid\"%'";
}
else
{
$query .= " AND extra_fields REGEXP BINARY '(.*{\"id\":\"".($field_id[1])."\",\"value\":\"".$yjk2filter_search_value."\"}.*)'";
}

Не забудьте заменить idmin и idmax на ваши id дополнительных полей минимальной и максимальной цены, соответственно. Также надо поменять nextminid и nextmaxid на id полей, идущих сразу после idmin и idmax. Если же у нас максимальная цена идет последней на вывод, то обрезаем ее строку по запятую не включая ее.

И абсолютно то же самое проделываем с такой же строкой (примерно 750 стр.). То есть меняем на тот же блок.

Изменяем вид мульти-селектов в админке

Если у Вас много вариантов цен, то в админке в редактировании элемента их неужобно отмечать, так как поля по-умолчанию очень маленькие по высоте.Так как это не относящаяся к YJ K2 Filter настройка, править надо админку компонента K2. Открываем файл /administrator/components/com_k2/models/extrafield.php и находим строку 329:

$attributes .= ' id="'.$extraField->id.'.$extraField->id" multiple="multiple"';

Меняем ее на следующую:

$attributes .= ' id="'.$extraField->id.'.$extraField->id" multiple="multiple" style="height:220px;"';

Тут высота стоит 220px. Подбирайте для себя удобную.

Вот и все. Теперь модуль YJ K2 Filter будет искать товары по минимальной и максимальной цене и в админке удобно все заполнять, особенно, если у одного товара у Вас несколько возможных цен.

Обновлено 10.04.2013 15:13
 
Интересная статья? Поделись ей с другими: