Тема: Вывод брендов принадлежащих категориям и подкатегориям в них

Была необходимость вывести категории и рядом с ними бренды. Для каждой категории бренды свои, в зависимости от выбранных брендов в товарах этой категории и подкатегорий в ней. Александр любезно помог разобраться, в следствии чего был написан небольшой модуль.

Заходим в 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 категории.

Повысить оценку +2 Понизить оценку

Re: Вывод брендов принадлежащих категориям и подкатегориям в них

Супер! Спасибо!

Re: Вывод брендов принадлежащих категориям и подкатегориям в них

а как сделать что бы бренды были кликабельные? (ссылки на бренд)

4

Re: Вывод брендов принадлежащих категориям и подкатегориям в них

<a href="{$brand->getUrl()}">{$brand.title}</a>

Повысить оценку Понизить оценку