Обсуждение Модули и компоненты от breakdesigns. [Cat Filters, VMF и т.д.]

В версии 2.1.1 custom filters есть серьезный баг - при фильтре по производителям ( возможно и в других фильтрах тоже) не отображаются товары , имеющие родителя, т.е. при первоначальном входе в категорию отображаются все товары, а вот при выборе фильтра - только те, что без потомков. Пока что не починил.

Ps: решение - вставить строчку $menuparams->set('display_child_products',1); в метод getMenuParams в tools.php в папке компонента. Судя по всему этот пункт должен быть в меню компонента, но его нет. Пришлось пока захардкодить, чтобы работало как должно.

В /www/components/com_customfilters/include нашел файл tools.php, в нем строка 112-127
Код:
    public static function getMenuparams(){   
        if(empty(self::$menuparams)){
            $app=JFactory::getApplication();
            $menus    = $app->getMenu();
            $cfmenus=$menus->getItems('link','index.php?option=com_customfilters&view=products');
            $menuparams=new JRegistry;
            if(empty($cfmenus)){
                $app->enqueueMessage(JText::_('COM_CUSTOMFILTERS_MENU_ITEM_MISSING'),'Notice');
            }else{
                $menuparams->loadString($cfmenus[0]->params);
                $menuparams->set('cf_itemid',$cfmenus[0]->id);
            }
            self::$menuparams=$menuparams;
        }
        return self::$menuparams;
    }
Но куда бы между строк Я не пытался вставить $menuparams->set('display_child_products',1); у меня главная страница сайта становится белой (полностю). Версия joomla 2.5.28, версия Custom Filters Pro 2.2.6
 
В /www/components/com_customfilters/include нашел файл tools.php, в нем строка 112-127
Код:
    public static function getMenuparams(){  
        if(empty(self::$menuparams)){
            $app=JFactory::getApplication();
            $menus    = $app->getMenu();
            $cfmenus=$menus->getItems('link','index.php?option=com_customfilters&view=products');
            $menuparams=new JRegistry;
            if(empty($cfmenus)){
                $app->enqueueMessage(JText::_('COM_CUSTOMFILTERS_MENU_ITEM_MISSING'),'Notice');
            }else{
                $menuparams->loadString($cfmenus[0]->params);
                $menuparams->set('cf_itemid',$cfmenus[0]->id);
            }
            self::$menuparams=$menuparams;
        }
        return self::$menuparams;
    }
Но куда бы между строк Я не пытался вставить $menuparams->set('display_child_products',1); у меня главная страница сайта становится белой (полностю). Версия joomla 2.5.28, версия Custom Filters Pro 2.2.6
научись читать логи ошибок.
Включи вывод ошибок на экран и читай ГДЕ конкретно ошибка и в чем!
 
В /www/components/com_customfilters/include нашел файл tools.php, в нем строка 112-127
Но куда бы между строк Я не пытался вставить $menuparams->set('display_child_products',1); у меня главная страница сайта становится белой (полностю). Версия joomla 2.5.28, версия Custom Filters Pro 2.2.6
Да, теперь все хуже. Они вообще убрали эту настройку из кода. Так что мое сообщение актуально только для более старых версий.
 
Скажите, пожалуйста. Фильтр этот не выводит поле "цвет" (тип поля изображение). Оно по-умолчанию не реализованно или как-то донастроить нужно? У меня версия Custom Filters PRO 2.2.6
 
Уважаемые, помогите мне!
Я чего-то явно не понимаю.
В компоненте есть возможность выбрать тип отображения для конкретного поля, например checkbox, select и т.д.
Мне нужно значение типа range_inputs , то есть я хочу сделать фильтр вида "От и до", например в виде ползунка.
Какие бы типы полей я не присваивал товарам, всё равно мне предлагает выбирать только между checkbox, select, radio, link, button_single, button_multi.
Хотя в демке да и в самом компоненте, там где сортировка по типу эти поля выпадают.
 
Уважаемые, помогите мне!
Я чего-то явно не понимаю.
[...]
Хотя в демке да и в самом компоненте, там где сортировка по типу эти поля выпадают.
У меня куплена поддержка, я спросил об этом разработчиков и они Для просмотра ссылки Войди или Зарегистрируйся :
Range slider is displayed when you are using numerical fields.
In Virtuemart 3 the numerical custom field is removed, so now the only granted way to have numerical values is by using our Для просмотра ссылки Войди или Зарегистрируйся

Т.е. в третьем вирте убрали числовой тип поля из настраиваемых полей (логично, т.к. строковой тип прекрасно справляется с задачей), а ползунки можно применять только к ним (что тоже логично).
Получается облом.

Однако, я думаю, что в этом случае мы имеем защиту от дурака. Т.е. в компоненте фильтра явно есть механизм вывода слайдера, но он отключен. Предполагаю, можно решить хаком.
К примеру, можно проверять строковые поля с названиями (придумаем добавлять к полю суффикс "_num", это будут числовые) и при проверке на тип разрешать слайдер для этих полей.
А дальше уж самим следить за тем, чтобы заполнять эти поля только числовыми данными.

Ну, вот вам ребятушки и решение я нашел:
открываем \administrator\components\com_customfilters\models\customfilters.php

в нем находим на 522 строке (для версии 2.2.6) такой код:
PHP:
if(($type!='int' && $type!='float') && ($opt->type=='range_inputs' || $opt->type=='range_slider')){}
else if($type!='date' && ($opt->type=='range_calendars')){}
он проверяет, если поле не целочисленное и не плавающее, то возможность выбрать слайдер будет отключена

и меняем его на такой:
PHP:
//if(($type!='int' && $type!='float') && ($opt->type=='range_inputs' || $opt->type=='range_slider')){}
if($type!='date' && ($opt->type=='range_calendars')){}

Всё, можно выбирать слайдер для любого поля.

Если учитывать что преобразование к числу всё равно производится в контроллере компонента, то должно всё работать.
Единственное, не вызывается диалог настроек, в котором можно задавать параметры слайдера (например мин и макс значения, по умолчанию они от 0 до 300).
При нажатии на эту ссылку ничего не происходит:
LHJwjzbI.png

Надо смотреть скрипты, там ошибка валится в консоль:
LHJwjzbJ.png


С этим позже разберусь, если руки дойдут.

Нашел, однако. Вот вам дополнение:
открываем \administrator\components\com_customfilters\views\customfilters\tmpl\default_settings.php
и в нем комментируем (или убираем) строку с проверкой (23 строка:(
PHP:
//if($item->data_type=='float' || $item->data_type=='int' || $item->data_type=='date'){
и последнюю, закрывающую строку:
PHP:
<?php //}?>

После этого у вас будет появляться окно настроек для слайдера:
LHJwjzbM.png
 
Последнее редактирование модератором:
С этим позже разберусь, если руки дойдут.

Нашел, однако. Вот вам дополнение:
открываем \administrator\components\com_customfilters\views\customfilters\tmpl\default_settings.php
и в нем комментируем (или убираем) строку с проверкой (23 строка:(
PHP:
//if($item->data_type=='float' || $item->data_type=='int' || $item->data_type=='date'){
и последнюю, закрывающую строку:
PHP:
<?php //}?>
После этого у вас будет появляться окно настроек для слайдера:
LHJwjzbM.png
Максимальное значение слайдера 300 и оно не меняется через настройки, как исправить?
И еще вопрос можно ли как нибудь с помощью стандартных полей организовать мульти выбор?

Нашел ответ в каком то смысле \modules\mod_cf_filtering\helper.php можно изменить стандартные значения
Код:
                                //from
                                $cf_range['options'][0]['size']=$cf_range_size;
                                $cf_range['options'][0]['name']=$var_name.'[0]';
                                $cf_range['options'][0]['maxlength']=$cf_range_maxlength;
                                $cf_range['options'][0]['slider_min_value']=$cfparams->get('slider_min_value',0);

                                //to
                                $cf_range['options'][1]['size']=$cf_range_size;
                                $cf_range['options'][1]['name']=$var_name.'[1]';
                                $cf_range['options'][1]['label']=JText::_('MOD_CF_RANGE_TO');
                                $cf_range['options'][1]['maxlength']=$cf_range_maxlength;
                                $cf_range['options'][1]['slider_max_value']=$slider_max_value=$cfparams->get('slider_max_value',5000);

                                $this->filters_opt[$key]=$cf_range;
                            }
 
Последнее редактирование:
У меня вопрос по Product Builder: как сделать так чтобы из одной категории можно было бы выбирать от 1 до 6 продуктов. Продукты могут повторяться.
 
Custom Filters PRO 2.2.8
Version 2.2.8 (28-May-2015)
Summary Status
Markup error in the drop-down lists. Generated by the spans within the option tag FIXED
Multiple parent categories can be selected when checkboxes (PRO) FIXED
Both parent and child categories can be selected when checkboxes (PRO) FIXED
Order by "order, product name" (VM 3.0.9) causes fatal error FIXED
Advanced settings are not saved in the component with the "range_input_slider" display type (PRO) FIXED
Manufacturers do not display images. When the image display type is set (PRO) FIXED
Code cleanup and php notices fix (PRO) IMPR
Addition of ARIA properties that makes it easier for persons with disabilities to use the filtering module ADDED


P.S.> Если делали хаки из моего Для просмотра ссылки Войди или Зарегистрируйся для отображения настроек слайдера, то при установке новой версии они будут затёрты. Не забудьте восстановить правки после обновления.
 
Последнее редактирование:
Назад
Сверху