Автоматически сгенерированные связанные товары

  • Автор темы Автор темы joriks
  • Дата начала Дата начала
Скачать Автоматически сгенерированные связанные товары

joriks

Житель
Регистрация
28.09.14
Сообщения
38
Реакции
32
Проверено на Simpla 2.3.3 и 2.3.6

Логика заключается в том, что мы выбираем весь товары из категории (в скрипте есть ограничение в 100, если у Вас больше — увеличьте на предполагаемых длину). Скрипт выбирает связанный товар (6 штук), которые идут после данного товара. При достижении конца списка скрипт добирает нехватку из начала списка. Таким образом список связанных товар фиксированный до тех пока не внесут изменения в каталог.

Итак, открываем файл view/ProductView.php и в районе 144 строки находим код:
PHP:
$this->design->assign('related_products', $related_products);
}
И сразу после закрывающей скобки добавить систему генерации связанных товаров из той же категории, что и сам товар:
PHP:
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);
} // end: генерируемые связанные товары
 
1617e249c16fc0 1617e249c16fc0
Не могу понять почему выдаёт ошибку "Creating default object from empty value" - "Создание объекта умолчанию из пустого значения", ругается на эту строку
$products->categories = $this->categories->get_categories(array('product_id'=>$product->id));
.
 
Назад
Сверху Снизу