Функция вывода товаров в 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}- limit с числовым значение указывает какое количество товара долно быть в выборке
- discounted — передав данный параметр со значение 1 мы получим товары со скидкой
- featured со значение 1 вернет рекомендуемые товары
- sort может принимать 4 значения — name, created, position и price — вернет товары в той сортировке, которую указали
- in_stock со значением 1 указывает, что надо только те товары, которые есть в наличии
- brand_id с числовым индексом бренда вернет товары указанного бренда
- category_id с числовым индексом категории вернет товары указанной категории
- keyword со значение к примеру «Samsung» вернет товары где в названии или META встречается указанное слово (поиск по названию)
Найдено в интернете, но пользуюсь регулярно.
