Список товаров - list_products

Вывод записей типа "товар"

Пример вызова компонента

{list_products id=$id limit="70" assign="products"}

id - идентификатор страницы, публикации которой нужно вывести
alias - мнемонический код страницы, публикации которой нужно вывести
spec - можно указать тип товаров (connected, visited, wishlist, compare, basket, search, spec и new), по умолчанию выводятся все
limit - количество записей. По умолчанию равно количеству записей на странице.
orderby - направление сортировки
ids - идентификаторы товаров через запятую
qtys - количество товаров через запятую для товаров из параметра ids (в том же порядке)
list_files_on - ставим 1, если требуется вывести массив загруженных файлов для каждого товара
list_photos_on - ставим 1, если требуется вывести массив всех загруженных фото для каждого товара
assign - название переменной, куда записать результат

Обратите внимание, для сбора данных о товарах страницы достаточно указать id или alias страницы, не обязательно указывать оба параметра.

Получаемые данные

В результате вызова компонента получим переменную $products с массивом, содержащую следующие поля:

spec - all (все) или заданный вариант
all - количество записей
pages - постраничная навигация (html-код генерирующий ссылки на страницы, если записей больше, чем задано в поле limit)
options - массив характеристик товаров
list - массив с товарами
price_min - минимальная цена для полученного списка товаров
price_max - максимальная цена для полученного списка товаров
ids - список товаров через запятую

Массив товаров $products.list

accept_orders => 1 - доступен для заказов
active => 1 - показывается (обычно выводятся только активные товары)
alias => мнемонический код (участвует в построении URL)
barcode => Код товара (или модель)
bid_ya => Ставка для файла YML
categ_alias => мнемонический код страницы
categ_id => идентификатор страницы
categ_title => заголовок страницы
categ2_alias => мнемонический код верхней страницы
categ2_id => идентификатор верхней страницы
categ2_title => заголовок верхней страницы
categ3_alias => мнемонический код самой верхней страницы
categ3_id => идентификатор самой верхней страницы
categ3_title => заголовок самой верхней страницы
comment => 
comments_qty => количество комментариев
content => полное описание
currency => валюта (rur, euro, usd)
date => отформатированная дата добавления товара
date_insert => дата добавления
date_update => дата изменения
f_new => 1 или 0, метка для нового товара
f_spec => 1 или 0, метка для специального предложения
files_qty => количество файлов для товара
fotos_qty => количество фото для товара
id => идентификатор товара
id_categ => идентификатор страницы
id_gift => идентификатор товара для подарка
id_next_model => идентификатор новой версии товара
id_required => идентификатор товара, который должен быть заказан вместе с этим
id_site => идентификатор сайта
intro => краткое описание
link => ссылка на товар
link_basket => ссылка на добавление товара в корзину
link_idn => ссылка на товар для кириллического домена
monthviews => количество показов товара за последний месяц
pic => массив из фото по умолчанию в 4-х размерах
price => цена
price_formatted => отформатированная цена
price_old => старая цена
price_old_formatted => отформатированная старая цена
price_period => тип цены (razovo - по умолчанию, day - в день, week - в неделю, year - в год, from - от)
products_qty => количество связанных товаров
pubs_qty => количество связанных публикаций
qty => количество товара для покупки (по умолчанию 1)
time => отформатированное время
title => Заголовок
title_short => Адрес для карты (может использоваться, как дополнительный заголовок)
total_qty => количество товара в продаже
user_id => идентификатор пользователя, добавившего товар
views => количчество просмотров
weight_deliver => вес товара для доставки
options => массив характеристик товаров (описан ниже)

Массив с фото $products.list.ID.pic

Выводится массив из 4-х размеров главного фото публикации (если загружено несколько, выводится первое)

[1] => Array
(
id => идентификатор фото
ext => расширение (jpg, gif и т.д.)
width => ширина фото
height => высота фото
title => название фото
url => полная ссылка на фото
)
 
[2] => Array
(
данные о фото в размере 2
)
 
[3] => Array
(
данные о фото в размере 3
)
 
[4] => Array
(
данные о фото в размере 4
)

Массив всех прикрепленных фото $products.list.ID.list_photos

Array
(
 [1] => Array
 (
   [1] => Array
   (
     url => ссылка на фото
     title => заголовок
     width => ширина
     height => высота
     id_in_record => число по порядку
     id => идентификатор фото
     ext => расширение
     ext_h1 => доп.заголовок
     ext_desc => доп.описание
     ext_link => доп.примечание
   )
   [2] => Array(
    размер 2 и т.д.
   )
 )
 [2] => фото 2 и т.д.
)

Характеристики товара $products.list.ID.options

Array
(
 мнемонический код (alias) или ID => Array
 (
   id_product => идентификатор товара 
   title => название
   value => значение
   after => текст после значения
   icon => иконка
   type => тип (val, int, select, connected, checkbox, multicheckbox, date, datetime, categ, products)
   group => идектификатор группы характеристик
   alias => мнемонический код
   opt_title => Название группы характеристик (если заголовок надо скрыть)
   to_show => кому показывать (all, info - для контент-менеджеров, manager - для менеджеров, user - для пользователей, hidden - скрытое)
   opt_value1 => Название характеристики 1
   opt_value2 => Название характеристики 2
   opt_value3 => Название характеристики 3
   value2 => Значение для характеристики 2
   value3 => Значение для характеристики 3
   group_title => Заголовок группы характеристик
 )
)
и так далее все характеристики

Загруженные файлы $pubs.list.ID.list_files

Array
(
 [ID] => Array
 (
   id => идентификатор
   url => ссылка на файл
   direct_url => ссылка на файл
   content => описание
   file => путь к файлу
   title => название
   ext => расширение
   size => размер файла
   id_in_record => номер по порядку
   allow_download => разрешено скачивание
   direct_link => разрешена прямая ссылка
   date => отформатированная дата файла
 )
)

Пример

Например, нам надо вывести список новых товаров (отмеченных в панели администратора, как Новинка). Рассмотрим, как это сделать по шагам:

1. Создадим файл new.html в шаблоне сайта.
2. Назначим этот шаблон для страницы Новинки.
3. Теперь самое главное - открываем шаблон new.html и вызываем компонент со списком новых товаров на странице Новинки.

{list_products spec="new" assign="products"}

Далее выведем данные и настроим их внешний вид:

{foreach from=$products.list value="v"}
 <p><img src="{$v.pic.1.url}" align="left"><a href="{$v.link}">{$v.title}</a><br>{$v.intro}</p>
{/foreach}

Всё, шаблон готов.

Типы списков

С помощью параметра spec можно задать такие виды списов:

connected - связанные товары (если where = product) или публикации (если where = pub).
visited - вывод просмотренных товаров.
wishlist - список отложенных товаров. 
compare - список товаров для сравнения (в параметр ids передаются через запятую идентификаторы товаров).
basket - список товаров в корзине
new - новые товары
spec - специальные предложения
search - поиск по фразе. Фраза передается в GET параметре q.

Сортировка

Обычно сортировка задается в административной панели для каждой страницы (размела, категории). Однако можно задать и принудительную сортировку. Для этого в компоненте используется параметр sortby. 

Варианты сортировки:
price - по цене
price_desc - по цене в обратном порядке
bid_ya - по ставке YML
bid_ya_desc - по ставке YML в обратном порядке
title - по заголовку
title_desc - по заголовку в обратном порядке