Логотип

Документация по макросам и шаблонам UMI.CMS

catalog search()

Название

%catalog search()% — Выводит фильтр по товарам.

Параметры: catalog search(category_id, group_names [, template = 'default', type_id])

category_id

Id или путь (от корня сайта) к категории товаров, в которой осуществляется поиск.

group_names

Имена групп свойств товара (разделенные пробелом), которые участвуют в фильтре.

template

Имя шаблона, по которому формируется форма с фильтром. В XSLT-шаблонизаторе игнорируется.

type_id

Идентификатор типа данных, объекты которого будут участвовать в фильтре.

Описание

Выводит фильтр по товарам категории, указанной в параметре category_id. Если category_id не указан, берется id текущей страницы. Параметр group_names задает группы свойств, которые будут участвовать в фильтре (разделитель групп — пробел). Чтобы в фильтре участвовали только объекты определенного типа данных из указанной категории, необходимо передать значение этого типа в параметре type_id. Для того, чтобы свойство товара участвовало в фильтре, необходимо в модуле «Шаблоны данных» поставить галочки «Фильтруемое» и «Видимое» в настройках соответствующих полей.

Внимание: В режиме совместимости модулей (автоматически включается, если используется PHP7) описываемый устаревший макрос отсутствует. Для получения данных фильтров можно использовать оптимизированный макрос catalog getSmartFilters().

Дополнительные сведения

<?=$this->render($this->macros('catalog', 'search'), 'catalog/search')?>

Пример вызова

udata://catalog/search/(market/hamsters)/(cenovye_svojstva)(short_info)

XML-ответ UData

Запрос: udata://catalog/search/(market/hamsters)/(cenovye_svojstva)(short_info)

<udata category_id="44" module="catalog" method="search" generation-time="0.005478">
  <group name="cenovye_svojstva" title="Ценовые свойства">
    <field name="price" title="Цена" data-type="price"/>
    <field name="akciya" title="akciya" data-type="boolean">
  </group>
  <group name="short_info" title="Краткая информация">
    <field name="ves" title="Вес" data-type="float" />
    <field unfilter_link="?" name="vid" title="Вид" data-type="relation">
      <values>
        <item id="27178" filter_link="?fields_filter%5Bvid%5D=27178" unfilter_link="?">Ангорский</item>
        <item id="27195" filter_link="?fields_filter%5Bvid%5D=27195" unfilter_link="?">Беговой</item>
        <item id="27188" filter_link="?fields_filter%5Bvid%5D=27188" unfilter_link="?">Безродный</item>
        <item id="27216" filter_link="?fields_filter%5Bvid%5D=27216" unfilter_link="?">Голодный</item>
        <item id="27204" filter_link="?fields_filter%5Bvid%5D=27204" unfilter_link="?">Джунгарский</item>
        <item id="27199" filter_link="?fields_filter%5Bvid%5D=27199" unfilter_link="?">Упитанный</item>
      </values>
    </field>
    <field unfilter_link="?" name="pol" title="Пол" data-type="relation">
      <values>
        <item id="27179" filter_link="?fields_filter%5Bpol%5D=27179" unfilter_link="?">Самец</item>
        <item id="27205" filter_link="?fields_filter%5Bpol%5D=27205" unfilter_link="?">Самка</item>
      </values>
    </field>
  </group>
</udata>

Запрос: udata://catalog/search/(market/hamsters)/(cenovye_svojstva)(short_info)?fields_filter[price][0]=10&amp;fields_filter[akciya]=1&amp;fields_filter[pol]=27179&amp;fields_filter[vid]=27178

Параметры: цена >10, все по акции, пол — самец, вид — ангорский.

<udata category_id="44" module="catalog" method="search" generation-time="0.005853">
  <group name="cenovye_svojstva" title="Ценовые свойства">
    <field name="price" title="Цена" data-type="price">
      <value_from>10</value_from>
    </field>
    <field name="akciya" title="akciya" data-type="boolean">
      <checked> checked</checked>
    </field>
  </group>
  <group name="short_info" title="Краткая информация">
    <field name="ves" title="Вес" data-type="float"/>
    <field unfilter_link="?" name="vid" title="Вид" data-type="relation">
      <values>
        <item id="27178" filter_link="?fields_filter%5Bvid%5D=27178" unfilter_link="?" selected>Ангорский</item>
        <item id="27195" filter_link="?fields_filter%5Bvid%5D=27195" unfilter_link="?">Беговой</item>
        <item id="27188" filter_link="?fields_filter%5Bvid%5D=27188" unfilter_link="?">Безродный</item>
        <item id="27216" filter_link="?fields_filter%5Bvid%5D=27216" unfilter_link="?">Голодный</item>
        <item id="27204" filter_link="?fields_filter%5Bvid%5D=27204" unfilter_link="?">Джунгарский</item>
        <item id="27199" filter_link="?fields_filter%5Bvid%5D=27199" unfilter_link="?">Упитанный</item>
      </values>
    </field>
    <field unfilter_link="?" name="pol" title="Пол" data-type="relation">
      <values>
        <item id="27179" filter_link="?fields_filter%5Bpol%5D=27179" unfilter_link="?" selected>Самец</item>
        <item id="27205" filter_link="?fields_filter%5Bpol%5D=27205" unfilter_link="?">Самка</item>
      </values>
    </field>
  </group>
</udata>

Если необходимо фильтровать одновременно по двум значениями выбранного поля, то попробуйте запрос вида udata://catalog/search/(market/hamsters)/(cenovye_svojstva)(short_info)?fields_filter[pol][]=Самец&fields_filter[pol][]=Самка.

При таком синтаксисе все возможные значения собираются в массив.

Элементы и атрибуты

<group>

Ветвь, описывающая группу полей со списком полей — элементами field.

@name

Имя группы полей.

@title

Заголовок группы полей. Отображается, например, в административном интерфейсе при редактировании объекта.

<field>

Элемент, описывающий отдельное поле. В случае некоторых типов поля (см. примеры вызовов выше) могут появляться вложенные элементы.

@name

Имя поля.

@unfilter_link

Параметры для ссылки фильтрации без этого поля. Этот список параметров формируется следующим образом:

Предположим, что к URL страницы my_page, откуда вызывается макрос, добавлен такой набор параметров:

~/my_page?fields_filter[поле1]=знач1&fields_filter[поле2]=знач2&fields_filter[поле3]=знач3

Тогда у поля с name="поле1" атрибут unfilter_link будет равен: "?fields_filter[поле2]=знач2&fields_filter[поле3]=знач3"

У поля с name="поле2" атрибут unfilter_link будет равен: "?fields_filter[поле1]=знач1&fields_filter[поле3]=знач3"

У поля с name="поле3" атрибут unfilter_link будет равен: "?fields_filter[поле1]=знач1&fields_filter[поле2]=знач2"

@title

Заголовок поля. Отображается, например, в административном интерфейсе при редактировании объекта.

@data-type

Тип поля. Может принимать следующие значения: int, string, text, relation, file, img_file, swf_file, date, boolean, wysiwyg, password, tags, symlink, price, float, counter, optioned.

Вывод осуществляется по шаблону, указанному в параметре template (по умолчанию default.tpl).

Пример вызова

Простой вывод фильтра по разделу каталога /sample_category1/sample_category2/ : %catalog search('/sample_category1/sample_category2/', 'short_info sample_group')%.

Простой вывод фильтра по разделу каталога /sample_category1/sample_category2/ по пользовательскому шаблону: %catalog search('/sample_category1/sample_category2/', 'short_info sample_group', 'sample')%.

Используемые шаблоны

Макрос оперирует шаблонами, находящимися в каталоге /tpls/catalog/.

Используемые блоки шаблона

search_block

Общий блок для вывода фильтра.

%category_id%

Id категории каталога, в которой будет осуществляться поиск.

%lines%

Указывает место, куда будут выведены фильтры.

search_block_empty

Блок выводится, если нет ни одного поля, которое можно использовать в фильтрах.

search_block_line

Блок для вывода каждого поля любого типа.

%selector%

Указывает место, куда будет выведено поле. Поле выводится по блоку текущего шаблона, в соответствии с типом поля.

%list-class-first%

в случае, если элемент первый, выводит "first"

%list-class-last%

в случае, если элемент последний, выводит "last"

%list-class-odd%

в случае, если элемент четный, выводит "odd"

%list-class-even%

в случае, если элемент нечетный, выводит "even"

%list-position%

вставляет порядковый номер в списке

search_block_line_text

Блок для вывода текстовых и целочисленных полей фильтра.

%name%

Имя поля.

%title%

Заголовок поля.

%value%

Значение поля, которое использовалось в прошлой фильтрации.

search_block_line_relation

Блок для вывода полей фильтра, являющихся словарем.

%name%

Имя поля.

%title%

Заголовок поля.

%items%

Указывает место, куда будет выведено каждое значение словаря, для вывода каждого значения используется блок search_block_line_item_relation текущего шаблона.

search_block_line_item_relation

Блок для вывода значения словаря. Если отсутствует, то будет выведен список из имен значений.

%object_id%

Id значения.

%object_name%

Имя значения.

search_block_line_item_relation_separator

Блок для вывода разделителя значений словаря.

search_block_line_price

Блок для вывода полей фильтра, имеющих тип «цена» (price) и «число с точкой» (float).

%name%

Имя поля.

%title%

Заголовок поля.

%value_from%

Значение поля от, которое использовалось в прошлой фильтрации.

%value_to%

Значение поля до, которое использовалось в прошлой фильтрации.

search_block_line_boolean

Блок для вывода полей типа «Кнопка-флажок» (boolean).

%name%

Имя поля.

%title%

Заголовок поля.

%checked%

Выводит «checked» если при предыдущей фильтрации был выбран.