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


Фото
- - - - -

Просмотренные НЕ из текущей категории


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

#1 kazak

kazak
  • Пользователь
  • 53 сообщений
  • Заказчик
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 22.05.2018 - 21:19

Привет, ребят!

 

Есть задумка, для которой нужно вывести отдельным блоком просмотренные товары Не из текущей категории.

 

При этом важно сохранить стандартный вывод просмотренных товаров.

 

По аналогии из топа можно было бы в view/View.php изменить строку

foreach($this->products->get_products(array('id'=>$browsed_products_ids)) as $p) 

на

foreach($this->products->get_products(array('id'=>$browsed_products_ids, 'category_id'=>$params['category_id'])) as $p)

(только с правильным оператором сравнения), но тогда нарушится работа стандартного вывода просмотренных.

 

Подскажите, как правильнее сделать - продублировать в view/View.php get_browsed_products, переименовать и сделать как писал выше или есть более правильное решение?

 



#2 mishanya

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

Опубликовано 22.05.2018 - 21:25

можете заменить

 

foreach($this->products->get_products(array('id'=>$browsed_products_ids)) as $p)

на

$params['id'] = $browsed_products_ids;
foreach($this->products->get_products($params) as $p)

 

 и вызывать в шаблоне как хотите.

 

так с категорией

{get_browsed_products var=browsed_products limit=20 category_id=$category->id}

или без

{get_browsed_products var=browsed_products limit=20}

Изменено: mishanya, 22.05.2018 - 21:32


#3 kazak

kazak
  • Пользователь
  • 53 сообщений
  • Заказчик
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 22.05.2018 - 22:21

можете заменить

 

foreach($this->products->get_products(array('id'=>$browsed_products_ids)) as $p)

на

$params['id'] = $browsed_products_ids;
foreach($this->products->get_products($params) as $p)

 

 и вызывать в шаблоне как хотите.

 

так с категорией

{get_browsed_products var=browsed_products limit=20 category_id=$category->id}

или без

{get_browsed_products var=browsed_products limit=20}

 

Попробовал, приведенный пример вывода

{get_browsed_products var=browsed_products limit=20 category_id=$category->id}

ограничивает показ только товаров из текущей категории. А мне нужно показать товары НЕ текущей категории.

пробовал участок category_id=$category->id

менять на:

1. category_id!=$category->id

и на 

2. category_id!==$category->id

 

в обоих случаях страница начинает отдавать 500 ошибку. Что не так?



#4 mishanya

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

Опубликовано 22.05.2018 - 22:40

Попробовал, приведенный пример вывода

{get_browsed_products var=browsed_products limit=20 category_id=$category->id}

ограничивает показ только товаров из текущей категории. А мне нужно показать товары НЕ текущей категории.

 

вам нужно в api/Products.php дописать свой фильтр, который бы исключал эту категорию.

 

пробовал участок category_id=$category->id

менять на:

1. category_id!=$category->id

и на 

2. category_id!==$category->id

 

в обоих случаях страница начинает отдавать 500 ошибку. Что не так?

 

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



#5 Maksclub

Maksclub

    Помогаю с Симплой и c PHP

  • Фрилансер
  • 1 347 сообщений
  • Дизайн, Программирование, Верстка, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 23.05.2018 - 08:05

Вам нужно в Products::get_products() добавить обработку параметра что-то типа exclude_category_id
И в запрос добавить условие NOT IN, тогда вы сможете просто использовать так везде (например в виджете), где нужно исключить:
 

$this->products->get_products([
    'id'=>$browsed_products_ids,
    'exclude_category_id'=>$params['exclude_category_id'],
]);

 

В шаблоне это использовалось бы так:

{get_browsed_products var=browsed_products limit=20 exclude_category_id=$category->id}

 

На память не скажу по коду, но нужно еще учесть детей исключаемой категории

 

 

...

 

На эти дрожжах можно заморочиться и вообще сделать полноценный фильтр "БЕЗ" -- чтобы исключать и бренды и категории или конкретные товары (по товару весьма полезно -- а то в виджетах бывает вылезает текущий товар)


Изменено: Maksclub, 23.05.2018 - 08:17


#6 phukortsin

phukortsin
  • Пользователь
  • 177 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 23.05.2018 - 08:57

Еще стоит подумать, а стоит ли такое делать.

Простая ситуация - пришел посетитель на сайт, зашел в интересующую категорию, облазил там полсотни товаров. А при текущих планах Вы ему покажете просмотренных - 0.

Если такое делать, надо менять и функционал формирования списка просмотренных - например, формировать с запасом, и при показе сортировать по признаку принадлежности к категории...






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

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