palehin Posted May 5, 2016 Report Share Posted May 5, 2016 Как вывести связанные товары в корзине?Хотябы по первому добавленному в корзину товару.Уже голову сломал. Ничего не получается. Quote Link to post Share on other sites
mishanya Posted May 5, 2016 Report Share Posted May 5, 2016 если только для первого то не так сложно. если брать по несколько из всех добавленных уже сложнее. сделайте выборку для первогого товара рекомендуемых как это сделано в ProductView.php. выбирать нужно в api/Cart.php в ф-и get_cart Quote Link to post Share on other sites
Kors Posted May 5, 2016 Report Share Posted May 5, 2016 http://simpla-tuning.com/korzina---vyvod-svyazannyh-tovarov Quote Link to post Share on other sites
palehin Posted May 5, 2016 Author Report Share Posted May 5, 2016 Расскажите подробнее?В ProductView.php связанные товары берутся исходя из url открытого в данный момент товара. Я пробовал переделать эту часть кода для cartView.php но ничего не вышло.Как все это интегрировать в api/cart.php ? Quote Link to post Share on other sites
mishanya Posted May 5, 2016 Report Share Posted May 5, 2016 (edited) Расскажите подробнее?В ProductView.php связанные товары берутся исходя из url открытого в данный момент товара. Я пробовал переделать эту часть кода для cartView.php но ничего не вышло.Как все это интегрировать в api/cart.php ?нет они берутся там исходя из айди товара, который в свою очередь да берется из юрл. но в корзине у вас уже есть айди товара в переменной $purchase->product->id Edited May 5, 2016 by mishanya Quote Link to post Share on other sites
Solution mishanya Posted May 5, 2016 Solution Report Share Posted May 5, 2016 (edited) В общем чтобы получить все рекомендуемые товары всех товаров из корзины ПОСЛЕ 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$ Edited May 5, 2016 by mishanya Quote Link to post Share on other sites
Noxter Posted May 5, 2016 Report Share Posted May 5, 2016 Мишаня велком http://simpla-addons.org/add Quote Link to post Share on other sites
palehin Posted May 5, 2016 Author Report Share Posted May 5, 2016 (edited) Мишаня, Спасибо огромное добрый человек!Работает! Edited May 5, 2016 by palehin Quote Link to post Share on other sites
mishanya Posted May 5, 2016 Report Share Posted May 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, это количество ваших товаров. Quote Link to post Share on other sites
palehin Posted May 5, 2016 Author Report Share Posted May 5, 2016 (edited) В общем чтобы получить все рекомендуемые товары всех товаров из корзины ПОСЛЕ 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? Edited May 5, 2016 by palehin Quote Link to post Share on other sites
mishanya Posted May 5, 2016 Report Share Posted May 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; } } Quote Link to post Share on other sites
palehin Posted May 5, 2016 Author Report Share Posted May 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; } } Да, там продублировалось немного. Недоглядел ваш измененный ответ. Quote Link to post Share on other sites
Kors Posted May 5, 2016 Report Share Posted May 5, 2016 хотелось бы знать что тут стоит 40$ По вопросам ценообразования полезно прочесть хотя бы начальные главы из учебников для экономистов-первокурсников, чтобы не задавать столь примитивные вопросы. Если Вы этот код писали полностью самостоятельно от и до по спецзаказу и при этом отлаживали каждую строку, то, он, может, и больше стоит.Если же Вы скопировали его и изменили в нем пару строк, вместо одного параметра подставив другой, то цена, вероятно, должна быть существенно ниже, вплоть до минимальной или нулевой. А вот если бы Вы свой код проверили не поверхностно - вроде работает - а как следует протестировали разные моменты, Вы бы наверняка смогли найти парочку недостатков, один из которых, на мой взгляд, весьма серьезный... Quote Link to post Share on other sites
Kors Posted June 7, 2016 Report Share Posted June 7, 2016 1. Ошибка мелкая - выводятся товары, связанные с теми, которые есть в корзине. При этом запросто может оказаться, что в списке связанных могут быть и товары, которые УЖЕ находятся в корзине. Видимо, это неправильно...2. Ошибка очень серьезная - доработка создает бесполезную излишнюю нагрузку на базу. Это понятно, или надо разжевывать? Если непонятно, то информация к размышлению: посмотреть, как автором Simpla стандартно сделан (закомментированный) вывод связанных в корзину в предыдущих версиях. Quote Link to post Share on other sites
dols4me Posted August 22, 2016 Report Share Posted August 22, 2016 Скажите пожалуйста Допустим я указал связанные товары только к 1 товару, а в корзине хочу чтобы они были ко всем товарам постоянно.Тоесть не каждый товар имеет свои связанные, а все товары имеют общие связанные Quote Link to post Share on other sites
Kniazdiit Posted August 22, 2016 Report Share Posted August 22, 2016 Скажите пожалуйста Допустим я указал связанные товары только к 1 товару, а в корзине хочу чтобы они были ко всем товарам постоянно.Тоесть не каждый товар имеет свои связанные, а все товары имеют общие связанныеТогда легче просто выводить определенный товары в корзине всегда. Quote Link to post Share on other sites
mishanya Posted August 22, 2016 Report Share Posted August 22, 2016 Скажите пожалуйста Допустим я указал связанные товары только к 1 товару, а в корзине хочу чтобы они были ко всем товарам постоянно.Тоесть не каждый товар имеет свои связанные, а все товары имеют общие связанные используйте универсальный виджет товаров и выводите туда постоянно ваших 10товаров Quote Link to post Share on other sites
dols4me Posted August 22, 2016 Report Share Posted August 22, 2016 тоесть выводить через виджет товары по айди? или создавать новый тип по типу рекомендуемые и выводить их.Если можно кусок кода с добавлением по айди товаров.Спасибо Quote Link to post Share on other sites
mishanya Posted August 22, 2016 Report Share Posted August 22, 2016 тоесть выводить через виджет товары по айди? или создавать новый тип по типу рекомендуемые и выводить их.Если можно кусок кода с добавлением по айди товаров.Спасибо тут виджет Quote Link to post Share on other sites
SimplaDeveloper Posted September 12, 2016 Report Share Posted September 12, 2016 А у меня не появились связанные товары в корзине. В шаблоне cart.tpl добавил. Но не работает. Может я что-то еще не сделал Quote Link to post Share on other sites
mishanya Posted September 12, 2016 Report Share Posted September 12, 2016 А у меня не появились связанные товары в корзине. В шаблоне cart.tpl добавил. Но не работает. Может я что-то еще не сделал возможно. чтобы это понять нужно знать что вы делали. Quote Link to post Share on other sites
SimplaDeveloper Posted September 13, 2016 Report Share Posted September 13, 2016 Я в api/Cart.php внес рекомендуемые изменения. Затем я скопировал весь html-код связанных товаров из файла product.tpl и вставил в файл cart.tpl. Quote Link to post Share on other sites
mishanya Posted September 13, 2016 Report Share Posted September 13, 2016 Я в api/Cart.php внес рекомендуемые изменения. Затем я скопировал весь html-код связанных товаров из файла product.tpl и вставил в файл cart.tpl. заметьте, я писал что будет доступен массив $cart->related_products а не $related_products как в товаре Quote Link to post Share on other sites
SimplaDeveloper Posted September 13, 2016 Report Share Posted September 13, 2016 Заметил, исправил, заработало Quote Link to post Share on other sites
sansara0891 Posted November 1, 2017 Report Share Posted November 1, 2017 Здравствуйте. Доработка прекрасно работает, но скажите, а как обновить список товаров в корзине. Ведь товар добавляется, в информере количество возрастает, но товар в списке корзины появляется только после перезагрузки страницы. Подскажите, пожалуйста, как решить данный вопрос. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.