palehin Опубликовано 5 мая, 2016 Жалоба Поделиться Опубликовано 5 мая, 2016 Как вывести связанные товары в корзине?Хотябы по первому добавленному в корзину товару.Уже голову сломал. Ничего не получается. Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 5 мая, 2016 Жалоба Поделиться Опубликовано 5 мая, 2016 если только для первого то не так сложно. если брать по несколько из всех добавленных уже сложнее. сделайте выборку для первогого товара рекомендуемых как это сделано в ProductView.php. выбирать нужно в api/Cart.php в ф-и get_cart Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 5 мая, 2016 Жалоба Поделиться Опубликовано 5 мая, 2016 http://simpla-tuning.com/korzina---vyvod-svyazannyh-tovarov Цитата Ссылка на сообщение Поделиться на другие сайты
palehin Опубликовано 5 мая, 2016 Автор Жалоба Поделиться Опубликовано 5 мая, 2016 Расскажите подробнее?В ProductView.php связанные товары берутся исходя из url открытого в данный момент товара. Я пробовал переделать эту часть кода для cartView.php но ничего не вышло.Как все это интегрировать в api/cart.php ? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 5 мая, 2016 Жалоба Поделиться Опубликовано 5 мая, 2016 (изменено) Расскажите подробнее?В ProductView.php связанные товары берутся исходя из url открытого в данный момент товара. Я пробовал переделать эту часть кода для cartView.php но ничего не вышло.Как все это интегрировать в api/cart.php ?нет они берутся там исходя из айди товара, который в свою очередь да берется из юрл. но в корзине у вас уже есть айди товара в переменной $purchase->product->id Изменено 5 мая, 2016 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
Решение mishanya Опубликовано 5 мая, 2016 Решение Жалоба Поделиться Опубликовано 5 мая, 2016 (изменено) В общем чтобы получить все рекомендуемые товары всех товаров из корзины ПОСЛЕ foreach($items as $variant_id=>$item) { $purchase = null; if(!empty($products[$item->variant->product_id])) { $purchase = new stdClass(); $purchase->product = $products[$item->variant->product_id]; $purchase->variant = $item->variant; $purchase->amount = $item->amount; $cart->purchases[] = $purchase; $cart->total_price += $item->variant->price*$item->amount; $cart->total_products += $item->amount; } } добавить надо $cart->related_products = array(); $related_ids = array(); $related_products = array(); foreach($this->products->get_related_products($products_ids) as $p) { $related_ids[] = $p->related_id; $related_products[$p->related_id] = null; } if(!empty($related_ids)) { foreach($this->products->get_products(array('id'=>$related_ids, 'in_stock'=>1, 'visible'=>1)) as $p) $related_products[$p->id] = $p; $related_products_images = $this->products->get_images(array('product_id'=>array_keys($related_products))); foreach($related_products_images as $related_product_image) if(isset($related_products[$related_product_image->product_id])) $related_products[$related_product_image->product_id]->images[] = $related_product_image; $related_products_variants = $this->variants->get_variants(array('product_id'=>array_keys($related_products), 'in_stock'=>1)); foreach($related_products_variants as $related_product_variant) { if(isset($related_products[$related_product_variant->product_id])) { $related_products[$related_product_variant->product_id]->variants[] = $related_product_variant; } } foreach($related_products as $id=>$r) { if(is_object($r)) { $r->image = &$r->images[0]; $r->variant = &$r->variants[0]; $cart->related_products[] = $r; } else { unset($related_products[$id]); } } } будет доступен массив $cart->related_productsхотелось бы знать что тут стоит 40$ Изменено 5 мая, 2016 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 5 мая, 2016 Жалоба Поделиться Опубликовано 5 мая, 2016 Мишаня велком http://simpla-addons.org/add Цитата Ссылка на сообщение Поделиться на другие сайты
palehin Опубликовано 5 мая, 2016 Автор Жалоба Поделиться Опубликовано 5 мая, 2016 (изменено) Мишаня, Спасибо огромное добрый человек!Работает! Изменено 5 мая, 2016 пользователем palehin Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 5 мая, 2016 Жалоба Поделиться Опубликовано 5 мая, 2016 Мишаня, Спасибо огромное добрый человек!Работает! Пожалуйста, так же можно ограничить выборку этих товаров до какого-то количества заменив foreach($this->products->get_products(array('id'=>$related_ids, 'in_stock'=>1, 'visible'=>1)) as $p) на foreach($this->products->get_products(array('id'=>$related_ids, 'limit'=>6, 'in_stock'=>1, 'visible'=>1)) as $p) где 'limit'=>6, это количество ваших товаров. Цитата Ссылка на сообщение Поделиться на другие сайты
palehin Опубликовано 5 мая, 2016 Автор Жалоба Поделиться Опубликовано 5 мая, 2016 (изменено) В общем чтобы получить все рекомендуемые товары всех товаров из корзины ПОСЛЕ foreach($items as $variant_id=>$item) { $purchase = null; if(!empty($products[$item->variant->product_id])) { $purchase = new stdClass(); $purchase->product = $products[$item->variant->product_id]; $purchase->variant = $item->variant; $purchase->amount = $item->amount; $cart->purchases[] = $purchase; $cart->total_price += $item->variant->price*$item->amount; $cart->total_products += $item->amount; } } добавить надо $cart->related_products = array(); $related_ids = array(); $related_products = array(); foreach($this->products->get_related_products($products_ids) as $p) { $related_ids[] = $p->related_id; $related_products[$p->related_id] = null; } if(!empty($related_ids)) { foreach($this->products->get_products(array('id'=>$related_ids, 'in_stock'=>1, 'visible'=>1)) as $p) $related_products[$p->id] = $p; $related_products_images = $this->products->get_images(array('product_id'=>array_keys($related_products))); foreach($related_products_images as $related_product_image) if(isset($related_products[$related_product_image->product_id])) $related_products[$related_product_image->product_id]->images[] = $related_product_image; $related_products_variants = $this->variants->get_variants(array('product_id'=>array_keys($related_products), 'in_stock'=>1)); foreach($related_products_variants as $related_product_variant) { if(isset($related_products[$related_product_variant->product_id])) { $related_products[$related_product_variant->product_id]->variants[] = $related_product_variant; } } foreach($related_products as $id=>$r) { if(is_object($r)) { $r->image = &$r->images[0]; $r->variant = &$r->variants[0]; $cart->related_products[] = $r; } else { unset($related_products[$id]); } } } будет доступен массив $cart->related_productsхотелось бы знать что тут стоит 40$ Когда добавляю ПОСЛЕ, то в корзине появляется два одинаковых товара при добавлении одного.+ Как убрать дубликаты, допустим если у нескольких товаров одинаковые сопутствующие? array_unique? Изменено 5 мая, 2016 пользователем palehin Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 5 мая, 2016 Жалоба Поделиться Опубликовано 5 мая, 2016 Когда добавляю ПОСЛЕ, то в корзине появляется два одинаковых товара при добавлении одного может вы продублировали это еще раз? foreach($items as $variant_id=>$item) { $purchase = null; if(!empty($products[$item->variant->product_id])) { $purchase = new stdClass(); $purchase->product = $products[$item->variant->product_id]; $purchase->variant = $item->variant; $purchase->amount = $item->amount; $cart->purchases[] = $purchase; $cart->total_price += $item->variant->price*$item->amount; $cart->total_products += $item->amount; } } Цитата Ссылка на сообщение Поделиться на другие сайты
palehin Опубликовано 5 мая, 2016 Автор Жалоба Поделиться Опубликовано 5 мая, 2016 может вы продублировали это еще раз? foreach($items as $variant_id=>$item) { $purchase = null; if(!empty($products[$item->variant->product_id])) { $purchase = new stdClass(); $purchase->product = $products[$item->variant->product_id]; $purchase->variant = $item->variant; $purchase->amount = $item->amount; $cart->purchases[] = $purchase; $cart->total_price += $item->variant->price*$item->amount; $cart->total_products += $item->amount; } } Да, там продублировалось немного. Недоглядел ваш измененный ответ. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 5 мая, 2016 Жалоба Поделиться Опубликовано 5 мая, 2016 хотелось бы знать что тут стоит 40$ По вопросам ценообразования полезно прочесть хотя бы начальные главы из учебников для экономистов-первокурсников, чтобы не задавать столь примитивные вопросы. Если Вы этот код писали полностью самостоятельно от и до по спецзаказу и при этом отлаживали каждую строку, то, он, может, и больше стоит.Если же Вы скопировали его и изменили в нем пару строк, вместо одного параметра подставив другой, то цена, вероятно, должна быть существенно ниже, вплоть до минимальной или нулевой. А вот если бы Вы свой код проверили не поверхностно - вроде работает - а как следует протестировали разные моменты, Вы бы наверняка смогли найти парочку недостатков, один из которых, на мой взгляд, весьма серьезный... Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 7 июня, 2016 Жалоба Поделиться Опубликовано 7 июня, 2016 1. Ошибка мелкая - выводятся товары, связанные с теми, которые есть в корзине. При этом запросто может оказаться, что в списке связанных могут быть и товары, которые УЖЕ находятся в корзине. Видимо, это неправильно...2. Ошибка очень серьезная - доработка создает бесполезную излишнюю нагрузку на базу. Это понятно, или надо разжевывать? Если непонятно, то информация к размышлению: посмотреть, как автором Simpla стандартно сделан (закомментированный) вывод связанных в корзину в предыдущих версиях. Цитата Ссылка на сообщение Поделиться на другие сайты
dols4me Опубликовано 22 августа, 2016 Жалоба Поделиться Опубликовано 22 августа, 2016 Скажите пожалуйста Допустим я указал связанные товары только к 1 товару, а в корзине хочу чтобы они были ко всем товарам постоянно.Тоесть не каждый товар имеет свои связанные, а все товары имеют общие связанные Цитата Ссылка на сообщение Поделиться на другие сайты
Kniazdiit Опубликовано 22 августа, 2016 Жалоба Поделиться Опубликовано 22 августа, 2016 Скажите пожалуйста Допустим я указал связанные товары только к 1 товару, а в корзине хочу чтобы они были ко всем товарам постоянно.Тоесть не каждый товар имеет свои связанные, а все товары имеют общие связанныеТогда легче просто выводить определенный товары в корзине всегда. Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 22 августа, 2016 Жалоба Поделиться Опубликовано 22 августа, 2016 Скажите пожалуйста Допустим я указал связанные товары только к 1 товару, а в корзине хочу чтобы они были ко всем товарам постоянно.Тоесть не каждый товар имеет свои связанные, а все товары имеют общие связанные используйте универсальный виджет товаров и выводите туда постоянно ваших 10товаров Цитата Ссылка на сообщение Поделиться на другие сайты
dols4me Опубликовано 22 августа, 2016 Жалоба Поделиться Опубликовано 22 августа, 2016 тоесть выводить через виджет товары по айди? или создавать новый тип по типу рекомендуемые и выводить их.Если можно кусок кода с добавлением по айди товаров.Спасибо Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 22 августа, 2016 Жалоба Поделиться Опубликовано 22 августа, 2016 тоесть выводить через виджет товары по айди? или создавать новый тип по типу рекомендуемые и выводить их.Если можно кусок кода с добавлением по айди товаров.Спасибо тут виджет Цитата Ссылка на сообщение Поделиться на другие сайты
SimplaDeveloper Опубликовано 12 сентября, 2016 Жалоба Поделиться Опубликовано 12 сентября, 2016 А у меня не появились связанные товары в корзине. В шаблоне cart.tpl добавил. Но не работает. Может я что-то еще не сделал Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 12 сентября, 2016 Жалоба Поделиться Опубликовано 12 сентября, 2016 А у меня не появились связанные товары в корзине. В шаблоне cart.tpl добавил. Но не работает. Может я что-то еще не сделал возможно. чтобы это понять нужно знать что вы делали. Цитата Ссылка на сообщение Поделиться на другие сайты
SimplaDeveloper Опубликовано 13 сентября, 2016 Жалоба Поделиться Опубликовано 13 сентября, 2016 Я в api/Cart.php внес рекомендуемые изменения. Затем я скопировал весь html-код связанных товаров из файла product.tpl и вставил в файл cart.tpl. Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 13 сентября, 2016 Жалоба Поделиться Опубликовано 13 сентября, 2016 Я в api/Cart.php внес рекомендуемые изменения. Затем я скопировал весь html-код связанных товаров из файла product.tpl и вставил в файл cart.tpl. заметьте, я писал что будет доступен массив $cart->related_products а не $related_products как в товаре Цитата Ссылка на сообщение Поделиться на другие сайты
SimplaDeveloper Опубликовано 13 сентября, 2016 Жалоба Поделиться Опубликовано 13 сентября, 2016 Заметил, исправил, заработало Цитата Ссылка на сообщение Поделиться на другие сайты
sansara0891 Опубликовано 1 ноября, 2017 Жалоба Поделиться Опубликовано 1 ноября, 2017 Здравствуйте. Доработка прекрасно работает, но скажите, а как обновить список товаров в корзине. Ведь товар добавляется, в информере количество возрастает, но товар в списке корзины появляется только после перезагрузки страницы. Подскажите, пожалуйста, как решить данный вопрос. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.