1
Документация по использованию ShopEngine 2
1. Инсталляция на сервере
Перед загрузкой файлов системы на сервер, убедитесь, что программное обеспечение сервера
удовлетворяет требованиям необходимым для работы ShopEngine 2 (далее по тексту SE2).
2
Документация по использованию ShopEngine 2
Если вы видите, что все статусы выставлены в ok, то можете переходить к следующему
пункту. Если вы видите какие либо ошибке, то постарайтесь их устранить. Если ошибки
связаны с правами, то поменяйте права на те каталоги, которые отмечены в данной
странице, выставите права 777.
2. После правильной загрузки файлов на сервер, наберите в браузере следующий адрес:
http://ваш_домен/index.php?xmlupdate. Для создания вашего каталога. Если возникают
какие либо ошибки, возможно вам необходимо поменять права на каталог data.
3. Наберите в строке браузера следующий адрес:
http://ваш_домен/index.php?install
Вы должны увидеть следующую надпись:
Installation complete.
3
Документация по использованию ShopEngine 2
Вы должны увидеть
Installation complete.
4
Документация по использованию ShopEngine 2
2. Конфигурирование сайта
2.1. Изменение настроек сайта
Когда происходит запрос какой-либо страницы сайта, ядро системы загружает
конфигурационные файлы. Файлы загружаются по следующей логике.
5. Загружается файл _cnf/default.cnf.php.
6. Или грузится конфигурационный файл по пути (если такой существует) _cnf/
[Ваш_домен].cnf.php.
Теперь давайте рассмотрим конфигурационные параметры, которые вы можете настроить.
Синтаксис описания параметра – Имя_параметра:значение;. Вот так выглядит файл конфигурации:
log: off;
freeviagra: on;
price_default:0.55;
theme{
main: blue;
order: blue;
simple-url:off; }
master-card{
use: on;
filter: 188,162,156,3073,3074,3075,3076,3077,267,251,1095,830,638,647,639; }
money-types{
use: on;
default: us;
types: us,eu;
prefix: $,"€";
convert-config:curs.cnf;
ip-table: ip-to-country.cnf; }
support{
email: support@canadianpharmsupport.com;
host: canadianpharmsupport.com; }
5
Документация по использованию ShopEngine 2
6
Документация по использованию ShopEngine 2
Параметры блока master-card
Возможные
Имя параметра Описание
значения
use on или off Разрешать оплату карточками mastercard или нет.
filter off или перечисление id Фильтрация разрешения оплаты. Если значение
препаратов на которые не off то для перечисленых id будет разрешена
разрешить mastercard, оплата mastercard ом.
через запятую.
Параметры блока money-types
Возможные
Имя параметра Описание
значения
use on или off Разрешать оплату карточками mastercard или нет.
filter off или перечисление id Фильтрация разрешения оплаты. Если значение
препаратов на которые не off то для перечисленых id будет разрешена
разрешить mastercard, оплата mastercard ом.
через запятую.
7
Документация по использованию ShopEngine 2
<Directory "/var/www/se2/">
AllowOverride All
</Directory>
# Пути могут не совпадать, необходимо указывать правильные локальные пути на вашем сервере.
Как видно из параметров DocumentRoot для всех сайтов ведет на один и тот же каталог.
Движок сам распознает запрошенный домен и загрузит необходимый конфигурационный
файл, что позволит применять разнообразные параметры описанные в предыдущем разделе, для
разных доменов. Разные Темы позволяют сделать внешне разные сайта. И у посетителей сложится
впечатление посещение разных сайтов.
8
Документация по использованию ShopEngine 2
1
Текущая тема – это тема имя которой указано в конфигурационном файле, влияющим на данный домен.
2
Шаблон – файл представляющий собой html файл с включенными в него инструкциями шаблонизатора.
3
Шаблонизатор – движек, который обрабатывает файлы шаблона, находит в них скрытые инструкции и
производит упомянутые действия. Результат работы шаблонизатора отдается пользователю ввиде html
страницы. В SE2 в качестве шаблонизатора используется smarty - подробнее о нем вы можете узнать на
http://www.smarty.net. На том же сайте вы найдете подробную инструкцию и руководство по написанию
9
Документация по использованию ShopEngine 2
В таком случае для добавления товара в корзину, вернее формирования ссылки добавления
10
Документация по использованию ShopEngine 2
товара в корзину вам необходимо написать ее следующим образом:
а) <a href="/cart.php" onclick="return add_item_to_cart('код_товара');">имя_товара</a> - для добавления
дочернего элемента открытого товара.
б) Для добавления родительского товара, просто используйте ссылка на полную
информацию о товаре.
В каждый шаблон в smarty передается переменная current_page – содержащее имя
запрошеной страницы (вместо страницы index – переменная содержит значение home). То есть при
запросе страницы http://mydomain.com/contacts.php переменная будет содержать значение =
contacts.
11
Документация по использованию ShopEngine 2
переименовать данный файл.
12
Документация по использованию ShopEngine 2
Рассмотрим пример:
Вам необходимо вывести Суммарную Цены товаров в корзине и количество находящихся в
ней товаров.
файл: /themes/blue/data/header.tpl
<!-- Обращаемся к движку для импорта суммарных данных о корзине -->
{:se_module module="cart" action="sum_data" var_name="cart_data":}
<div id="top_cart"> Your cart:
<span class="number">${:$cart_data.sum|string_format:"%.2f":}</span> ({:$cart_data.items:} items)
<a href="/cart.php" onclick="return add_item_to_cart(0);">Proceed to Checkout</a>
</div>
Как видно из примера до того как мы начинаем выводить данные о сумме заказа и
количестве заказываемых товаров мы делаем запрос к модулю se2 под названием cart для
выполнения команды sum_data, и говорим что данные необходимо вернуть в переменную cart_data.
То есть вызов {:se_module module="cart" action="sum_data" var_name="cart_data":} ничто иное
как обращение к модулю cart (module="cart") вызов его метода sum_data (action="sum_data") и
передачу дополнительного параметра var_name="cart_data", который для этого метода означает,
что возвращаемые данные нужно положить в переменную cart_data шаблонизатора.
Далее мы можем использовать эту информацию. Зная, что данный метод модуля cart
возвращает данные в виде ассоциативного массива с ключами sum (суммарная цена заказа) и
items (количество заказанных товаров).
13
Документация по использованию ShopEngine 2
3.4. Модули
14
Документация по использованию ShopEngine 2
метод sum_data
Описание:
Метод возвращает данные о товарах в корзине в сжатом виде. Для получения более
подробных данных используйте метод item_data.
Параметры:
var_name - не обязательный параметр, который сообщает, что данные нужно вернуть в
переменной с именем указанным в var_name. Если параметр не передан, то данные возвращаются в
переменной с именем module_data
Результат:
Возвращается ассоциативный массив.
Ключ массива Описание значения
sum Суммарная цена товаров в корзине, без учета цены доставки.
items Количество товаров в корзине
Пример использования:
файл: /themes/blue/data/header.tpl
…
<!-- Обращаемся к движку для импорта суммарных данных о корзине -->
{:se_module module="cart" action="sum_data" var_name="cart_data":}
<div id="top_cart">
Your cart:
<span class="number">${:$cart_data.sum|string_format:"%.2f":}</span>
({:$cart_data.items:} items)
<a href="/cart.php" onclick="return add_item_to_cart(0);">Proceed to Checkout</a>
</div>
…
15
Документация по использованию ShopEngine 2
метод delivery_data
Описание:
Метод возвращает данные о видах доставки товаров.
Параметры:
var_name - не обязательный параметр, который сообщает, что данные нужно вернуть в
переменной с именем указанным в var_name. Если параметр не передан, то данные возвращаются в
переменной с именем module_data
Результат:
Возвращается ассоциативный массив.
Ключ массива Описание значения
count Количество методов доставки
types Массив методов доставки. Элементом массива является
ассоциативный массив со следующими ключами:
name - Имя типа доставки
price - Цена доставки
description - Описание типа доставки
default - если значение = 2, то данный тип выбран
пользователем.
Пример использования:
16
Документация по использованию ShopEngine 2
метод item_data
Описание:
Метод возвращает данные о товарах в корзине.
Параметры:
var_name - не обязательный параметр, который сообщает, что данные нужно вернуть в
переменной с именем указанным в var_name. Если параметр не передан, то данные
возвращаются в переменной с именем module_data
Результат:
Возвращается ассоциативный массив.
Ключ массива Описание значения
total Общая сумма заказа, включая цену доставки и скидку по discount.
items Массив заказанных товаров. Элементом массива является
ассоциативный массив со следующими ключами:
id - Идентификационный номер товара
parent_id – Идентификационный номер родительского товара
quantity - Количество товара
price - Цена
name_item - имя товара
name_package - Имя пакета товаров в который входит данный
товар
description - Описание товара
total - Суммарная цена за товар. Цена помноженная на
количество
count_items Количество заказанных товаров.
referrer_position Адрес страницы с которой пользователь попал в корзину.
Используется для ссылки continue shoping.
discount_percent Количество процентов скидки по дисконту
discount_value Сумма скидки по дисконту
discount_code Номер дисконта введенный пользователем.
Пример использования:
17
Документация по использованию ShopEngine 2
файл: /themes/blue/cart.tpl
…
<!-- Обращаемся к движку для импорта данных корзины -->
{:se_module module="cart" action="item_data" var_name="cart_data":}
...
{:if $cart_data.count_items > 0:}
{:foreach name=items key=key item=item from=$cart_data.items:}
<tr>
<td class="cart_item">
<b>{:$item.name_package:}</b><br>{:$item.name_item:} <br>
<i style="font-size:10;">(Generic)</i>
</td>
<td class="cart_item" align=center valign="middle"><b>${:$item.price:}</b></td>
<td align=center valign="middle" class="cart_item">
<input ... name="item_quantity[{:$item.id:}]" value="{:$item.quantity:}">
</td>
<td class="cart_item" align="center" valign="middle"><SPAN class="red">${:$item.total:}</SPAN></td>
<td ....>
<a href=”/cart.php?del={:$item.id:}" onclick="return delete_item_from_cart('{:$item.id:}');" ...>
<img src=”/themes/blue/img/delete.gif" border="0" alt="delete">
</a>
</td>
</tr>
{:/foreach:}
<tr><td colspan="5" ><br><hr size="1" color="#e5e5e5"></td></tr>
<tr>
<td valign="middle">
<b>Discount code:</b>
<input class="form" name="discount_code" value="{:$cart_data.discount_code:}">
</td>
{:if $cart_data.discount_percent > 0:}
<td align="center"><b>{:$cart_data.discount_percent:}%</b></td>
<td align="center">Discount:</td>
<td align="center"><b style="color: green;">- ${:$cart_data.discount_value:}</b></td>
{:/if:}
</tr>
…
{:else:}
<tr>
<td colspan="5" >Your cart is empty.</td>
</tr>
{:/if:}
18
Документация по использованию ShopEngine 2
метод clear_cart_data
Описание:
Метод очищает все данные в корзине. Используется для завершения заказа, после завершения
процедуры заказа возникает необходимость очистить корзину.
Параметры:
Результат:
Пример использования:
19
Документация по использованию ShopEngine 2
метод item_id_by_priority
Описание:
Возвращает массив идентификаторов товаров упорядоченных по приоритету важности.
Параметры:
var_name - не обязательный параметр, который сообщает, что данные нужно вернуть в
переменной с именем указанным в var_name. Если параметр не передан, то данные
возвращаются в переменной с именем module_data
Результат:
Возвращается массив элементов. Элемент представлен ассоциативным массивом.
Ключ массива Описание значения
item_id Идентификационный номер товара.
group_id Идентификационный номер группы товаров.
priority Приоритет важности товара. Чем выше данное число, тем важнее
товар.
Пример использования:
файл: /themes/white/data/we_recommend_items.tpl
...
<!-- Обращаемся к движку для импорта списка товаро по их приоритету -->
{:se_module module="item" action="item_id_by_priority" var_name="pids":}
...
{:section name=i loop=$pids step=1 max=6:}
{:if $smarty.section.i.index%2 == 0:}
<div class="hspacer_1"><img src="/themes/white/img/spacer.gif"></div>
{:/if:}
<!-- Обращаемся к движку за данными по товару -->
{:se_module module="item" action="item_data_by_ids" item_ids=$pids[i].item_id type="small"
fields="id,name,price_per_item,small_description" var_name="idata":}
<div class="item_1">
<div class="item_image">
<a href="item.php?id={:$idata.id:}"><img src="/thumbs/{:$idata.id:}.jpg" alt="{:$idata.name:}" border=0></a>
</div>
<div class="item_name">
<a href="item.php?id={:$idata.id:}">{:$idata.name:}</a>
<img src="/themes/white/img/ind01_web_34.gif" border=0>
<span class="red_3">${:$idata.price_per_item:}</span>
</div>
</div>
...
{:/section:}
20
Документация по использованию ShopEngine 2
метод item_data_by_ids
Описание:
Очень интересный метод. Возвращает данные по товару(ам). Может принимать фильтры, по
возвращаемым полям.
Параметры:
item_ids - обязательный параметр. Через данный параметр методу говорится информацию по
каким товарам необходимо вернуть. Принимает как одиночный идентификатор товара, так и
несколько идентификаторов разделенных «,».
type - не обязательный параметр который сообщает что данные нужно вернуть в
отфильтрованном виде. Принимает единственное значение small.
fields – Если предыдущий параметр (type = small). То данный параметр является
обязательным. Если предыдущий параметр вообще не указан, то необходимости в данном
параметре нет. Принимает список тех полей товара, которые метод должен вернуть.
var_name - не обязательный параметр, который сообщает, что данные нужно вернуть в
переменной с именем указанным в var_name. Если параметр не передан, то данные
возвращаются в переменной с именем module_data
Результат:
Если item_ids содержит единственный идентификатор, то возвращает Ассоциативный массив
описанный ниже, если идентификаторов много, то массив таких же ассоциативный массивов.
Напомним, что некоторых полей массива может не быть если методу сказано вернуть только
определенные поля.
Ключ массива Описание значения
name Имя товара
id Идентификационный номер товара.
packages Содержит массив информации по дочернем товарам.
Элемент массива представлен ассоциативным
массивом с данными о дочернем товаре, ключи:
id - идентификационный номер товара
parent_id - идентификационный номер
родительского товара
name - имя товара
pills_count - Количество таблеток (пилюль)
pills_type - Таблетка, Пилюля и т.д.
dosage - вес одной таблетки (пилюли)
dosage_type - единица измерения веса
price - Цена товара
price_per_item - Цена одной таблетки товара.
save_money - количество денежных единиц, которое
покупатель выгодает приобретая именно этот товар
из родительского пакета.
description Описание (обычно пустое)
Drug_name Наименование препарата
DrugJJses Для чего применяется
How_Taken Как использовать
Drug_class_and_mechanism Класс препарата
Missed_Dose Дозировка
Storage Метод хранения
Warnings_and_Precautions Противопоказания
21
Документация по использованию ShopEngine 2
Possible_Side_Effects Побочные эффекты
Morejnformation Дополнительная информация
small_description Малое описание
price_per_item Минимальная цена одной таблетки, дочерних товаров
sprice_per_item Средняя цена одной таблетки, дочерних товаров
bundle Является ли товар составным.
bundle_pack Для составного товара – элементы, из которых составлен
товар.
price Цена для составного товара.
Пример использования:
Смотри пример на метод item_id_by_priority.
22
Документация по использованию ShopEngine 2
метод group_list
Описание:
Возвращает список групп.
Параметры:
var_name - не обязательный параметр который сообщает что данные нужно вернуть в
переменной с именем указанным в var_name. Если параметр не передан то данные
возвращаются в переменной с именем module_data
Результат:
Возвращается массив элементов. Элемент представлен ассоциативным массивом.
Ключ массива Описание значения
name Имя группы
id Идентификационный номер группы товаров.
Пример использования:
файл: /themes/blue/all_products.tpl
…
<!-- Обращаемся к движку для импорта списка групп -->
{:se_module module="item" action="group_list" var_name="glist":}
23
Документация по использованию ShopEngine 2
метод group_data
Описание:
Возвращает данные о группе товаров.
Параметры:
var_name - не обязательный параметр, который сообщает, что данные нужно вернуть в
переменной с именем указанным в var_name. Если параметр не передан, то данные
возвращаются в переменной с именем module_data
group_id - содержит идентификационный номер группы, данные которой необходимо вернуть.
Если указать вместо цифры слово auto то идентификационный номер возьмется из GET
окружения, из GET4 переменной group_id.
Результат:
Возвращается ассоциативный массив. В случае успеха, результат выглядит:
Ключ массива Описание значения
name Имя группы
id Идентификационный номер группы товаров.
items Содержит массив сжатой информации по товарам. Элемент
массива представлен ассоциативным массивом с данными о
товаре, ключи:
id - идентификационный номер товара
name - имя товара
link - ссылка на страницу more details о товара (используйте
только в том случае если придерживаетесь стандартной
структуры имен страниц)
price_per_item - минимальная цена одной таблетки в дочерних
товарах.
description - описание товара.
Bundle – является ли товар составным.
В случае ошибки, результат выглядит:
4
GET - данные это переменные переданные через url например http://mydomqin.com/group.php?group_id=48
24
Документация по использованию ShopEngine 2
файл: /themes/blue/group.tpl
…
<!-- Обращаемся к движку для импорта данных из группы товаров -->
{:se_module module="item" action="group_data" group_id="auto" var_name="group_data":}
<div id="title_center_2">
<img src="/themes/blue/img/group_{:$group_data.id:}_title.gif" alt="{:$group_data.name:}">
</div>
<div id="single_product_top"></div>
{:foreach item=item from=$group_data.items:}
<div id="single_product_separator"></div>
<div id="single_product">
<span class="image">
<a href="/item.php?group_id={:$group_data.id:}&id={:$item.id:}">
<img src="/thumbs/{:$item.id:}_med.jpg" alt="{:$item.name:}" border=0>
</a>
</span>
<div class="info">
<div class="product_name">{:$item.name:}</div>
<div class="our_price">Our price: <span class="price">${:$item.price_per_item:}</span></div>
<div class="description">{:$item.description|truncate:253:"...":true:}</div>
<div class="links">
<div class="text_link">
<a href=”/item.php?group_id={:$group_data.id:}&id={:$item.id:}">More info</a>
</div>
<div class="image_link">
<img ... onClick="window.open('item_price.php?id={:$item.id:}', '_blank', '...');">
</div>
</div>
</div>
</div>
{:/foreach:}
…
25
Документация по использованию ShopEngine 2
метод item_name
Описание:
Возвращает Имя товара по его идентификационному номеру. В возвращаемом имени все
необычные символы, в том числе пробельные, заменены на «_». Данный метод используется
для генерации человеко-понятных ссылок.
Параметры:
item_id - Идентификатор товара имя, которого необходимо вернуть. Если необходимо вернуть
имя товара.
group_id - Идентификатор группы, имя которой необходимо вернуть. Если необходимо вернуть
имя группы.
Оба параметра не могут быть использованы одновременно.
Результат:
В месте вывода выводит имя товара или группы.
Пример использования:
файл: /themes/blue/cart.tpl
<div id="alternatives_container">
<div id="alternatives_block">
<div class="image"><a href="/item.php?id=188"><img src="/thumbs/188.jpg" border=0></a></div>
<div class="title">
<!-- Обращаемся к движку для вывода имени товара -->
{:se_module module="item" action="item_name" item_id="188":}
<a href="/item.php?id=188" target="_blank">learn more</a>
</div>
</div>
<div id="alternatives_block">
<div class="image"><a href="/item.php?id=156"><img src="/thumbs/156.jpg" border=0></a></div>
<div class="title">
<!-- Обращаемся к движку для вывода имени товара -->
{:se_module module="item" action="item_name" item_id="156":}
<a href="/item.php?id=156" target="_blank">learn more</a>
</div>
</div>
<div id="alternatives_block">
<div class="image"><a href="/item.php?id=183"><img src="/thumbs/183.jpg" border=0></a></div>
<div class="title">
<!-- Обращаемся к движку для вывода имени товара -->
{:se_module module="item" action="item_name" item_id="183":}
<a href="/item.php?id=183" target="_blank">learn more</a>
</div>
</div>
</div>
26
Документация по использованию ShopEngine 2
метод item_data
Описание:
Возвращает полные данные о товаре. Содержит дочерние товары, и полные описания по
применению, используется при показе страницы more details. В остальных случаях не
рекомендуется использовать.
Параметры:
var_name - не обязательный параметр, который сообщает, что данные нужно вернуть в
переменной с именем указанным в var_name. Если параметр не передан, то данные
возвращаются в переменной с именем module_data
item_id - содержит идентификационный номер товара, данные которого необходимо вернуть.
Если указать вместо цифры слово auto то идентификационный номер возьмется из GET
окружения, из GET переменной item_id.
Результат:
Возвращается ассоциативный массив. В случае успеха, результат выглядит:
Ключ массива Описание значения
name Имя товара
id Идентификационный номер товара.
packages Содержит массив информации по дочернем товарам.
Элемент массива представлен ассоциативным
массивом с данными о дочернем товаре, ключи:
id - идентификационный номер товара
parent_id - идентификационный номер
родительского товара
name - имя товара
pills_count - Количество таблеток (пилюль)
pills_type - Таблетка, Пилюля и т.д.
dosage - вес одной таблетки (пилюли)
dosage_type - единица измерения веса
price - Цена товара
price_per_item - Цена одной таблетки товара.
save_money - количество денежных единиц, которое
покупатель выгодает приобретая именно этот товар
из родительского пакета.
description Описание (обычно пустое)
Drug_name Наименование препарата
DrugJJses Для чего применяется
How_Taken Как использовать
Drug_class_and_mechanism Класс препарата
MissecLDose Дозировка
Storage Метод хранения
Warnings_and_Precautions Противопоказания
Possible_Side_Effects Побочные эффекты
Morejnformation Дополнительная информация
small_description Малое описание
price_per_item Минимальная цена одной таблетки, дочерних товаров
sprice_per_item Средняя цена одной таблетки, дочерних товаров
bundle Является ли товар составным
bundle_pack Массив элементов составного товара
price Цена для составного товара
27
Документация по использованию ShopEngine 2
В случае ошибки, результат выглядит:
28
Документация по использованию ShopEngine 2
метод get_contact_data
Описание:
Возвращает email и адрес сайта поддержки.
Параметры:
var_name - не обязательный параметр, который сообщает, что данные нужно вернуть в
переменной с именем указанным в var_name. Если параметр не передан, то данные
возвращаются в переменной с именем module_data
Результат:
Возвращается ассоциативный массив.
Ключ массива Описание значения
e_support Email адрес
h_support Адрес сайта службы поддержки
site_host Имя текущего хоста
Пример использования:
файл: /themes/blue/process_order.tpl
<!-- Обращаемся к движку для импорта списка групп -->
{:se_module module="settings" action="get_contact_data" var_name="cdata":}
<span class="text">
For your safety we use highly secure order processing server with our own secure certificate.<br><br>
All questions and concerns regarding billing, payment or customer service should be writen to
<a href="mailto:{:$cdata.e_support:}" class="link">{:$cdata.e_support:}</a>
</span>
29
Документация по использованию ShopEngine 2
метод send_data
Описание:
Отправляет сообщение посетителя на email адрес сайта поддержки. Отправление сообщение
происходит в том случае, когда в POST данных присутствует переменная email. Также
используются следующие переменные из POST данных:
30
Документация по использованию ShopEngine 2
файл: /themes/blue/contacts.tpl
<!-- Обращаемся к движку для отправления сообщения -->
{:se_module module="contacts" action="send_data" var_name="contact_data":}
...
<form method="post" action="contacts.php">
<table cellpadding="0" cellspacing="0" width="100%">
<tr>
<td colspan="2" align="center"><b>{:$contact_data.title:}<br>{:$contact_data.message:}</b></td>
</tr>
<tr>
<td><div ...>Your Name: </div></td>
<td ...><input name="name" type="text" value="{:$smarty.post.name:}" ...></td>
</tr>
<tr>
<td><div ...>Your E-mail Address: </div></td>
<td><input name="email" type="text" size="30" value="{:$smarty.post.email:}" ...></td>
</tr>
<tr>
<td><div ...>Messenger:</div></td>
<td ...>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td >
<select name="messenger" ...>
<option>ICQ
<option>MSN
...
<option>AOL
</select>
</td>
<td><input name="messenger_contact" ... value="{:$smarty.post.messenger_contact:}" ...></td>
</tr>
</table>
</td>
</tr>
<tr valign="top">
<td><div ...>Question: </div></td>
<td><textarea name="text" ...>{:$smarty.post.text:}</textarea></td>
</tr>
<tr valign="top">
<td><b>Confirm code:</b></td>
<td ...>
<table width="291" cellpadding="0" cellspacing="0">
<td><img src="/kaptcha.php" alt="" style="border:1px solid #CCCCCC"></td>
<td><input type="text" name="keycode" class="form"></td>
</table>
</td>
</tr>
<tr>
<td colspan="2" ...><input border="0" src="/themes/blue/img/msg.gif" name="I1" type="image"></td>
</tr>
</table>
</form>
31
Документация по использованию ShopEngine 2
метод show_kcaptcha_image
Описание:
Показывает изображение с кодом kcaptcha
Параметры: Результат:
Результатом является отправка двоичных данных картинки.
Пример использования:
файл: /themes/blue/kaptcha.tpl
{:se_module module="contacts" action="show_kcaptcha_image":}
32
Документация по использованию ShopEngine 2
метод get_sid_data
Описание:
Возвращает данные о типе сеанса, номер сеанса, имя переменой используемой для передачи
SID и тип передачи сеанса между страницами.
Параметры:
var_name - не обязательный параметр, который сообщает, что данные нужно вернуть в
переменной с именем указанным в var_name. Если параметр не передан, то данные
возвращаются в переменной с именем module_data
Результат:
Возвращается ассоциативный массив.
Ключ массива Описание значения
id Идентификационный номер сеанса посетителя.
type Тип передачи сеанса. Пока поддерживается только один тип передачи
сеанса URL.
varname Имя переменной используемой для передачи идентификационного
номера сеанса между страницами.
Пример использования:
файл: /themes/blue/data/header.tpl
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Canadian Pharmacy</title>
<LINK rel="stylesheet" href="/themes/blue/css/main.css" type="text/css">
<script type="text/javascript" src="/themes/card.js"></script>
<script type="text/javascript">
<!-- Обращаемся к движку для импорта параметров сеанса -->
{:se_module module="userseans" action="get_sid_data" var_name="session":}
var SessionType = "{:$session.type:}";
var SessionPrefix = "{:$session.id:}";
var SessionName = "{:$session.varname:}";
</script>
{:include file="data/bookmark.tpl":}
</head>
<body>
33
Документация по использованию ShopEngine 2
метод show_alhobit
Описание:
Вставляет в месте вызова – линейку поиска по первой букве алфавита.
Параметры:
template - не обязательный параметр, который сообщает, что нужно использовать именной
шаблон модуля5, с именем template. Если параметр не передан, то используется шаблон с
именем 'clear.tpl'.
Данные поступающие в шаблон:
В шаблон передается переменная alhobit – являющаяся ассоциативным массивом. Ключами
массива являются заглавные буквы алфавита, а значение это число товаров начинающиеся на
данную букву.
Пример использования:
файл: /themes/blue/data/search.tpl
<table cellpadding="0" cellspacing="0" id="search_abc">
<tr>
<td class="image"><img src="/themes/blue/img/search_by_name.gif" alt="search by name"></td>
<td class="block_of_links">
{:se_module module="search" action="show_alhobit" template="search_alhobit":}
</td>
<td>
<div id="search_form">
<form action="/search.php" method="get" style="margin:0px;padding:0px;">
<div class="image"><img src="/themes/blue/img/search_top.gif" alt="search"></div>
<div class="input"><input type="text" name="search_text"></div>
<div class="button">
<input border="0" src="/themes/blue/img/search_button.gif" name="I1" ... type="image">
</div>
</form>
</div>
</td>
<td width="100%"> </td>
</tr>
</table>
файл: /themes/blue/modules/search_by_name.module.tpl
<div style="width:369px;overflow:hidden;margin-bottom:12px;">
{:foreach name=alphabet item=chars key=char from=$alphabet:}
{:if $chars == 0:}
<div class="search_link">{:$char:}</div>
{:else:}
{:if $smarty.get.letter != "" && $smarty.get.letter == $char:}
<div class="active_search"><a href="/search.php?letter={:$char:}">{:$char:}</a></div>
{:else:}
<div class="search_link"><a href="/search.php?letter={:$char:}">{:$char:}</a></div>
{:/if:}
{:/if:}
{:/foreach:}
</div>
5
Именной шаблон модуля – это файл шаблона хранящегося в каталоге /themes/имя_темы/modules/имя_шаблона.module.tpl
34
Документация по использованию ShopEngine 2
метод get_items_data
Описание:
Проверяет существование переменных в GET окружении.
Если существует переменная letter, то производит поиск товаров начинающихся на букву letter.
Если существует переменная search_text, то производится поиск товаров, имя или описание
которых содержит слова указанные через пробел в search_text.
Параметры:
var_name - не обязательный параметр, который сообщает, что данные нужно вернуть в
переменной с именем указанным в var_name. Если параметр не передан, то данные
возвращаются в переменной с именем module_data.
Результат:
В результате возвращается массив элементов, содержащих найденные товары. Элемент
массива представлен ассоциативным массивом с информацией о найденном товаре.
Ключ массива Описание значения
name Имя товара
id Идентификационный номер товара.
packages Содержит массив информации по дочернем товарам.
Элемент массива представлен ассоциативным
массивом с данными о дочернем товаре, ключи:
id - идентификационный номер товара
parent_id - идентификационный номер
родительского товара
name - имя товара
pills_count - Количество таблеток (пилюль)
pills_type - Таблетка, Пилюля и т.д.
dosage - вес одной таблетки (пилюли)
dosage_type - единица измерения веса
price - Цена товара
price_per_item - Цена одной таблетки товара.
save_money - количество денежных едениц, которое
покупатель выгодает приобретая именно этот товар
из родительского пакета.
description Небольшое описание
price_per_item Минимальная цена одной таблетки, дочерних товаров
sprice_per_item Средняя цена одной таблетки, дочерних товаров
Пример использования:
35
Документация по использованию ShopEngine 2
файл: /themes/blue/search.tpl
<!-- Импорт данных о найденных товарах -->
{:se_module module="search" action="get_items_data" var_name="search_data":}
...
<div id="title_center_2"><img src="/themes/blue/img/search.gif" alt="Search"></div>
<div id="single_product_top"></div>
{:foreach item=item from=$search_data:}
<div id="single_product_separator"></div>
<div id="single_product">
<span class="image">
<a href="/item.php?group_id={:$item.group.id:}&id={:$item.id:}">
<img src="/thumbs/{:$item.id:}_med.jpg" alt="{:$item.name:}" border=0>
</a>
</span>
<div class="info">
<div class="product_name">{:$item.name:}</div>
<div class="our_price">Our price: <span class="price">${:$item.price_per_item:}</span></div>
<div class="description">{:$item.description|truncate:253:"...":true:}</div>
<div class="links">
<div class="text_link">
<a href="/item.php?group_id={:$item.group.id:}&id={:$item.id:}">More info</a>
</div>
<div class="image_link">
<img ... onClick="window.open('item_price.php?id={:$item.id:}', '_blank', 'width=600 ...');">
</div>
</div>
</div>
</div>
{:/foreach:}
36
Документация по использованию ShopEngine 2
метод menu
Описание:
Вставляет в месте вызова – линейку навигационные меню.
Параметры:
template - не обязательный параметр который сообщает что нужно использовать именной
шаблон модуля с именем template. Если параметр не передан, то используется шаблон с
именем 'clear.tpl'.
name – Имя меню которое необходимо вывести. Параметры меню берутся из
конфигурационного файла. Существует также меню, с именем MAIN – которое если не
определено в конфигурационном файле генерируется автоматически. Меню MAIN имеет
вложенную структуру, состоящую из имен групп (Родительский элемент), и имен товаров в
данных группах (дочерние элементы).
Данные поступающие в шаблон:
В шаблон передается переменная menu – являющаяся ассоциативным массивом. Массив
содержит следующие ключи:
37
Документация по использованию ShopEngine 2
файл: /themes/blue/modules/navigation_top.module.tpl
{:if $menu.type == "line":}
{:foreach item=item from=$menu.items:}
{:if $current_page == $item.name:}
<div class="menu_item"><img src="/themes/blue/img/{:$item.name:}_active.gif" alt="{:$item.name:}"></div>
{:else:}
<div class="menu_item">
<a href="{:$item.link:}">
<img src="/themes/blue/img/{:$item.name:}.gif"
alt="{:$item.name:}"
onMouseOver="this.src='/themes/blue/img/{:$item.name:}_over.gif'"
onMouseOut="this.src='/themes/blue/img/{:$item.name:}.gif'">
</a>
</div>
{:/if:}
<div class="separator"></div>
{:/foreach:}
{:/if:}
файл: /themes/blue/modules/navigation_main.module.tpl
...
{:if $menu.type == "line":}
<div class="left_menu_group_bestsellers_active" id="c_best" style="display:none" >
<a href="javascript:onClick=left_menu('best')">{:$menu.items.Bestsellers.name:}</a>
</div>
<div class="left_menu_group_bestsellers" id="b_best" style="display:">
<a href="javascript:onClick=left_menu('best')">{:$menu.items.Bestsellers.name:}</a>
</div>
<div class="left_menu_group_links" id="a_best" style="display:none">
{:foreach name=items item=item from=$menu.items.Bestsellers.items:}
{:if $current_group == 131:}
<a href="{:$item.link:}"><span style="font-weight:bold">{:$item.name:}</span></a>
<script language="JavaScript">
document.getElementById('a_' + "best").style.display = "";
document.getElementById('b_' + "best").style.display = "none";
document.getElementById('c_' + "best").style.display = "";
</script>
{:else:}
<a href="{:$item.link:}">{:$item.name:}</a>
{:/if:}
{:/foreach:}
<div class="link_other"><a href="{:$menu.items.Bestsellers.link:}">all products</a></div>
</div>
{:foreach name=groups key=key item=group from=$menu.items:}
{:if $key != "Erection_packs" && $key != 'Bestsellers':}
<div class="left_menu_group_active" id="c_{:$key:}" style="display:none" >
<a href="javascript:onClick=left_menu('{:$key:}')">{:$group.name:}</a>
</div>
<div class="left_menu_group" id="b_{:$key:}" style="display:">
<a href="javascript:onClick=left menu('{:$kev:}')">{:$aroup.name:}</a>
</div>
<div class="left_menu_group_links" id="a_{:$key:}" style="display:none">
{:foreach name=items item=item from=$group.items:}
{:if $current_group == $group.id:}
<a href="{:$item.link:}"><span style="font-weight:bold">{:$item.name:}</span></a>
<script language="JavaScript">
document.getElementByld('a_' + "{:$key:}").style.display = "";
document.getElementByld('b_' + "{:$key:}").style.display = "none";
document.getElementByld('c_' + "{:$key:}").style.display = "";
</script>
{:else:}
<a href="{:$item.link:}">{:$item.name:}</a>
{:/if:}
{:/foreach:}
<div class="link_other"><a href="{:$group.link:}">all products</a></div>
</div>
{:/if:}
{:/foreach:}
{:/if:}
38
Документация по использованию ShopEngine 2
6
Описание данных переменных можно посмотреть в описании результата выполнения метода user_data. Имена переменных
совпадают с именами ключей. Отличаются только имена переменных связанных с данными оплаты, у них появляется префикс
cc_ - для данных о кредитной карте и check_ - Для данных по чеку. Также переменная client_time сохраняется под именем
time.
39
Документация по использованию ShopEngine 2
метод site_data
Описание:
Возвращает данные о сайте и странице оформления заказа.
Параметры:
var_name - не обязательный параметр, который сообщает, что данные нужно вернуть в
переменной с именем указанным в var_name. Если параметр не передан, то данные
возвращаются в переменной с именем module_data.
Результат:
В результате возвращается ассоциативный массив со следующими ключами:
40
Документация по использованию ShopEngine 2
метод user_data
Описание:
Возвращает данные которые ввел пользователь, заполняя форму заказа, на разных страницах
при оформлении заказа.
Параметры:
var_name - не обязательный параметр, который сообщает, что данные нужно вернуть в
переменной с именем указанным в var_name. Если параметр не передан, то данные
возвращаются в переменной с именем module_data.
Результат:
В результате возвращается ассоциативный массив со следующими ключами:
41
Документация по использованию ShopEngine 2
received -
medicalConditions -
currentMedications -
plannedMedications -
allergies – Комментарий поля алергеннов.
surgies -
medicalHistory – Медицинская история
haveConditions -
nitroglycerine -
sexualDysfunction – Признаки сексуальной
дистрофии
Пример использования:
файл: /themes/blue/data/order_step1.tpl
…
{:se_module module="order" action="user_data" var_name="user_data":}
...
<form method="POST" name="main_form" action="/process_order.php" onSubmit="return check_page(this);" >
<input type="hidden" name="topage" value="2">
<table ...>
<tr>
<td><img src="/themes/images/bulet.gif" width="17" height="18" /></td>
<td width="150">Full name:</td>
<td><input type="text" name="full_name" value="{:$user_data.full_name:}"x/td>
</tr>
<tr>
<td><img src="/themes/images/bulet.gif" width="17" height="18" /></td>
<td>Street address :</td>
<td><input type="text" name="street" value="{:$user_data.street:}" ></td>
</tr>
………
</table>
</form>
…
42
Документация по использованию ShopEngine 2
метод save_order
Описание:
Производит сохранение данных заказа. Используется на финальном шаге оформления заказа.
Параметры:
Результат:
Ничего не возвращает.
Пример использования:
файл: /themes/blue/data/order_step3.tpl
<!-- Сохраняем заказ для последующей обработки -->
{:se_module module="order" action="save_order":}
<!-- Очищаем данные заказа -->
{:se_module module="order" action="clear_order_data":}
<!-- Очищаем данные из корзины -->
{:se_module module="cart" action="clear_cart_data":}
<!-- Выводим данные о удачном сохранении заказа
<div style="margin-top:28px;margin-bottom:20px;">
Transaction Status: <span style="color:#FE0003;font-weight:bold;">STORED</span>
</div>
43
Документация по использованию ShopEngine 2
метод clear_order_data
Описание:
Метод очищает все данные заполненные пользователем при оформлении заказа.
Используется для завершения заказа, после завершения процедуры заказа возникает
необходимость очистить данные пользователя.
Параметры:
Результат:
Ничего не возвращает.
Пример использования:
файл: /themes/blue/data/order_step3.tpl
<!-- Сохраняем заказ для последующей обработки -->
{:se_module module="order" action="save_order":}
<!-- Очищаем данные заказа -->
{:se_module module="order" action="clear_order_data":}
<!-- Очищаем данные из корзины -->
{:se_module module="cart" action="clear_cart_data":}
<!-- Выводим данные о удачном сохранении заказа
<div style="margin-top:28px;margin-bottom:20px;">
Transaction Status: <span style="color:#FE0003;font-weight:bold;">STORED</span>
</div>
…
44
Документация по использованию ShopEngine 2
4. Исправление неисправностей.
45
Документация по использованию ShopEngine 2
Чтобы удалить cialis, будем проверять id препарата на равенство cialis.id=156. если id=156 то
ничего не выводим:
{:foreach name=items item=item from=$group_data.items:}
{:if $item.id != 156:}
…
{:/if:}
{:/foreach:}
Файл search.tpl
Уберем cialis из выдачи поиска. Здесь вывод в таком цикле:
{:foreach name=items key=key item=item from=$search_data:}
…
{:/foreach:}
46
Документация по использованию ShopEngine 2
47