Функция вывода товаров в Simpla CMS

Создадим вызов функции в /view/View.php

$this->design->smarty->registerPlugin("function", "get_products", array($this, 'get_products_plugin'));

Далее там же добавим саму функцию, например, после get_discounted_products:

public function get_products_plugin($params, &$smarty)
{
    if(!isset($params['visible']))
        $params['visible'] = 1;
    if(!empty($params['var']))
    {
        foreach($this->products->get_products($params) as $p)
            $products[$p->id] = $p;
 
        if(!empty($products))
        {
            // id выбраных товаров
            $products_ids = array_keys($products);
     
            // Выбираем варианты товаров
            $variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));
             
            // Для каждого варианта
            foreach($variants as &$variant)
            {
                // добавляем вариант в соответствующий товар
                $products[$variant->product_id]->variants[] = $variant;
            }
             
            // Выбираем изображения товаров
            $images = $this->products->get_images(array('product_id'=>$products_ids));
            foreach($images as $image)
                $products[$image->product_id]->images[] = $image;
 
            foreach($products as &$product)
            {
                if(isset($product->variants[0]))
                    $product->variant = $product->variants[0];
                if(isset($product->images[0]))
                    $product->image = $product->images[0];
            }               
        }
 
        $smarty->assign($params['var'], $products);
         
    }
}

Пример использования:

{get_products var=all_products limit=3}
{if $all_products}
{foreach $all_products as $p}
//выводим товар в цикле
{/foreach}
{/if}
  1. limit с числовым значение указывает какое количество товара долно быть в выборке
  2. discounted — передав данный параметр со значение 1 мы получим товары со скидкой
  3. featured со значение 1 вернет рекомендуемые товары
  4. sort может принимать 4 значения — name, created, position и price — вернет товары в той сортировке, которую указали
  5. in_stock со значением 1 указывает, что надо только те товары, которые есть в наличии
  6. brand_id с числовым индексом бренда вернет товары указанного бренда
  7. category_id с числовым индексом категории вернет товары указанной категории
  8. keyword со значение к примеру «Samsung» вернет товары где в названии или META встречается указанное слово (поиск по названию)

Найдено в интернете, но пользуюсь регулярно.

Поделиться
Отправить
2018   simplacms
Популярное