get31 Posted January 18 Report Share Posted January 18 (edited) Добрый день. Подскажите пожалуйста, как вывести варианты с нулевым количеством в карточке товара? Сейчас варианты скрываются если в view/Product.php есть: foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v) Если заменить на: foreach($this->variants->get_variants(array('product_id'=>$product->id)) as $v) То все работает как надо, но встречается другая проблема, а именно: если все варианты по нулям, и потом заменить какой-то из вариантов на бесконечность, то карточка товара показывает, что товара нет в наличии. Edited January 18 by get31 Quote Link to post Share on other sites
alexivchenko Posted January 18 Report Share Posted January 18 (edited) — Edited January 18 by alexivchenko Quote Link to post Share on other sites
shooroop Posted January 18 Report Share Posted January 18 2 часа назад, get31 сказал: Добрый день. Подскажите пожалуйста, как вывести варианты с нулевым количеством в карточке товара? Сейчас варианты скрываются если в view/Product.php есть: foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v) Если заменить на: foreach($this->variants->get_variants(array('product_id'=>$product->id)) as $v) То все работает как надо, но встречается другая проблема, а именно: если все варианты по нулям, и потом заменить какой-то из вариантов на бесконечность, то карточка товара показывает, что товара нет в наличии. разлогиньтесь ) Quote Link to post Share on other sites
get31 Posted January 18 Author Report Share Posted January 18 35 минут назад, shooroop сказал: разлогиньтесь ) юмор так себе... но а если серьезно, то когда выводит что товара нет в наличии, если дважды нажать в админке сохранить товар, то выводит нормально, но зачем нажимать дважды?)) Quote Link to post Share on other sites
shooroop Posted January 18 Report Share Posted January 18 2 часа назад, get31 сказал: юмор так себе... но а если серьезно, то когда выводит что товара нет в наличии, если дважды нажать в админке сохранить товар, то выводит нормально, но зачем нажимать дважды?)) на чистой симпле такого не наблюдаю Quote Link to post Share on other sites
phukortsin Posted January 19 Report Share Posted January 19 12 часов назад, get31 сказал: встречается другая проблема, а именно: если все варианты по нулям, и потом заменить какой-то из вариантов на бесконечность, то карточка товара показывает, что товара нет в наличии. В стандартном шаблоне отдельного товара нигде не используется количество. Поэтому вопрос индивидуальный. Если хотите получить содержательный ответ, но надо выкладывать все свои изменения. Скорее всего, количество у Вас берет из ПЕРВОГО попавшегося варианта, поэтому и результат такой. Quote Link to post Share on other sites
get31 Posted January 19 Author Report Share Posted January 19 1 час назад, phukortsin сказал: В стандартном шаблоне отдельного товара нигде не используется количество. Поэтому вопрос индивидуальный. Если хотите получить содержательный ответ, но надо выкладывать все свои изменения. Скорее всего, количество у Вас берет из ПЕРВОГО попавшегося варианта, поэтому и результат такой. Проверил на стандартной, да действительно. Изменений много, что уже запутался))) Но в стандартной вообще не выводятся варианты c 0 даже если убрать 'in_stock'=>true, а значит у меня тоже не отображается. в ProductView.php у меня: $product_url = $this->request->get('product_url', 'string'); if(empty($product_url)) return false; // Выбираем товар из базы $product = $this->products->get_product((string)$product_url); if(empty($product) || (!$product->visible && empty($_SESSION['admin']))) return false; $product->images = $this->products->get_images(array('product_id'=>$product->id)); $product->image = reset($product->images); $product->colors = array(); $variants = array(); foreach($this->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v) { $variants[$v->id] = $v; if($v->name){ if(!in_array($v->name, $product->colors)) $product->colors[] = $v->name; } } $product->variants = $variants; // Вариант по умолчанию if(($v_id = $this->request->get('variant', 'integer'))>0 && isset($variants[$v_id])) $product->variant = $variants[$v_id]; else $product->variant = reset($variants); $product->features = $this->features->get_product_options(array('product_id'=>$product->id)); $product->features = $this->featuresgroupe->get_product_gfoptions(array('product_id'=>$product->id)); $temp_options = array(); foreach($product->features as $option) { $temp_options[$option->feature_id]->feature_id = $option->feature_id; $temp_options[$option->feature_id]->name = $option->name; $temp_options[$option->feature_id]->values[] = $option->value; } foreach($temp_options as $id => $option) $temp_options[$id]->value = implode(', ', $temp_options[$id]->values); $product->features = $temp_options; Quote Link to post Share on other sites
phukortsin Posted January 19 Report Share Posted January 19 3 часа назад, get31 сказал: Но в стандартной вообще не выводятся варианты c 0 даже если убрать 'in_stock'=>true, а значит у меня тоже не отображается. Совершенно неверное утверждение. Если Вы делали изменения, тем более много изменений, в которых уже сами с трудом ориентируетесь, то отображение в стандартной Simpla, вообще говоря, с отображением у Вас никак не связано... Quote Link to post Share on other sites
get31 Posted January 19 Author Report Share Posted January 19 1 час назад, phukortsin сказал: Совершенно неверное утверждение. Если Вы делали изменения, тем более много изменений, в которых уже сами с трудом ориентируетесь, то отображение в стандартной Simpla, вообще говоря, с отображением у Вас никак не связано... Проверил на стандартной симпле, вроде разобрался. Сейчас пробую на своем, может уже путаюсь потому как долго сижу))) 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.