Тема: Вывод брендов принадлежащих категориям и подкатегориям в них
Была необходимость вывести категории и рядом с ними бренды. Для каждой категории бренды свои, в зависимости от выбранных брендов в товарах этой категории и подкатегорий в ней. Александр любезно помог разобраться, в следствии чего был написан небольшой модуль.
Заходим в modules и создаем папку brandlist, в ней папки config и model.
В папке config создаем файл file.inc.php с пустым классом:
<?php
namespace brandlist\Config;
class File extends \RS\Orm\ConfigObject
{
}
В той же папке создаем файл handlers.inc.php:
<?php
namespace brandlist\Config;
use \RS\Orm\Type as OrmType;
class Handlers extends \RS\Event\HandlerAbstract
{
function init()
{
}
}
И файл конфигурации module.xml (данные можете сменить на ваше усмотрение):
<?xml version="1.0" encoding="utf-8"?>
<config>
<defaultValues>
<name multilanguage="true">API для брендов</name>
<description multilanguage="true">Выводит список брендов по категории</description>
<version>1.0.0.0</version>
<author>qrinef</author>
</defaultValues>
</config>
В папке modules создаем файл api.inc.php:
<?php
namespace brandlist\Model;
class Api
{
/**
* Получает список брендов по id категорий
*
* @param integer $category_id - id категорий
*/
public static function brandlist($category_id) {
$dir_api = new \Catalog\Model\DirApi();
$dirs = $dir_api->getChildsId($category_id);
$brands = \RS\Orm\Request::make()
->select("B.*")
->from(new \Catalog\Model\Orm\Brand(), 'B')
->join(new \Catalog\Model\Orm\Product(), 'B.id=P.brand_id', 'P')
->join(new \Catalog\Model\Orm\XDir(), 'P.id=X.product_id', 'X')
->where(array(
'P.site_id' => \RS\Site\Manager::getSiteId()
))
->whereIn('X.dir_id', $dirs)
->objects('\Catalog\Model\Orm\Brand');
return $brands;
}
}
Использовать примерно так:
{static_call var=brands callback=['\brandlist\Model\Api', 'brandlist'] params=[{$dir.fields.id}]}
{if !empty($brands)}
{foreach $brands as $brand}
{$brand.title}
{/foreach}
{/if}
Переменную $dir.fields.id изменить в зависимости из шаблона, в ней должен передаваться id категории.