Содержание

Модуль "Магазин": данные доступные в шаблонах

Главная страница ([раздел]_main.tpl)

Этот тип шаблона является главным для раздела, он содержит данные о первых двух уровнях категорий.

$categories

Массив записей с данными о категориях первых двух уровней. Каждая запись представляет собой массив с ключами:

name

Название категории.

link

Ссылка на страницу категории.

description

Описание категории.

idimg

Числовой идентификатор прикрепленного изображения.

citems

Количество материалов в категории.

level

Уровень в дереве категорий, 0 - находится в корне.

urlname

Строковой идентификатор URL категории.

subcategories

Массив записей с данными о подкатегориях. Записи аналогичны записям в $categories.

$levels

Количество уровней в дереве категорий.

Пример шаблона

<h1>{$section_name}</h1>
 
{if $categories}
    <ul>
        {section name=i loop=$categories}
            <li><a href="{$categories[i].link}">{$categories[i].name} - ({$categories[i].citems})</a></li>
        {/section}
    </ul>
{/if}

Cтраница категории ([раздел]_category.tpl)

Этот тип шаблона содержит данные о выбранной категории, о следующих двух уровнях категорий, а так же список товаров каталога, которые принадлежат выбранной категории.

$category

Массив с данными о текущей категории, состоит из ключей:

name

Название категории.

description

Описание категории.

idimg

Числовой идентификатор прикрепленного изображения.

citems

Количество материалов в категории.

level

Уровень в дереве категорий, 0 - находится в корне.

urlname

Строковой идентификатор категории.

$categories

Массив записей с данными о категориях двух уровней начиная с текущего. Формат данных аналогичен описанному выше.

$items

Массив записей с данными о товарах каталога. Каждая запись представляет собой массив с ключами:

name

Название товара.

content

Главный текст-описание, форматированный, если включена опция визуального редактора.

description

Краткая аннотация. Если включена опция автогенерации аннотации, то состоит из первых 350 символов основного текста без форматирования.

link

Ссылка на детальную страницу.

tobasketlink

Ссылка для добавления товара в корзину.

tocomparelink

Ссылка для добавления товара в таблицу сравнения.

price

Цена товара.

oldprice

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

art

Артикул товара.

category

Полное название категории, которой принадлежит товар.

date

Дата создания в формате UTC.

urlname

Строковой идентификатор URL.

iscount

Количество на складе.

favorite

Признак спецпредложения, принимает значения Y/N.

new

Признак новинки, принимает значения Y/N.

vote

Текущая оценка товара.

cvote

Количество голосов.

comments

Количество комментариев.

available

Логическое значение, истина, если количество на складе указано больше нуля.

images

Массив записей с данными о прикрепленных изображениях, может использоваться в качестве параметра функции image. Каждая запись представляет собой массив с ключами:

  • id - числовой идентификатор.
  • path - путь к файлу изображения на сервере.
  • caption - описание.
  • width - ширина изображения.
  • height - высота изображения.

idimg

Числовой идентификатор первого прикрепленного изображения.

files

Массив записей с данными о прикрепленных файлах, может использоваться в качестве параметра функции download. Каждая запись представляет собой массив с ключами:

  • id - числовой идентификатор.
  • path - путь к файлу на сервере.
  • link - ссылка для скачивания.
  • caption - описание.
  • size - размер в виде строки.
  • dwnl - количество скачиваний.
  • mime - mime тип файла.

idfile

Числовой идентификатор первого прикрепленного файла.

tags

Если включено использование тегов, то содержит массив записей с данными о тегах. Каждая запись представляет собой массив с ключами:

  • name - название тега.
  • link - ссылка на результаты поиска по тегу.

дополнительное поле

Значение дополнительного поля (свойства товара).

fields

Массив записей с данными о дополнительных полях. Каждая запись представляет собой массив с ключами:

  • field - Строковой идентификатор поля.
  • name - Описание поля.
  • value - Значение.

$items_pager

Пример шаблона

<h1>{$category.name}</h1>
 
{if $categories}
    <ul>
        {section name=i loop=$categories}
            <li><a href="{$categories[i].link}">{$categories[i].name} - ({$categories[i].citems})</a></li>
        {/section}
    </ul>
{/if}
 
{if $items}
    {section name=i loop=$items}
        {image id=$items[i].idimg width=80 height=80 align="left"}
        <h3><a href="{$items[i].link}">{$items[i].name}</a></h3>
        <p>{$items[i].description}</p>
        <p>Цена: {$items[i].price} {$valute} , <a href="{$items[i].tobasketlink}">В корзину</a></p>
        <div class="clear"></div>
    {/section}
    {object obj=$items_pager}
{/if}

Детальная страница ([раздел]_page.tpl)

Этот тип шаблона содержит все данные выбранноuj товара.

$category

Массив с данными о текущей категории. Формат данных аналогичен описанному выше.

$item

Массив с данными о текущей записи каталога. Формат данных аналогичен формату записей в массиве описанном выше.

$ties

Массив записей с данными о сопутствующих товарах. Каждая запись представляет собой массив аналогичный по формату описанном выше.

$isvote

Логическое значение. Если включено оценивание, то принимает значение истина, если пользователь уже оценил материал.

$comments

Массив записей всех комментариев к товару. Каждая запись представляет собой массив с ключами:

  • date - дата и время размещения комментария в формате UTC.
  • name - имя автора комментария.
  • bbcode - текст комментария в формате BBCode.
  • message - текст комментария в формате HTML.

$form

Массив данных для начальных значений формы комментирования. В случае неверного ввода каптчи является копией $_REQUEST, поэтому важно защищать значения с помощью escape. Если на сайте используется раздел на базе модуля "Пользователи", то значение массива с ключом name будет замещаться на имя пользователя, в случае если он авторизирован на сайте.

  • name - имя автора комментария.
  • message - текст комментария.

$captcha

Содержит значение, которое может быть использовано в скрытом поле captcha, если форму отправки необходимо сделать без ввода контрольных цифр на рисунке.

Пример шаблона

<h1>{$item.name}</h1>
 
{$item.content}
 
<p>Цена: {$item.price} {$valute}</p>
<p>{if $item.available}В наличии{else}Нет на складе{/if}</p>
<p><a href="{$item.tobasketlink}">В корзину</a></p>
 
<h3>Фото</h3>
{section name=i loop=$item.images}
    {image data=$item.images[i] width=200 popup=true}
{/section}
 
{if $options.usefiles} {* Если включены файлы. *}
    <p>{download data=$item.files size=true}</p>
{/if}
 
{if $options.usevote} {* Если включено оценивание. *}
    <form method="post">
        Оценка: {$item.vote}, Голосов: {$item.cvote},
        {if !$isvote} {* Если еще не оценивал. *}
            <select name="vote">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3" selected>3</option>
                <option value="4">4</option>
                <option value="5">5</option>
            </select>
            {submit caption="Оценить"}
            {hidden name="action" value="addvote"}
        {else}
            Вы проголосовали.
        {/if}
    </form>
{/if}
 
{if $options.usecomments} {* Если включено комментирование. *}
 
    {if $comments} {* Вывод комментариев. *}
        <h4>Комментарии:</h4>
    {/if}
    {section name=i loop=$comments}
        <p><b>{$comments[i].date|date_format:"%d.%m.%Y %T"} {$comments[i].name}:</b></p>
        <p>{$comments[i].message}</p>
    {/section}
 
    {if $errors.captcha}
        <p><font color="red">Неверно введены контрольные цифры, попробуйте еще раз.</font></p>
    {/if}
 
    {literal} {* Скрипт валидации формы комментирования. *}
    <script type="text/javascript">
    function valid_form(form)
    { if(form.name.value.replace(/\s+/,'').length==0)
      { alert("Пожалуйста, заполните имя."); return false; }
      if(form.message.value.replace(/\s+/,'').length<5)
      { alert("Пожалуйста, заполните сообщение."); return false; }
      return true;
    }
    </script>
    {/literal}
 
    <h4>Оставить комментарий:</h4> {* Форма комментирования. *}
    <form method="post" onsubmit="return valid_form(this)">
        <p>Ваше имя:</p>
        <p>{editbox name="name" width="40%" text=$form.name}</p>
        <p>{textarea name="message" rows=5 text=$form.message}</p>
        <p>Введите цифры на картинке:</p>
        <p>{editbox name="captcha" width="50"}</p>
        <p>{captcha}</p>
        <p>{submit caption="Добавить"}</p>
        {hidden name="action" value="addcomment"}
    </form>
 
{/if}

Страница результатов выборки ([раздел]_result.tpl)

Этот тип шаблона содержит данные о найденных товарах в результате использования фильтров.

$category

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

link

Ссылка на страницу категории.

$items

Массив записей с данными о найденных товарах. Формат данных аналогичен формату записей в массиве описанном выше.

$items_pager

$filters

Массив записей, которые содержат описания примененных фильтров. Каждая запись представляет собой массив с ключами:

field

Поле к которому применяется фильтр.

caption

Описание поля.

value

Значение применяемое в фильтре.

link

Ссылка на результаты поиска только по этому фильтру.

Пример шаблона

<h1>Результаты поиска</h1>
 
{if $items}
    {section name=i loop=$items}
        {image data=$items[i].images width=80 height=80 align="left"}
        <h4><a href="{$items[i].link}">{$items[i].name}</a></h4>
        <p>{$items[i].description}</p>
        <p>Цена: {$items[i].price} {$valute} , <a href="{$items[i].tobasketlink}">В корзину</a></p>
        <div class="clear"></div>
    {/section}
    {object obj=$items_pager}
{/if}

Страница корзины ([раздел]_basket.tpl)

Этот тип шаблона содержит данные о состоянии корзины пользователя.

$basket

Массив записей с данными о содержимом корзины. Каждая запись представляет собой массиво с ключами:

id

Числовой идентификатор позиции в корзине.

data

Массив с данными о товаре. Формат данных аналогичен описанному выше.

sum

Сумма позиции корзины (Цена товара умноженная на указанное количество).

oldsum

«Старая» сумма позиции корзины («Старая» цена товара умноженная на указанное количество).

deletelink

Ссылка на удаление позиции из корзины.

$all

Массив с итоговыми данными по корзине. Состоит из ключей:

count

Общее количество товаров в корзине.

sum

Общая сумма по товарам в корзине.

oldsum

Общая «старая» сумма по товарам в корзине.

Пример шаблона

<h1>Корзина</h1>
 
<form method="post">
    <table width="100%" border="1">
        <tr>
            <td>Наименование товара</td>
            <td>Кол-во</td>
            <td>Цена</td>
            <td>Удалить</td>
        </tr>
        {section name=i loop=$basket}
        <tr>
            <td><a href="{$basket[i].data.link}">{$basket[i].data.name}{if $basket[i].data.mprice} ({$basket[i].data.mprice}){/if}</a></td>
            <td><input type="text" name="count_{$basket[i].id}" value="{$basket[i].count}"></td>
            <td>{$basket[i].sum} {$valute}</td>
            <td><a href="{$basket[i].deletelink}">Удалить</a></td>
        </tr>
        {/section}
    </table>
 
    <p>Товаров в корзине: {$all.count}, на общую сумму: {$all.sum} {$valute}.</p>
 
    <p align="right">
        {submit caption="Пересчитать"}
        {hidden name="action" value="recalcbasket"}
    </p>
</form>
 
<p><a href="{$orderlink}">Оформить заказ</a></p>

Страница заказа ([раздел]_order.tpl)

Этот тип шаблона содержит данные страницы с формой заказа. Набор полей у формы может быть любой, достаточно потом просто составить такой же набор полей в шаблоне письма-уведомления о заказе.

$basket

Массив записей с данными о содержимом корзины. Формат данных аналогичен описанному выше, за исключением ссылки удаления.

$all

Массив с итоговыми данными по корзине. Формат данных аналогичен описанному выше.

$form

Массив данных для начальных значений формы заказа. По сути является копией массива $_POST, поэтому при выводе важно защищать значения с помощью escape. Если на сайте используется раздел на базе модуля "Пользователи", то значениями массива будут данные пользователя, в случае если он авторизирован на сайте.

Страница сообщения ([раздел]_message.tpl)

Этот тип шаблона предусмотрен для вывода специального сообщения после успешной отправки формы заказа. Он не содержит специальных данных, текст сообщения об успешной отправке вставляется непосредственно в шаблон.

Пример шаблона

<h1>{$section_name}</h1>
 
<p>Ваш заказ отправлен.</p>

Страница полного списка товаров ([раздел]_price.tpl)

Этот тип страницы используется для вывода всех товаров сразу в одном прайс-листе.

$categories

Массив записей с данными о всех категориях (включая подкатегории). Каждая запись состоит из ключей:

name

Полное название категории.

items

Массив записей с данными о товарах в категории. Формат каждой записи аналогичен описанному выше, за исключением данных об изображениях и файлах.

Пример шаблона

<h1>Прайс</h1>
 
{section name=i loop=$categories}
    {if $categories[i].items}
        <h3>{$categories[i].name}</h3>
        <table width="100%" border="1">
            <tr>
                <th>Название</th>
                <th>Цена</th>
                <th>В наличии</th>
                <th>&nbsp;</th>
            </tr>
            {section name=j loop=$categories[i].items}
            <tr>
                <td>{$categories[i].items[j].name}</td>
                <td>{$categories[i].items[j].price}</td>
                <td>{if $categories[i].items[j].available}Да{else}Нет{/if}</td>
                <td><a href="{$categories[i].items[j].tobasketlink}">В корзину</a></td>
            </tr>
        {/section}
        </table>
    {/if}
{/section}

Страница сравнения ([раздел]_compare.tpl)

Этот тип шаблона содержит данные о товарах, добавленных для сравнения. Формат данных позволяет осуществить столбчатый вывод всех характеристик товаров.

$items

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

deletelink

Ссылка для удаления товара из таблицы сравнения.

$fields

Массив с данными о всех дополнительных полях (характеристиках). Ключами являются названия полей, а значениями - их описания.

Пример шаблона

<h1>Сравнение</h1>
 
<table>
    <tr>
        <th>Название</th>
        {section name=i loop=$items}
            <td><a href="{$items[i].link}">{$items[i].name}</a></td>
        {/section}
    </tr>
    <tr>
        <th>Фото</th>
        {section name=i loop=$items}
            <td align="center">
                <a href="{$items[i].link}">{image data=$items[i].images height=160 width="160" popup=true}</a><br>
                <a href="{$items[i].tobasketlink}">В корзину</a><br>
                <a href="{$items[i].deletelink}">Удалить</a>
            </td>
        {/section}
    </tr>
    <tr>
        <th>Цена</th>
        {section name=i loop=$items}
            <td>{$items[i].price} {$valute}</td>
        {/section}
    </tr>
    {foreach from=$fields key=field item=caption}
        <tr>
            <th>{$caption}</th>
            {section name=i loop=$items}
                <td>{$items[i].$field}</td>
            {/section}
        </tr>
    {/foreach}
</table>

Страница своих заказов ([раздел]_myorders.tpl)

Этот тип шаблона может использоваться только если на сайте используется модуль "Пользователи". На этой странице авторизированный пользователь может смотреть архив своих заказов и отслеживать их статусы.

$orders

Массив записей с данными о заказах пользователя. Каждая запись представляет собой массив с ключами:

id

Числовой идентификатор заказа.

date

Дата и время заказа в формате UTC.

content

Содержание заказа в текстовом виде (формируется по шаблону письма уведомления о новом заказе).

basket

Массив записей с данными о содержимом корзины. Формат данных аналогичен описанному выше.

count

Общее количество товаров в заказе.

sum

Общая сумма заказа.

status

Статус заказа.

  • 0 - Не обработан.
  • 1 - Оплачен.
  • 2 - Обработан.

$orders_pager

Пример шаблона

<h1>Мои заказы</h1>
 
{if $orders}
    <table border="1">
        <tr>
            <th></th>
            <th>Состав</th>
            <th>Сумма</th>
            <th>Статус</th>
        </tr>
        {section name=i loop=$orders}
        <tr>
            <td>{$orders[i].id}</td>
            <td>
                {section name=j loop=$orders[i].basket}
                    {$orders[i].basket[j].data.name} - {$orders[i].basket[j].count} шт.<br>
                {/section}
            </td>
            <td>{$orders[i].sum} {$valute}</td>
            <td>{if $orders[i].status>1}Обработан{else}Ожидает{/if}</td>
        </tr>
        {/section}
    </table>
    {object obj=$orders_pager}
{else}
    <p>Нет данных.</p>
{/if}
 
modules/shoplite/templates.txt · Последние изменения: 14.02.2018 10:09 (внешнее изменение)