Перейти к содержимому


Фото
- - - - -

Отдельные страницы для рекомендуемых и акционных товаров


Best Answer Kosjak76 , 08.04.2014 - 12:48

Короче, выкладываю рабочее решение:

.htaccess в корне сайта:

 

RewriteRule ^hits/?$    index.php?module=ProductsView&mode=hits [L,QSA]
RewriteRule ^sale/?$    index.php?module=ProductsView&mode=sale [L,QSA]
 
ProductsView.php:
 
        // GET-Параметры
        $category_url = $this->request->get('category', 'string');
        $brand_url    = $this->request->get('brand', 'string');
    $mode    = $this->request->get('mode', 'string');
        
        $filter = array();
        $filter['visible'] = 1;    
 
        if ($mode == 'hits')
        {
            $filter['featured'] = 1;
        }
        if ($mode == 'sale')
        {
            $filter['discounted'] = 1;
        
 
Готово, по адресу hits - рекомендуемые, по адресу sale - акционные товары.
Перейти к посту


  • Чтобы отвечать, сперва войдите на форум
64 ответов в теме

#61 Kosjak76

Kosjak76
  • Модератор
  • 3 777 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 07.02.2018 - 15:02

А нафига вам там свойства?

Или просто шоб було?

Такое впечатление, что вы лепите в магазин все, что найдете бесплатного, без понимания, что это и как работает...



#62 Kosjak76

Kosjak76
  • Модератор
  • 3 777 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 07.02.2018 - 15:05

Если вы хотите чтобы там были только свойства от товаров, которые там есть, то вам придется писать фильтры для этого.

Типа, как сделано для видимых товаров:

 

if(isset($filter['visible']))
            $visible_filter = $this->db->placehold('INNER JOIN __products p ON p.id=po.product_id AND visible=?', intval($filter['visible']));


#63 Плохиш

Плохиш
  • Забаненый
  • 98 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Орел

Опубликовано 07.02.2018 - 16:02

На вопрос

 

в /hits и /sales выводятся все свойства и все значения, которые существуют, даже если товары в /hits и /sales не имеют этих свойств

 

ответ был дан ранее:

 

удаление if(!empty($category)) из view/ProductsView.php дало результат для отображения фильтра на странице Все товары, но hits и sales - это не $category и чего то не хватает для корректной работы

 

Для корректной работы Вам не хватает понимания смысла проводимых изменений.

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



#64 Ivan923

Ivan923
  • Пользователь
  • 36 сообщений
  • Пользователь
  • Откуда:Кемерово

Опубликовано 05.12.2018 - 07:27

В файле ProductsView.php

        if ($mode == 'hits')
        {
            $filter['featured'] = 1;
        }
        if ($mode == 'sale')
        {
            $filter['discounted'] = 1;
        }

Меняем (или используем вместо)

        $mode = $this->request->get('mode');
        if (!empty($mode)) {
            if ($mode == 'hits') {
                $filter['featured'] = 1;
            } elseif ($mode == 'sale') {
                $filter['discounted'] = 1;
            }
        }

Решает вопрос с ошибками: Ошибки возникают из отсутствия этой строчки

$mode = $this->request->get('mode');

Notice: Undefined variable: mode in ..../view/ProductsView.php on line 32
Notice: Undefined variable: mode in ..../view/ProductsView.php on line 36
Warning: Cannot modify header information - headers already sent by (output started at ../ProductsView.php:32) in ...../index.php on line 26


Изменено: Kosjak76, 05.12.2018 - 11:13


#65 mishanya

mishanya
  • Фрилансер
  • 2 556 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 05.12.2018 - 20:16

В файле ProductsView.php

        if ($mode == 'hits')
        {
            $filter['featured'] = 1;
        }
        if ($mode == 'sale')
        {
            $filter['discounted'] = 1;
        }

Меняем (или используем вместо)

        $mode = $this->request->get('mode');
        if (!empty($mode)) {
            if ($mode == 'hits') {
                $filter['featured'] = 1;
            } elseif ($mode == 'sale') {
                $filter['discounted'] = 1;
            }
        }

Решает вопрос с ошибками: Ошибки возникают из отсутствия этой строчки

$mode = $this->request->get('mode');

Notice: Undefined variable: mode in ..../view/ProductsView.php on line 32
Notice: Undefined variable: mode in ..../view/ProductsView.php on line 36
Warning: Cannot modify header information - headers already sent by (output started at ../ProductsView.php:32) in ...../index.php on line 26

эта строчка есть выше. смотрите внимательно решение. может вы не включили ее в свой код. выше 

        
$mode    = $this->request->get('mode', 'string');
$filter = array();
        $filter['visible'] = 1;    

Изменено: mishanya, 05.12.2018 - 20:16





0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых