Jump to content

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


Recommended Posts

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

 

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

 

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

 

По аналогии из топа можно было бы в 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, переименовать и сделать как писал выше или есть более правильное решение?

 

Link to post
Share on other sites

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

 

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}
Edited by mishanya
Link to post
Share on other sites

 

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

 

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 ошибку. Что не так?

Link to post
Share on other sites

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

{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 ошибку. Что не так?

 

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

Link to post
Share on other sites

Вам нужно в 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}

 

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

 

 

...

 

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

Edited by Maksclub
Link to post
Share on other sites

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

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

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

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...