Обсуждение Cherry Picker - фильтр товаров для virtuemart/FastSeller - работа с фильтрами

А есть решение для фильтрации категорий?
категорий на сайте больше 100.. в каждой категории по 10 товаров однотипных..
нужно что бы по свойству фильтровались и выводились не товары (картинки товаров) а категории (картинки категорий) в которых товары с данными свойствами..
 
Хак под cherry picker для фильтрации товаров не зависимо от вложенности категорий все подхватывается из под категорий, протестировал вроде все работает!
Все модификации проходили в controller.php
строка 36 сопоставляем два ифа
PHP:
if ( empty($url_ptid) ) {  // if product_type_id in a link - we do not make query
                require_once (CLASSPATH."ps_product_category.php");
                $ps_product_category = new ps_product_category;
                $category_id=JRequest::getVar('category_id','');
                $category_childs = array();
                if ( $category_id && $ps_product_category->has_childs($category_id) ){
                    $category_childs = getCatergoryChildsList( $ps_product_category->getCategoryTreeArray(), $category_id );
                }
                if (!empty($category_id)){
                    $q = "SELECT pptx.`product_type_id`".
                        " FROM (`#__vm_product_product_type_xref` as pptx, `#__vm_product` as p)".
                        " LEFT JOIN `#__vm_product_category_xref` as pcx ".
                        " ON pptx.`product_id`=pcx.`product_id`";
                    if(count($category_childs )){
                        $q .= " WHERE pcx.`category_id` IN (".implode(',',$category_childs).")";
                    } else {
                        $q .= " WHERE pcx.`category_id`='$category_id'";
                    }
                    $q .= " AND p.`product_id`=pcx.`product_id`".
                        " AND p.`product_publish`='Y'";
                   
                    if( CHECK_STOCK && PSHOP_SHOW_OUT_OF_STOCK_PRODUCTS != "1") {
                        $q .= ' AND p.`product_in_stock` > 0';
                    }
                    $q.= " LIMIT 0 , 1";
                    $db->setQuery($q);
                    $ptid=$db->loadResult();
                }
            }else{
                $ptid=$url_ptid;
            }
это для того чтобы автоматом вытянуть product_type_id из товаров подкатегорий
потом в конец перед закрытием класса ставим новую функцию
PHP:
function getCatergoryChildsList( $clist, $catid ){
        $res_list = array( $catid );
        $search_childs = true;
        while( $search_childs ){
            $search_childs = false;
            foreach( $clist as $c_catid => $val ){
                if( in_array( $val['category_parent_id'], $res_list ) ){
                    $res_list[] = $c_catid;
                    unset( $clist[ $c_catid ] );
                    $search_childs = true;
                }
            }
        }
        return $res_list;
    }
ну и на последок проверка параметров со всех под категорий строка 306
PHP:
if($category_id && !chpconf::option('custom_ptid')){ // becuase we use custom PTI in some category - we don't want wrong category_id to be added
            require_once (CLASSPATH."ps_product_category.php");
            $ps_product_category = new ps_product_category;
            $category_childs = array();
            if ( $category_id && $ps_product_category->has_childs($category_id) ){
                $category_childs = getCatergoryChildsList( $ps_product_category->getCategoryTreeArray(), $category_id );
            }
           
            $tables="`#__vm_product_type_{$this->ptid()}` as pt";
            $joins="LEFT JOIN `#__vm_product_category_xref` as pcx ON pt.`product_id`=pcx.`product_id` ".$joins;
            //$where="pcx.`category_id`=$category_id ".$where;
            // uncomment this, comment above 1 line--for search with Child Products
            if(count($category_childs)){
                $where="pcx.`category_id` IN (".implode(',',$category_childs).") ".$where;
            } else {
                $where="(pcx.`category_id`=$category_id OR `product_parent_id`<>0) ".$where;
            }
        }else{
            $tables="`#__vm_product_type_{$this->ptid()}` as pt, `#__vm_product_category_xref` as pcx";
            $where="pt.`product_id`=pcx.`product_id` ".$where;
            // uncomment this, comment above 2 lines--for search with Child Products
            //$tables="`#__vm_product_type_{$this->ptid()}` as pt";
            //$where="1 ".$where;
        }

`product_parent_id`<>0 я убрал потому как задача не стояла тому с подтоварами скорей всего работать не будет! кому нужно допилит :)
Всем удачи! Это все под VM 1.1.9
 
Хак под cherry picker для фильтрации товаров не зависимо от вложенности категорий все подхватывается из под категорий, протестировал вроде все работает!
...........
то все под VM 1.1.9
Не было у черри пикера проблем с выводом товара из подкатегорий темболее под 1.1 виртом ))) не настроили просто. Чтобы черри пикер выводил данные всех подкатегорий надо указать ID типа и тогда он будет выводить все товары с данным типом не зависимо от того есть они в родительской категории или нет. ТОесть если у Вас скажем раздел "телевизоры" а в нем подразделы LCD, ПЛАЗМА, LED итд... имеющие общий тип - то цепляете модуль, указываете ID типа товаров которые в подкатегориях (логично что товар однотипный) и все - городить хаками ничего не надо :) и тем более допиливать под дочерние товары :D
 
Всё это хорошо но кто нибудь сталкивался с потребностью вывода по фильтру категорий а не товаров?
Есть ли у кого решение этой задачи...?
 
Не было у черри пикера проблем с выводом товара из подкатегорий темболее под 1.1 виртом ))) не настроили просто. Чтобы черри пикер выводил данные всех подкатегорий надо указать ID типа и тогда он будет выводить все товары с данным типом не зависимо от того есть они в родительской категории или нет. ТОесть если у Вас скажем раздел "телевизоры" а в нем подразделы LCD, ПЛАЗМА, LED итд... имеющие общий тип - то цепляете модуль, указываете ID типа товаров которые в подкатегориях (логично что товар однотипный) и все - городить хаками ничего не надо :) и тем более допиливать под дочерние товары :D

Я бы на вашем месте не смеялся, а просто по мозговал, если на второе не способны то я объясню!

Если есть больше одной главной категории товары которых привязаны к одному типу и тем более больше одного типа, то количество товаров возле параметра будет браться со всех под категорий но и родительских категорий!
Тому нет смысла указывать в наглую ID типа а можно это все сделать автоматом что я и выбрал, ваши решения на предыдущих страница я читал и считаю их через одно место! За труды можно было бы и поблагодарить, поржать любой ... может!
 
А есть решение для фильтрации категорий?
категорий на сайте больше 100.. в каждой категории по 10 товаров однотипных..
нужно что бы по свойству фильтровались и выводились не товары (картинки товаров) а категории (картинки категорий) в которых товары с данными свойствами..
Попробуй VirtueMart Boh! Category Filter
Для просмотра ссылки Войди или Зарегистрируйся

Единственное что тут не так гибко как с товарами, так как у категорий нет такого понятия как аттрибуты и типы. лучше это реализовать родительскими/дочерними товарами. Если не сталкивался, то могу подсказать как. (тем более что товары в категориях "однотипные")


Нет уж не надо :D Нравится решать собственноручно созданные проблемы - решайте, только вот
можно было бы и поблагодарить
- помоему перебор :hi: - Мне вас абсолютно не за что благодарить.
 
Спасибо за совет... VirtueMart Boh! Category Filter для версии 2.х а у меня 1.1.9.....
лучше это реализовать родительскими/дочерними товарами. Если не сталкивался, то могу подсказать как. (тем более что товары в категориях "однотипные")
а вот это уже интересно... подскажи...
 
А кто-то разбирался с чпу? при включении чпу чери пикер перестает работать...
 
А кто-то разбирался с чпу? при включении чпу чери пикер перестает работать...
В PDF мануале в самом конце (14 страница "Important II") про SEF говориться, там на выбор в модуле можно переключать с дефолта на шорт (filter url format в доп опциях)
И в конце (таже в мануале) оговорка: мол не забудьте из главы II хаки применить.

1. administrator\components\com_virtuemart\html\shop_browse_queries.php
2. administrator\components\com_virtuemart\html\shop.browse.php

а вот это уже интересно... подскажи...
Инструкцию отправил в личку
 
Назад
Сверху