Как реализовать рекомендованные товары в карточке товара автоматически из этой же категории?
Чтобы допустим не выбирать вручную, а выводить все автоматом?
Код: Выделить всё
$this->design->assign('related_products', $related_products);
}
Код: Выделить всё
else {
$products->categories = $this->categories->get_categories(array('product_id'=>$product->id));
$category = reset($products->categories);
$related_products = array();
$after = false;
$products = $this->products->get_products(array('category_id' => $category->id, 'limit' => 100, 'in_stock'=>1, 'visible'=>1));
foreach($products as $p)
{
if($after && count($related_products) < 6)
$related_products[$p->id] = $p;
elseif($p->id == $product->id)
$after = true;
}
if(count($related_products) < 6)
foreach($products as $p)
if($p->id != $product->id && count($related_products) < 6)
$related_products[$p->id] = $p;
else break;
$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), 'instock'=>true));
foreach($related_products_variants as $related_product_variant)
{
if(isset($related_products[$related_product_variant->product_id]))
{
$related_product_variant->price *= (100-$discount)/100;
$related_products[$related_product_variant->product_id]->variants[] = $related_product_variant;
}
}
foreach($related_products as $r)
{
$r->image = &$r->images[0];
$r->variant = &$r->variants[0];
}
$this->design->assign('related_products', $related_products);
}
yodaexolon писал(а):открываем файл view/ProductView.php и находим следующий код:Код: Выделить всё
$this->design->assign('related_products', $related_products);
}
И сразу после закрывающей скобки добавляем следующий код:Код: Выделить всё
else {
$products->categories = $this->categories->get_categories(array('product_id'=>$product->id));
$category = reset($products->categories);
$related_products = array();
$after = false;
$products = $this->products->get_products(array('category_id' => $category->id, 'limit' => 100, 'in_stock'=>1, 'visible'=>1));
foreach($products as $p)
{
if($after && count($related_products) < 6)
$related_products[$p->id] = $p;
elseif($p->id == $product->id)
$after = true;
}
if(count($related_products) < 6)
foreach($products as $p)
if($p->id != $product->id && count($related_products) < 6)
$related_products[$p->id] = $p;
else break;
$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), 'instock'=>true));
foreach($related_products_variants as $related_product_variant)
{
if(isset($related_products[$related_product_variant->product_id]))
{
$related_product_variant->price *= (100-$discount)/100;
$related_products[$related_product_variant->product_id]->variants[] = $related_product_variant;
}
}
foreach($related_products as $r)
{
$r->image = &$r->images[0];
$r->variant = &$r->variants[0];
}
$this->design->assign('related_products', $related_products);
}
Код работает по следующему принципу: находит товар и берет 6 следующих за ним товаров из одной категории. Если достигнут конец списка, то оставшиеся товары берутся с начала списка. Обратите внимание, что в скрипте стоит ограничение на 100 товаров в одной категории - если у вас больше, увеличьте это значение. Выбирается 6 товаров - если вам нужно больше, также смените цифру на нужную.
yodaexolon писал(а):открываем файл view/ProductView.php и находим следующий код:Код: Выделить всё
$this->design->assign('related_products', $related_products);
}
И сразу после закрывающей скобки добавляем следующий код:Код: Выделить всё
else {
$products->categories = $this->categories->get_categories(array('product_id'=>$product->id));
$category = reset($products->categories);
$related_products = array();
$after = false;
$products = $this->products->get_products(array('category_id' => $category->id, 'limit' => 100, 'in_stock'=>1, 'visible'=>1));
foreach($products as $p)
{
if($after && count($related_products) < 6)
$related_products[$p->id] = $p;
elseif($p->id == $product->id)
$after = true;
}
if(count($related_products) < 6)
foreach($products as $p)
if($p->id != $product->id && count($related_products) < 6)
$related_products[$p->id] = $p;
else break;
$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), 'instock'=>true));
foreach($related_products_variants as $related_product_variant)
{
if(isset($related_products[$related_product_variant->product_id]))
{
$related_product_variant->price *= (100-$discount)/100;
$related_products[$related_product_variant->product_id]->variants[] = $related_product_variant;
}
}
foreach($related_products as $r)
{
$r->image = &$r->images[0];
$r->variant = &$r->variants[0];
}
$this->design->assign('related_products', $related_products);
}
Код работает по следующему принципу: находит товар и берет 6 следующих за ним товаров из одной категории. Если достигнут конец списка, то оставшиеся товары берутся с начала списка. Обратите внимание, что в скрипте стоит ограничение на 100 товаров в одной категории - если у вас больше, увеличьте это значение. Выбирается 6 товаров - если вам нужно больше, также смените цифру на нужную.
Вернуться в «Вопросы по работе с OkayCMS»
Сейчас этот раздел просматривают: 30 гостей