Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 19 Ответов
  • 4394 Просмотров
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Фильтр по атрибутам
« : 01.04.2012, 21:10:22 »
Есть набор атрибутов. Ну например цвет. У каждого товара есть определенные цвета. У кого-то белый и черный, у кого то белый и серый и т.д.
Можно ил сделать фильтр по этим атрибутам, т.е. пользователь выбирает черный цвет и ему все товары показываются где есть черный?
*

nevigen

  • Moderator
  • 10449
  • 863 / 25
  • http://n*****n.com
Re: Фильтр по атрибутам
« Ответ #1 : 02.04.2012, 02:16:31 »
В рамках категории есть. Вот здесь http://nevigen.com/razrabotki/item/32-joomshopping-kompleksnyiy-ajax-filtr.html
Или на сайте разработчиков
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Re: Фильтр по атрибутам
« Ответ #2 : 03.05.2012, 22:10:26 »
Вообщем взял за основу фильтр по характеристикам и добавил туда атрибуты.

Файл /www/modules/mod_jshopping_filters/tmpl/default.tpl
Это шаблон модуля, так что добавляем куда хотим
Код
<div class="filter_att">

        <?php foreach($att_fields as $ch){?>   
                <div class="att_name"><?php print $ch->name;?></div>
                <input type="hidden" name="att_fields[<?php print $ch->attr_id?>][]" value="0" />           
                <?php foreach($att_fieldvalues as $val){?>
<?php if($val->attr_id==$ch->attr_id) {?>

                    <input type="checkbox" name="att_fields[<?php print $ch->attr_id?>][]" value="<?php print $val->value_id;?>" <?php if (is_array($att_fields_active[$ch->attr_id]) && in_array($val->value_id, $att_fields_active[$ch->attr_id])) print "checked";?> onclick="document.jshop_filters.submit();" /><?php print $val->name;?><br/>

<?php }?>
                <?php }?>
            <br/>
        <?php }?>
</div>

Затем поднимаемся на уровень выше и в файле mod_jshopping_filters.php добавляем

Код
$att_fields = &JSFactory::getAllProductAttField();
$att_fieldvalues = &JSFactory::getAllProductAttFieldValueDetail();
$att_fields_active = $mainframe->getUserStateFromRequest($contextfilter.'att_fields', 'att_fields', array());
$att_fields_active = filterAllowValue($att_fields_active, "array_int_k_v+");       
впринципе неважно куда, но "красивей" перед строчкой     
Код
require(JModuleHelper::getLayoutPath('mod_jshopping_filters'));       

вот. Модуль у нас готов, но сайт при этом сдох.

Далее я буду приводить куски исходных файлов что бы было понятно что и куда вставлять.
Перемещаемся в папку /www/components/com_jshopping/lib

functions.php
Код
    if (count($filters['extra_fields'])>0) $res = 1;
// my
    if (count($filters['att_fields'])>0) $res = 1;
// my end
return $res;
Код
        $extra_fields = filterAllowValue($extra_fields, "array_int_k_v+");
    }

// my
    $att_fields_filter = $mainframe->getUserStateFromRequest( $contextfilter.'att_fields', 'att_fields', array());
    $att_fields_filter = filterAllowValue($att_fields_filter, "array_int_k_v+");
// my end

    $fprice_from = $mainframe->getUserStateFromRequest( $contextfilter.'fprice_from', 'fprice_from');
Код
    if ($jshopConfig->admin_show_product_extra_field){
        $filters['extra_fields'] = $extra_fields;       
    }
// my
    $filters['att_fields'] = $att_fields_filter;       
// my end

    if ($category_id && !$filters['categorys']){

factory.php
Код
    function &getAllProductExtraField(){
    static $list;
        if (!is_array($list)){
            $productfield =& JTable::getInstance('productfield', 'jshop');
            $list = $productfield->getList();
        }
    return $list;
    }

// my
    function &getAllProductAttField(){
    static $list;
        if (!is_array($list)){
            $productattfield =& JTable::getInstance('productattfield', 'jshop');
            $list = $productattfield->getList();
        }
    return $list;
    }
    function &getAllProductAttFieldValueDetail(){
    static $list;
        if (!is_array($list)){
            $productattfieldvalue =& JTable::getInstance('productattfieldvalue', 'jshop');
            $list = $productattfieldvalue->getAllList();
        }
    return $list;
    }
// my end
   
    function &getAllProductExtraFieldValue(){

jtableauto.php
Код
                    $adv_query .= " AND prod.`extra_field_".$f_id."`='".$db->getEscaped($vals)."'";
                }
            }
        }
// my
        if (is_array($filters['att_fields'])){
            foreach($filters['att_fields'] as $f_id=>$vals){
                if (is_array($vals) && count($vals)){
$adv_query .= "AND prod.product_id IN (SELECT product_id FROM `#__jshopping_products_attr2` AS attr WHERE attr.attr_value_id in (".implode(",",$vals).") ) ";
                }elseif(is_string($vals) && $vals!=""){
$adv_query .= "AND prod.product_id IN (SELECT product_id FROM `#__jshopping_products_attr2` AS attr WHERE attr.attr_value_id='".$db->getEscaped($vals)."' ) ";
                }
            }
        }
// my end

       
        $this->getBuildQueryListProductFilterPrice($filters, $adv_query, $adv_from);

Осталось в папку /www/components/com_jshopping/tables положить два файлика, которые я приатачил и все.
Впринципе даный вариант вываодит все атрибуты которые есть, но там заложена возможность вывод только определенного атрибута.

[вложение удалено Администратором]
*

Silent_Breeze

  • Захожу иногда
  • 171
  • 33 / 0
Re: Фильтр по атрибутам
« Ответ #3 : 19.05.2012, 14:26:52 »
Атрибуты-то он выводит, только вот не фильтрует ничего, просто показывает пустую страницу(без результатов), к тому же выводит все вообще атрибуты из всех категорий, а не из текущей.
(J2.5.4 JS 3.6.1)

Так что модуль от nevigen (судя по демо) пока вне конкуренции.
Здесь всё есть... просто нужно поискать немного... ;)
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Re: Фильтр по атрибутам
« Ответ #4 : 21.05.2012, 23:16:01 »
Атрибуты-то он выводит, только вот не фильтрует ничего, просто показывает пустую страницу(без результатов), к тому же выводит все вообще атрибуты из всех категорий, а не из текущей.
(J2.5.4 JS 3.6.1)
последние три изменения правильно сделали? Отмеченные атрибуты остаются отмеченными на отфильтрованной странице? Файлы приатаченые положены на место?
Атрибуты вообще то общие и к категориям не привязаны.... это характеристики привязаны...
*

nevigen

  • Moderator
  • 10449
  • 863 / 25
  • http://n*****n.com
Re: Фильтр по атрибутам
« Ответ #5 : 21.05.2012, 23:47:05 »
Атрибуты начиная с версии 3.6.0 не только общие но и могут привязываться в категориям ;)
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Re: Фильтр по атрибутам
« Ответ #6 : 22.05.2012, 23:01:09 »
Атрибуты начиная с версии 3.6.0 не только общие но и могут привязываться в категориям ;)
понятно. У меня Version 3.5.1
*

nevigen

  • Moderator
  • 10449
  • 863 / 25
  • http://n*****n.com
Re: Фильтр по атрибутам
« Ответ #7 : 22.05.2012, 23:57:02 »
пора апдейтить ;)
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Re: Фильтр по атрибутам
« Ответ #8 : 23.05.2012, 19:45:45 »
пора апдейтить ;)

неее, там столько переделок что пусть лучше будет та что есть :)
*

SwanE

  • Осваиваюсь на форуме
  • 42
  • 1 / 0
Re: Фильтр по атрибутам
« Ответ #9 : 08.06.2012, 14:28:58 »
Народ, есть ли какое то решения данной проблемы для версии 3.3.2
Апдейтить не хочу...
*

nevigen

  • Moderator
  • 10449
  • 863 / 25
  • http://n*****n.com
Re: Фильтр по атрибутам
« Ответ #10 : 08.06.2012, 21:59:10 »
нету. вернее мне не известны.
может от разрабов.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
Re: Фильтр по атрибутам
« Ответ #11 : 23.06.2012, 18:30:48 »
вместе с этим модулем идёт плагин?
*

Sergey2

  • Давно я тут
  • 651
  • 15 / 1
Re: Фильтр по атрибутам
« Ответ #12 : 24.06.2012, 23:23:01 »
вместе с этим модулем идёт плагин?
нет
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
*

nevigen

  • Moderator
  • 10449
  • 863 / 25
  • http://n*****n.com
Re: Фильтр по атрибутам
« Ответ #14 : 25.06.2012, 00:34:34 »
он идет в формате аддона, там сборник и модуль и плагин и много его еще...
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
Re: Фильтр по атрибутам
« Ответ #15 : 26.06.2012, 10:44:27 »
Цитировать
http://demo.nevigen.com/music-video.html
а где здесь постраничная навигация по товарам?
*

nevigen

  • Moderator
  • 10449
  • 863 / 25
  • http://n*****n.com
Re: Фильтр по атрибутам
« Ответ #16 : 26.06.2012, 11:11:02 »
не понял вопроса.
причем тут постраничная навигация к модулю фильтра ?
абсолютно не связанные вещи, это раз.
второе - ее нет потому, что товаров меньше чем указано для отображения на странице.

PS. Сделал 6 товаров на странице, чтобы вопросов не возникало.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
Re: Фильтр по атрибутам
« Ответ #17 : 26.06.2012, 11:35:46 »
я выбрал в фильтре Серия (хар.) 1234567
появилось что найдено товаров 11
нажал "показать"

отображается 5 товаров, как увидеть остальные?
*

Виталик

  • Завсегдатай
  • 1244
  • 130 / 0
Re: Фильтр по атрибутам
« Ответ #18 : 26.06.2012, 11:44:35 »
причем тут постраничная навигация к модулю фильтра ?
сохранятся ли параметры при переходе на следующие страницы?
*

nevigen

  • Moderator
  • 10449
  • 863 / 25
  • http://n*****n.com
Re: Фильтр по атрибутам
« Ответ #19 : 26.06.2012, 12:21:17 »
Не разбирались, да на демо есть проблема. Но это сокрее вопрос шаблона.
Вот пример, где работает и правильно отрабатывается пагинация.

но вопрос будем прорабатывать, возможно часть проблемы лежит в новшествах ЖШ в частности возможности показать всё.
лимиты не отрабатываются корректно.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод изображения товара по атрибутам

Автор rifys

Ответов: 60
Просмотров: 14459
Последний ответ 17.06.2020, 10:39:44
от draff
Скрывать (или делать неактивными) характеристики в модуле Фильтр

Автор 3axap-superstar

Ответов: 3
Просмотров: 855
Последний ответ 26.06.2019, 16:01:34
от 3axap-superstar
Многоступенчатый фильтр по характеристикам

Автор shop-user

Ответов: 1
Просмотров: 926
Последний ответ 23.04.2018, 20:54:03
от nevigen
Предусмотрен ли поиск по атрибутам?

Автор kopo6o4er

Ответов: 42
Просмотров: 16404
Последний ответ 07.02.2018, 22:42:15
от dmitry_stas
Фильтр по одному атрибуту. Код

Автор Ramil8009

Ответов: 5
Просмотров: 1417
Последний ответ 14.11.2014, 14:43:57
от sergeosn