Jump to content

Вывести фильтр на страницы брендов


Recommended Posts

Совсем не просто, потому что существующие свойства привязываются именно к категориям.

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

 

Близкая разработка:

http://simpla-tuning.com/products/filtr-po-svojstvam-i-tsenam-na-glavnoj-stranitse

Link to post
Share on other sites

На самом деле, все гораздо проще. Свойства выбираются исходя из наличия товаров с этими свойствами.

ProductsView.php

строка 70, удаляем 

        if(!empty($category))
        {
И закрывающую скобку }
$options_filter['category_id'] = $category->children;

Меняем на 

if(!empty($category))
$options_filter['category_id'] = $category->children;

Все должно работать

Link to post
Share on other sites

 

На самом деле, все гораздо проще. Свойства выбираются исходя из наличия товаров с этими свойствами.

ProductsView.php

строка 70, удаляем 

        if(!empty($category))
        {
И закрывающую скобку }


$options_filter['category_id'] = $category->children;

Меняем на 



if(!empty($category))
$options_filter['category_id'] = $category->children;

Все должно работать

При открытии страницы бренда открывается пустая страница. Наверное что-то не так.

Link to post
Share on other sites

Закрывающую скобку убрали?

Включите вывод ошибок.

Скобку убрал.

Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /home/мой-аккаунт/domains/мой-момен.ru/public_html/view/ProductsView.php on line 98

 

 

97. // Постраничная навигация

98.       $items_per_page = $this->settings->products_num;

Link to post
Share on other sites

// Свойства товаров

            $features = array();
            foreach($this->features->get_features(array('category_id'=>$category->id, 'in_filter'=>1)) as $feature)
            {
                $features[$feature->id] = $feature;
                if(($val = strval($this->request->get($feature->id)))!='')
                    $filter['features'][$feature->id] = $val;    
            }
            
            $options_filter['visible'] = 1;
            
            $features_ids = array_keys($features);
            if(!empty($features_ids))
                $options_filter['feature_id'] = $features_ids;
            if(!empty($category))    
            $options_filter['category_id'] = $category->children;
            if(isset($filter['features']))
                $options_filter['features'] = $filter['features'];
            if(!empty($brand))
                $options_filter['brand_id'] = $brand->id;
            
            $options = $this->features->get_options($options_filter);

            foreach($options as $option)
            {
                if(isset($features[$option->feature_id]))
                    $features[$option->feature_id]->options[] = $option;
            }
            
            foreach($features as $i=>&$feature)
            {
                if(empty($feature->options))
                    unset($features[$i]);
            }

            $this->design->assign('features', $features);
        }

        // Постраничная навигация
        $items_per_page = $this->settings->products_num;

Link to post
Share on other sites

Без этой скобки фильтр появился, но в логе: 

 

Notice: Undefined variable: category in /home/аккаунт/domains/мой-домен.ru/public_html/view/ProductsView.php on line 61

Notice: Trying to get property of non-object in /home/аккаунт/domains/мой-домен.ru/public_html/view/ProductsView.php on line 61

Warning: Cannot modify header information - headers already sent by (output started at /home/domains/domains/мой-домен.ru/public_html/view/ProductsView.php:61) in /home/аккаунт/domains/мой-домен.ru/public_html/index.php on line 24

 

Строки:

24.      $brand = $this->brands->get_brand((string)$brand_url);

61.      foreach($this->features->get_features(array('category_id'=>$category->id, 'in_filter'=>1)) as $feature)

Edited by dimon1974
Link to post
Share on other sites
  • 2 years later...

Тут есть живые? :) Сделал по инструкции, всё работает. А как в этом фильтре убрать не нужные мне свойства, просто он показывает вообще все свойства из всех категорий, а нужно только пару нужных указать и всё. Надеюсь кто нибудь поможет!

Link to post
Share on other sites

Ну, вообще-то у свойств есть галка - использовать в фильтре

Если она не стоит - свойство в фильтр не выводится.

Это в стандарте, как у вас - никто не знает.

Link to post
Share on other sites

Ну, вообще-то у свойств есть галка - использовать в фильтре

Если она не стоит - свойство в фильтр не выводится.

Это в стандарте, как у вас - никто не знает.

 

Есть, у меня свойств этих 4, и в настройках этих свойств стоит выборочно в каких категориях магазина их отображать и как бы всё в этом плане работает. Но когда захожу на страницу "Товары со скидкой" (ради чего я и прикручивал данный способ) то у меня там показываются вообще все свойства которые есть в магазине... Я  так понимаю что у меня немного другая ситуация, если просто смотреть "Все товары" то фильтр работает отлично, он по сути и должен показывать все свойства, а у меня "Товары со скидкой", как быть? Может подскажите а то я что то не могу въехать...)

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...