kazak Опубликовано 22 мая, 2018 Жалоба Поделиться Опубликовано 22 мая, 2018 Привет, ребят! Есть задумка, для которой нужно вывести отдельным блоком просмотренные товары Не из текущей категории. При этом важно сохранить стандартный вывод просмотренных товаров. По аналогии из топа можно было бы в 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, переименовать и сделать как писал выше или есть более правильное решение? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 22 мая, 2018 Жалоба Поделиться Опубликовано 22 мая, 2018 (изменено) можете заменить 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} Изменено 22 мая, 2018 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
kazak Опубликовано 22 мая, 2018 Автор Жалоба Поделиться Опубликовано 22 мая, 2018 можете заменить 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 ошибку. Что не так? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 22 мая, 2018 Жалоба Поделиться Опубликовано 22 мая, 2018 Попробовал, приведенный пример вывода {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 ошибку. Что не так? потому что это ошибочный код. поэтому и дает ошибку. вы пытаетесь впихнуть логику в передачу параметров Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 23 мая, 2018 Жалоба Поделиться Опубликовано 23 мая, 2018 (изменено) Вам нужно в 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} На память не скажу по коду, но нужно еще учесть детей исключаемой категории ... На эти дрожжах можно заморочиться и вообще сделать полноценный фильтр "БЕЗ" -- чтобы исключать и бренды и категории или конкретные товары (по товару весьма полезно -- а то в виджетах бывает вылезает текущий товар) Изменено 23 мая, 2018 пользователем Maksclub Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 23 мая, 2018 Жалоба Поделиться Опубликовано 23 мая, 2018 Еще стоит подумать, а стоит ли такое делать.Простая ситуация - пришел посетитель на сайт, зашел в интересующую категорию, облазил там полсотни товаров. А при текущих планах Вы ему покажете просмотренных - 0.Если такое делать, надо менять и функционал формирования списка просмотренных - например, формировать с запасом, и при показе сортировать по признаку принадлежности к категории... Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.