Код: Выделить всё
$this->design->smarty->registerPlugin("function", "get_products", array($this, 'get_products_plugin'));
Код: Выделить всё
$this->design->smarty->registerPlugin("function", "get_banner", array($this, 'get_banner_plugin'));
Код: Выделить всё
public function get_products_plugin($params, &$smarty) {
if(!isset($params['visible'])) {
$params['visible'] = 1;
}
$params['in_stock'] = 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));
// Для каждого варианта
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);
}
}
Код: Выделить всё
$this->design->smarty->registerPlugin("function", "get_products", array($this, 'get_products_plugin'));
Код: Выделить всё
// Настраиваем плагины для смарти
$this->design->smarty->registerPlugin('modifier', 'printa', array($this, 'printa'));
$this->design->smarty->registerPlugin("function", "get_posts", array($this, 'get_posts_plugin'));
$this->design->smarty->registerPlugin("function", "get_brands", array($this, 'get_brands_plugin'));
$this->design->smarty->registerPlugin("function", "get_browsed_products", array($this, 'get_browsed_products'));
$this->design->smarty->registerPlugin("function", "get_featured_products", array($this, 'get_featured_products_plugin'));
$this->design->smarty->registerPlugin("function", "get_new_products", array($this, 'get_new_products_plugin'));
$this->design->smarty->registerPlugin("function", "get_discounted_products", array($this, 'get_discounted_products_plugin'));
$this->design->smarty->registerPlugin("function", "get_categories", array($this, 'get_categories_plugin'));
$this->design->smarty->registerPlugin("function", "get_banner", array($this, 'get_banner_plugin'));
$this->design->smarty->registerPlugin("function", "get_products", array($this, 'get_products_plugin'));
}
}
Код: Выделить всё
public function get_browsed_products($params, &$smarty) {
if(!empty($_COOKIE['browsed_products'])) {
$browsed_products_ids = explode(',', $_COOKIE['browsed_products']);
$browsed_products_ids = array_reverse($browsed_products_ids);
if(isset($params['limit'])) {
$browsed_products_ids = array_slice($browsed_products_ids, 0, $params['limit']);
}
$products = array();
foreach($this->products->get_products(array('id'=>$browsed_products_ids, 'visible'=>1)) as $p) {
$products[$p->id] = $p;
}
$browsed_products_images = $this->products->get_images(array('product_id'=>$browsed_products_ids));
foreach($browsed_products_images as $browsed_product_image) {
if(isset($products[$browsed_product_image->product_id])) {
$products[$browsed_product_image->product_id]->images[] = $browsed_product_image;
}
}
foreach($browsed_products_ids as $id) {
if(isset($products[$id])) {
if(isset($products[$id]->images[0])) {
$products[$id]->image = $products[$id]->images[0];
}
$result[] = $products[$id];
}
}
$smarty->assign($params['var'], $result);
}
}
Код: Выделить всё
public function get_products_plugin($params, &$smarty) {
if(!isset($params['visible'])) {
$params['visible'] = 1;
}
$params['in_stock'] = 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));
// Для каждого варианта
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=100}
{if $all_products}
<div class="border-b-1-info p-y-1">
<div class="container">
{* Заголовок блока *}
<div class="h1 m-b-1">
<span data-language="{$translate_id['main_all_products']}">{$lang->main_all_products}</span>
</div>
<div class="row">
{foreach $all_products as $product}
<div class="col-md-4 col-xl-3">
{include "tiny_products.tpl"}
</div>
{if $product@iteration % 3 == 0}<div class="col-xs-12 hidden-sm-down hidden-xl-up"></div>{/if}
{/foreach}
</div>
</div>
</div>
{/if}
Вернуться в «Вопросы по работе с OkayCMS»
Сейчас этот раздел просматривают: 105 гостей