Вы находитесь на странице: 1из 47

Документация по использованию ShopEngine 2

Документация по использованию ShopEngine 2


1. Инсталляция на сервере................................................................................................................... 2
1.1. Требования программного обеспечения сервера ................................................................. 2
1.2. Загрузка файлов на сервер .................................................................................................... 2
1.3. Инсталляция движка SE2........................................................................................................ 2
2. Конфигурирование сайта.................................................................................................................. 5
2.1. Изменение настроек сайта...................................................................................................... 5
2.1.1. Конфигурационные параметры .................................................................................. 6
2.2. Конфигурирование для нескольких доменных имен ............................................................. 8
3. Создание "Темы" (Дизайна вашего сайта)....................................................................................... 9
3.1 Что такое "Тема" и как это работает ....................................................................................... 9
3.2 Стандарты написания шаблонов........................................................................................... 10
3.2.1 Общие правила для всех страниц сайта................................................................... 10
3.2.2 Правила написания шаблона страницы item.php ................................................... 11
3.2.3 Правила написания шаблона страницы group.php................................................. 11
3.2.4 Правила написания шаблона страницы search.php ............................................... 11
3.2.5 Правила написания шаблона страницы contacts.php............................................... 12
3.2.6 Правила написания шаблона страницы cart.php...................................................... 12
3.3. Использование модулей ....................................................................................................... 13
3.4. Модули ................................................................................................................................... 14
3.4.1 Модуль "cart"............................................................................................................... 14
метод sum_data............................................................................................................. 15
метод delivery_data ........................................................................................................ 16
метод item_data ............................................................................................................. 17
метод clear_cart_data ..................................................................................................... 19
3.4.2 Модуль "item".............................................................................................................. 20
метод item_id_by_priority................................................................................................. 20
метод item_data_by_ids.................................................................................................. 21
метод group_list.............................................................................................................. 23
метод group_data........................................................................................................... 24
метод item_name ........................................................................................................... 26
метод item_data ............................................................................................................. 27
3.4.3 Модуль "settings" ........................................................................................................ 29
метод get_contact_data................................................................................................... 29
3.4.4 Модуль "contacts" ....................................................................................................... 30
метод send_data ............................................................................................................ 30
метод show_kcaptcha_image .......................................................................................... 32
3.4.5 Модуль "userseans" .................................................................................................... 33
метод get_sid_data......................................................................................................... 33
3.4.6 Модуль "search" .......................................................................................................... 34
метод show_alhobit......................................................................................................... 34
метод get_items_data ..................................................................................................... 35
3.4.7 Модуль "navigation"..................................................................................................... 37
метод menu ................................................................................................................... 37
3.4.8 Модуль "order" ............................................................................................................ 39
метод site_data .............................................................................................................. 40
метод user_data............................................................................................................. 41
метод save_order ........................................................................................................... 43
метод clear_order_data................................................................................................... 44
4. Исправление неисправностей. ....................................................................................................... 45
5. Frequently Asked Questions ............................................................................................................. 46
5.1. Как убрать товары с shopengine ........................................................................................... 46
5.2. Смена URL............................................................................................................................. 47

1
Документация по использованию ShopEngine 2

1. Инсталляция на сервере
Перед загрузкой файлов системы на сервер, убедитесь, что программное обеспечение сервера
удовлетворяет требованиям необходимым для работы ShopEngine 2 (далее по тексту SE2).

1.1. Требования программного обеспечения сервера


Операционная *nix, freeBSD, Windows server v.*
система
Web-server Apache 1.3.7 или выше, рекомендуемая версия 2.x. Долны
присутствовать модули openssl, rewrite
PHP Версия не ниже 5.0.2

1.2. Загрузка файлов на сервер


Для загрузки файлов на сервер воспользуйтесь ftp доступом. Откройте ftp соединение с
сервером и загрузите файлы из папки se2 в корневую директорию вашего web-сервера
(поинтересуйтесь у провайдера какая директория является DOCUMENT ROOT на вашем сервере).
После загрузки файлов ваша корневая папка web-сервера должна иметь следующий вид:

_cnf Каталог с конфигурационными файлами


core Корневой каталог в котором содержатся файлы системы
data Данная папка содержит файлы каталога товаров
temp Каталог для временных файлов
themes Каталог содержащий "Темы"
thumbs Изображения товаров
var Каталог в который сохраняются заказы.
cacert.pem SSL сертификат
index.php Загрузчик ядра системы

1.3. Инсталляция движка SE2


1. Далее, наберите в браузере следующее:
http://ваш_домен/index.php?get_status
Вам будет выдана информация по состоянию вашего сервера

2
Документация по использованию ShopEngine 2

Если вы видите, что все статусы выставлены в ok, то можете переходить к следующему
пункту. Если вы видите какие либо ошибке, то постарайтесь их устранить. Если ошибки
связаны с правами, то поменяйте права на те каталоги, которые отмечены в данной
странице, выставите права 777.
2. После правильной загрузки файлов на сервер, наберите в браузере следующий адрес:
http://ваш_домен/index.php?xmlupdate. Для создания вашего каталога. Если возникают
какие либо ошибки, возможно вам необходимо поменять права на каталог data.
3. Наберите в строке браузера следующий адрес:
http://ваш_домен/index.php?install
Вы должны увидеть следующую надпись:
Installation complete.

Если скрипт сообщил, что на сервере не удалось обнаружить mod_rewrite, а вы уверены


что mod_rewrite установлен, попробуйте такую команду:
http://domain.com/index.php?install_manual_mr

3
Документация по использованию ShopEngine 2
Вы должны увидеть
Installation complete.

Если же на вашем сервере не установлен модуль mod_rewrite, то установка shopengine


выполняется такой командой
http://domain.com/index.php?install_manual_nmr
В этом случае вы не сможете сделать красивые ссылки вида /item/имя_товара.html
4. Далее перейдите на главную страницу вашего сайта, если вы видите заглавную страницу
магазина, то все в порядке, в противном случае обратитесь к разделу "Исправление
неисправностей" данной документации.
После завершения установки рекомендуется деактивировать команды index.php?install,
install_manual_mr, install_manual_nmr, чтобы предотвратить возможность изменения ссылочной
структуры сайта извне. Для этого в файле /core/kernel.cls.php в массиве $this->system_pages = array
нужно закомментировать (поставить // вначале строки) соответствующие строки:

//'install' => array('module' => 'install', 'action' => 'install'),


//'install_manual_mr' => array('module' => 'install', 'action' => 'install_with_mr'),
//'install_manual_nmr' => array('module' => 'install', 'action' => 'install_without_mr'),
Можно также закомментировать строки get_status и xmlupdate, но в этом случае вы не
сможете просматривать результат теста get_status и не сможете обновлять каталог командой
xmlupdate. Если вы закомментируете другие строки кроме упомянутых - это может привести к
ошибкам в работе сайта.

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

2.1.1. Конфигурационные параметры


Параметры, не выделенные в блоки:
Возможные
Имя параметра Описание
значения
price_default цифра Множитель цен по умолчанию. Через данный
параметр можно настроить общий множитель цен.
price id_товара:множитель; Множитель для конкретного товара
log on или off Вести лог запросов или нет. Включает или выключает
логированние запросов. Используется для отладки
работы сайта.
freeviagra on или off Включает или выключает добавлении бесплатных
таблеток Виагры к каждому заказу.
Параметры блока theme
Возможные
Имя параметра Описание
значения
main Имя каталога из папки Имя используемой "темы" для данного сайта.
themes. Например, blue
order Имя каталога из Имя темы формы оформления заказа.
папки themes/sys/. без
префикса order.
simple-url on или off Включение ЧПУ url – красивых url адресов.
Внимание: работает только при наличии
mod_rewrite.
support_email support@mydomain.co m Адрес электронной почты, куда будут
отправляться сообщения от пользователя. С
формы контактов.
support_host mydomain.com Адрес сайта службы поддержки. Может быть
запрошен из шаблона какой либо страницы для
контекстного отображения.
Параметры блока support
Возможные
Имя параметра Описание
значения
use on или off Использовать или нет преобразование типа
валюты в ценах на сайте.
default mydomain.com Адрес сайта службы поддержки. Может быть
запрошен из шаблона, какой либо страницы для
контекстного отображения.
types перечисление валют.
prefix перечисление префиксов
валют
convert-config таблица конвертации
валют
ip-table таблица определения
валюты по ip клиента

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

2.2. Конфигурирование для нескольких доменных имен


Движок SE2 поддерживает работу нескольких сайтов на одном движке. Если у вас есть
несколько доменных имен или вы создали несколько доменов 3го уровня от вашего основного
домена. И хотели бы на каждом разместить ваш сайт, но с разным внешним видом и параметрами -
это возможно.
В первую очередь вам надо настроить VirtualHostы вашего web сервера (Apache).
Необходимо произвести следующие настройки:
1. Заведите необходимое количество виртуальных хостов (файл httpd.conf вашего Apache
сервера):
Файл: httpd.conf
<VirtualHost *:80>
ServerAdmin admin@mydomain.com
ServerName mydomain.com
DocumentRoot /var/www/se2
ErrorLog /var/log/httpd/local-error_log
CustomLog /var/log/httpd/local-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin admin1@mydomain.com
ServerName site1.mydomain.com
DocumentRoot /var/www/se2
ErrorLog /var/log/httpd/local-error_log
CustomLog /var/log/httpd/local-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin admin2@mydomain.com
ServerName site2.mydomain.com
DocumentRoot /var/www/se2
ErrorLog /var/log/httpd/local-error_log
CustomLog /var/log/httpd/local-access_log common
</VirtualHost>

<Directory "/var/www/se2/">
AllowOverride All
</Directory>

# Пути могут не совпадать, необходимо указывать правильные локальные пути на вашем сервере.

Как видно из параметров DocumentRoot для всех сайтов ведет на один и тот же каталог.
Движок сам распознает запрошенный домен и загрузит необходимый конфигурационный
файл, что позволит применять разнообразные параметры описанные в предыдущем разделе, для
разных доменов. Разные Темы позволяют сделать внешне разные сайта. И у посетителей сложится
впечатление посещение разных сайтов.

8
Документация по использованию ShopEngine 2

3. Создание "Темы" (Дизайна вашего сайта)


3.1 Что такое "Тема" и как это работает
Итак "Тема" это набор файлов - страниц, которые видит пользователь. Если в создадите
файл и именем filename.tpl в корневой директории текущей темы1, то при обращении
http://mydomain.com/filename.php посетитель увидит именно содержимое данного файла (шаблона2)
обработанного шаблонизатором3.
Что это значит.
Это значит что если вы хотите создать новую страницу на вашем сайте, вам достаточно
создать шаблон данной страницы в текущей теме. Вас при этом никто не ограничивает от
использования include директив шаблонизатора, для вставки содержимого другого шаблона в
текущий. Это позволяет вам создать привычную вам структуру (Шапка - содержимое - Низ (Head -
body - foot)). Давайте теперь определимся как в шаблон добавлять какие либо данные из движка
магазина.

1
Текущая тема – это тема имя которой указано в конфигурационном файле, влияющим на данный домен.
2
Шаблон – файл представляющий собой html файл с включенными в него инструкциями шаблонизатора.
3
Шаблонизатор – движек, который обрабатывает файлы шаблона, находит в них скрытые инструкции и
производит упомянутые действия. Результат работы шаблонизатора отдается пользователю ввиде html
страницы. В SE2 в качестве шаблонизатора используется smarty - подробнее о нем вы можете узнать на
http://www.smarty.net. На том же сайте вы найдете подробную инструкцию и руководство по написанию

9
Документация по использованию ShopEngine 2

3.2 Стандарты написания шаблонов.


Итак, мы уже разобрались, что каждая страница сайта имеет свой шаблон, файл и таким же
именем как запрашиваемая страница, но с другим расширением (.tpl). Для правильного
взаимодействия данных движка и шаблонами (запоминание вводимых пользователем данных,
добавление товаров в корзину и т.д.) есть правила именование полей форм, которые отправляются
на сервер при нажатии разных кнопок (add to cart и т.д.). Также есть стандарты написания
некоторых страниц, и некий набор правил, облегчающий разработку новой темы. Давайте на них
остановимся подробнее.

3.2.1 Общие правила для всех страниц сайта.


Для корректной работы вашего сайта, и дабы исключить нестандартные ситуации, давайте
договоримся что в корневом каталоге темы должны лежать только те файлы шаблонов которые
отвечают за конкретную страницу. А остальные дополнительные файлы шаблонов (например,
шаблон шапки сайта), мы будем размещать в каталоге /data/ находящимся в корневом каталоге
темы. Также необходимо выделить отдельный каталог для используемых картинок, стилей, флэш
объектов. То есть структура каталогов вашей темы должна выглядеть следующим образом:

css Каталог с файлами стилей


data Каталог со вспомогательными шаблонами
img Каталог с изображениями дизайна
modules Обязательный каталог, в котором хранятся шаблоны модулей.
pages Тут будем хранить сверстанные статичные страницы, такие как
faq , privacy police и т.д.
swf Флэш объекты используемые в теме
temp Обязательный каталог, в котором шаблонизатор хранит
скомпилированные версии ваших шаблонов.
Как вы видите, из обязательных каталогов не должны меняться или отсутствовать только 2
каталога modules и temp. Остальные вы можете переименовать, или не создавать, или создать и
другие каталоги. Но мы все таки советуем вам привыкнуть к такому расположению каталогов, хотя
бы из-за того, что стандартные темы поставляемые с движком будут придерживаться данного
стандарта. Вам проще будет потом ориентироваться в темах созданных не вами.
При написании шаблона не забывайте указывать полный путь к картинкам
/themes/имя_шаблона/img/имя_картинки.
Если вы планируете использовать стандартный механизм добавления товаров в корзину, то
в каждой странице должен быть вставлен следующий код:
<script type="text/javascript" src="/themes/card.js"x/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>
<form id="add_item_to_cart_from" method="POST" action="/cart.php">
<input type="hidden" name="item_id" value="" />
<input type="hidden" name="daction" value="add"/>
<input type="hidden" name="save_position" value="{:if $current_page == 'cart':}no{:else:}yes{:/if:}" />
<input type="hidden" name="{:$session.varname:}" value="{:$session.id:}" />
</form>

В таком случае для добавления товара в корзину, вернее формирования ссылки добавления

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.

Таблица принятых имен страниц, которые лучше не менять


Критичность
Имя страницы Файл шаблона Описание
смены имени.
index.php index.tpl Главная страница сайта КРИТИЧНО
cart.php cart.tpl Корзина заказов КРИТИЧНО
item.php item.tpl Страница с описанием товаров критично
group.php group.tpl Страница с товарами критично
выбранной группы
search.php search.tpl Страница поиска товаров критично
alLproducts.php alLproducts.tpl Страница со всеми продуктами не критично
antispam_policy.php antispam_policy.tpl Страница политика анти - спама не критично
contacts.php contacts.tpl Страница формы контактов не критично
faq.php faq.tpl Страница часто не критично
задаваемых вопросов
item_price.php item_price.tpl Всплывающее окно с не критично
дочерними товарами при нажатии
на ссылке заказать родительский
товар
moneyback_policy.php moneyback_policy.tpl Страница политики не критично
возвращения денег
privacy_policy.php privacy_policy.tpl Страница политики безопасности не критично
shipping_policy.php shipping_policy.tpl не критично
Также присутствуют зарезервированные системой, имена шаблонов. То есть файлы с
такими именами нельзя создавать.
Список зарезервированных имен: kaptcha.tpl, process_order.tpl, checker1.tpl, checker2.tpl,
checker3.tpl, checker4.tpl

3.2.2 Правила написания шаблона страницы item.php


Имя шаблона item.tpl – не переименовывать. Переименование повлечет некорректную
работу ссылок возвращаемых в данных модулей. Если вы все ссылки генерируете сами, то можете
переименовать данный файл.

3.2.3 Правила написания шаблона страницы group.php


Имя шаблона group.tpl – не переименовывать. Переименование повлечет некорректную
работу ссылок возвращаемых в данных модулей. Если вы все ссылки генерируете сами, то можете
переименовать данный файл.

3.2.4 Правила написания шаблона страницы search.php


Имя шаблона search.tpl – не переименовывать. Переименование повлечет некорректную
работу ссылок возвращаемых в данных модулей. Если вы все ссылки генерируете сами, то можете

11
Документация по использованию ShopEngine 2
переименовать данный файл.

3.2.5 Правила написания шаблона страницы contacts.php


Имя шаблона contacts.tpl.
На данной странице расположена форма отправки сообщения в службу поддержки.
Для корректной работы движка, имена полей формы четко стандартизованы и не могут быть
изменены.
Таблица имен полей формы отправки сообщения службе поддержки.
Поле Имя поля
Имя отправителя name
Email отправителя email
Тип месенджера messenger
Номер мессенджера messenger_contact
Текст сообщения text
Код kcaptcha keycode
Данные формы должны отправляться методом POST. Для получения изображения кода
kcapthca используйте следующий html код вывода картинки:
<img src="/kaptcha.php" alt="" style="border:1px solid #CCCCCC">

3.2.6 Правила написания шаблона страницы cart.php


Имя шаблона cart.tpl – не переименовывать.
На данной странице расположена форма обновления данных в корзине. Для корректной
работы движка, имена полей формы четко стандартизованы и не могут быть изменены.
Таблица имен полей формы товаров в корзине.
Поле Имя поля
Количество товара item_quantity[код_товара]
Код скидки по discount_code
дисконту
Переключатель delivery
типа доставки
Данные формы должны отправляться POST методом.
Для обновления данных в корзине, кнопку необходимо реализовать подобным образом:
<INPUT TYPE="image" onclick="return cart_update();" name="update" src="/themes/blue/img/update_cart.gif" value="update">

Для удаления товара из корзины ссылку необходимо реализовать следующим образом:


<a href="cart.php?del={:$item.id:}" onclick="return delete_item_from_cart('{:$item.id:}');">delete</a>

12
Документация по использованию ShopEngine 2

3.3. Использование модулей


В движке SE2 есть четко определенная модульная структура. Каждый модуль определяет
некий набор действий над доверенной ему частью(Список модулей и их действий см. ниже). В
шаблоне вы можете обратиться к модулям SE2 для получения каких либо данных, или
произведения каких либо действий. Для вызова действия модуля используется функция
шаблонизатора se_module, вот в таком синтаксисе:
{:se_module module="Имя модуля" action="Имя действия" дополнительные параметры:}

Рассмотрим пример:
Вам необходимо вывести Суммарную Цены товаров в корзине и количество находящихся в
ней товаров.
файл: /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. Модули

3.4.1 Модуль "cart"


При вызове любого метода, происходит вызов скрытого метода, по обновлению данных корзины.
Проверяются следующие данные в $_POST массиве (пришедшие POST методом при запросе
страницы).
Если переданы переменные item_id и daction, то в зависимости от значения переменной
daction происходит:
7. Если daction = add то добавление товара и идентификационным номером item_id в корзину (в
случае существование в корзины товара с данным идентификационным номером,
происходит увеличение кол-ва товара).
8. Если daction = delete, то удаление из корзины товара с идентификационным номером
item_id.
Если передана переменная item_quantity, то происходит изменение кол-ва товаров описанных
в данной переменной. Переменная представляет собой ассоциативный массив, ключами которого являются
идентификационные номера товаров, а значением их количество.
Если передана переменная discount_code, то производится сохранение дисконтного кода и
высчитывание размера скидки в процентах, по данному дисконту.
Если передана переменная save_position и ее значение равно yes, то происходит сохранение
страницы с которой пришел пользователь в переменную referrer_position (см. метод item_data).
Если передана переменная delivery, то происходит сохранение типа доставки, имя которого
равно значению переменной delivery.

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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<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

3.4.2 Модуль "item"


Предоставляет данные о товарах и группах.

метод 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":}

{:foreach item="group" from=$glist:}


<!-- Обращаемся к движку для импорта данных из группы товаров -->
{:se_module module="item" action="group_data" group_id=$group.id var_name="group_data":}
<div id="title_center_2"><img src="/themes/blue/img/group_{:$group.id:}_title.gif" alt="{:$group.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><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:}
{:/foreach:}

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 – является ли товар составным.
В случае ошибки, результат выглядит:

Ключ массива Описание значения


error_message Сообщение об ошибке
Пример использования:

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
В случае ошибки, результат выглядит:

Ключ массива Описание значения


error_message Сообщение об ошибке
Пример использования:
файл: /themes/blue/item_price.tpl
<!-- Обращаемся к движку для импорта данных о товаре -->
{:se_module module="item" action="item_data" group_id="auto" var_name="item_data":}
...
<div id="title_center_2">
<img src="/themes/blue/img/group_{:$item_data.group.id:}_title.gif" alt="{:$item_data.group.name:}">
</div>
<div id="single_product_top"></div>
<div id="single_product_description">
<div class="info">
<img src="/thumbs/{:$item_data.id:}_big.jpg" alt="{:$item_data.name:}" align="left">
<div class="product_name">{:$item_data.name:}</div>
<div class="description">{:$item_data.small_description|truncate:500:"...":true:}</div>
</div>
</div>
<div id="single_product_description_separator"></div>
<table width="100%" cellpadding="0" cellspacing="0" id="item_price_list">
{:foreach name=children key=key item=child from=$item_data.packages:}
<tr>
<td class="number_of_pills">{:$child.name:}</td>
<td class="price">${:$child.price:}</td>
<td class="price_per_pill">${:$child.price_per_item:} per pill</td>
<td class="discount">{:if $child.save_money != 0:}Your save: ${:$child.save_money:}{:/if:}</td>
<td class="button">
<a onClick="return add_item_to_cart('{:$child.id:}',true);" href="cart.php"><img src="/themes/blue/img/add_to_cart.gif"></a>
</td>
</tr>
{:/foreach:}
</table>

28
Документация по использованию ShopEngine 2

3.4.3 Модуль "settings"


Предоставляет данные из конфигурационного файла данного домена.

метод 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

3.4.4 Модуль "contacts"


Предоставляет данные из конфигурационного файла, данного домена.

метод send_data
Описание:
Отправляет сообщение посетителя на email адрес сайта поддержки. Отправление сообщение
происходит в том случае, когда в POST данных присутствует переменная email. Также
используются следующие переменные из POST данных:

Имя переменой Описание значения


email E-mail адрес автора сообщения
keycode Код Kcaptcha для защиты от ботов.
messenger Тип используемого мессенджера
messenger_contact Номер месенджера
text Текст сообщения
name Имя отправителя
Параметры:
var_name - не обязательный параметр, который сообщает, что данные нужно вернуть в
переменной с именем указанным в var_name. Если параметр не передан, то данные
возвращаются в переменной с именем module_data
Результат:
Возвращается ассоциативный массив.
Ключ массива Описание значения
subject В случае отправки, тема отправленного сообщения, иначе пустая
строка.
title Сообщение об успешной отправке или произошедшей ошибке.
message В случае отправки, тело отправленного сообщения, иначе пустая
строка.
from В случае отправки, адрес отправителя, иначе пустая строка.
to В случае отправки, адрес на который было послано сообщение, иначе
пустая строка.
Пример использования:

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

3.4.5 Модуль "userseans"


Предоставляет данные о сеансе посетителя.

метод 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

3.4.6 Модуль "search"


Предоставляет данные для поиска и функционирование поисковой системы сайта.

метод 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%">&nbsp;</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

3.4.7 Модуль "navigation"


Предоставляет данные для поиска и функционирование поисковой системы сайта.

метод menu
Описание:
Вставляет в месте вызова – линейку навигационные меню.
Параметры:
template - не обязательный параметр который сообщает что нужно использовать именной
шаблон модуля с именем template. Если параметр не передан, то используется шаблон с
именем 'clear.tpl'.
name – Имя меню которое необходимо вывести. Параметры меню берутся из
конфигурационного файла. Существует также меню, с именем MAIN – которое если не
определено в конфигурационном файле генерируется автоматически. Меню MAIN имеет
вложенную структуру, состоящую из имен групп (Родительский элемент), и имен товаров в
данных группах (дочерние элементы).
Данные поступающие в шаблон:
В шаблон передается переменная menu – являющаяся ассоциативным массивом. Массив
содержит следующие ключи:

Ключ массива Описание значения


type Тип меню. Может принимать одно из двух значений
line и dual.
line – одно-уровневое меню,
dual – меню со вложенными элементами.
items Массив элементов меню.
Элементы массива представлены в виде
ассоциативного массива с ключами:
для type=line
name – имя пункта меню
link – ссылка на страницу
для type=dual:
ключе массива представлены в виде имен групп.
Значения представлены ассоциативными массивами
с ключами:
name – Имя группы
link – ссылка на страницу
items – Массив вложенных пунктов меню, элементы
представлены массивами аналогичными по структуре с
элементами при type=line.
Пример использования:
файл: /themes/blue/data/header.tpl
...
<div id="top_menu">
{:se_module module="navigation" action="menu" template="navigation_top" name="TOP":}
</div>
...
{:se_module module="navigation" action="menu" template="navigation_main" name="MAIN":}
<div id="support"><a href="/contacts.php"><img src="/themes/blue/img/support.gif"></a></div>

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

3.4.8 Модуль "order"


Предоставляет данные и методы для оформления заказа, и сохранения его для
последующей обработки.
При вызове любого метода кроме clear_order_data, происходит вызов скрытого метода, по
сохранению данных введенных пользователем в форму оформления заказа, и полученных методом POST.
Проверяются следующие данные в $_POST массиве (пришедшие POST методом при запросе
страницы).
Если переданы переменные:
street, city, zip, state, country, phone1, phone2, phone3, phone4, email, email2, messenger,
method_by происходит их сохранение6.
Если передана переменная client_time – она сохраняется под именем time.
Если переданы переменные:
gender, DOB_Day, DOB_Month, DOB_Year, Weight_Measure, Weight, Height, received,
medicalConditions, currentMedications, plannedMedications, allergies, surgeries, medicalHistory,
haveConditions, nitroglycerine, sexualDysfunction происходит их сохранение в переменной survey -
являющейся ассоциативным массивом где в качестве ключей используются имена полученных переменных.
Если переданы переменные:
cc_cardholder, cc_card_no, cc_exp_m, cc_exp_y, cc_cvc, cc_comments происходит их
сохранение в переменной СС - являющейся ассоциативным массивом где в качестве ключей используются
имена полученных переменных без префикса cc_.
Если переданы переменные:
check_your_name, check_bank_name, check_account_owner, check_account_number,
check_routing_number, check_comments происходит их сохранение в переменной ECHECK - являющейся
ассоциативным массивом где в качестве ключей используются имена полученных переменных без префикса
check_.

6
Описание данных переменных можно посмотреть в описании результата выполнения метода user_data. Имена переменных
совпадают с именами ключей. Отличаются только имена переменных связанных с данными оплаты, у них появляется префикс
cc_ - для данных о кредитной карте и check_ - Для данных по чеку. Также переменная client_time сохраняется под именем
time.

39
Документация по использованию ShopEngine 2

метод site_data
Описание:
Возвращает данные о сайте и странице оформления заказа.
Параметры:
var_name - не обязательный параметр, который сообщает, что данные нужно вернуть в
переменной с именем указанным в var_name. Если параметр не передан, то данные
возвращаются в переменной с именем module_data.
Результат:
В результате возвращается ассоциативный массив со следующими ключами:

Ключ массива Описание значения


siteid Идентификационный номер сайта.
page Номер страницы оформления заказа (1-3).
return_path Путь с которого пользователь ушел в корзину, используется
для ссылки continue shop и возврата на сайт.
Пример использования:
файл: /themes/blue/process_order.tpl

{:se_module module="order" action="site_data" var_name="order_main":}

<td ...>

{:if $order_main.page=="2":}
<a href="javascript:document.main form.onsubmit=null; document.main_form.topage.value=1; document.main_form.submit()">
<img src=7themes/images/b_prev.gif" border="0" />
</a>
{:else:}
<a href="{:$order_main.return_path:}"><img src=7themes/images/b_cont.gif" width="131" height="24" border="0" /></a>
{:/if:}
</td>
<td valign="top">
<div align="right" style="margin-top:22px; margin-bottom:22px;">
<img src=7themes/images/t_order.gif" width="100" height="15" />
</div>
{:if $order_main.page == 1:}{:include file="data/order_step1.tpl":}{:/if:}
{:if $order_main.page == 2:}{:include file="data/order_step2.tpl":}{:/if:}
{:if $order_main.page == 3:}{:include file="data/order_step3.tpl":}{:/if:}
</td>

40
Документация по использованию ShopEngine 2

метод user_data
Описание:
Возвращает данные которые ввел пользователь, заполняя форму заказа, на разных страницах
при оформлении заказа.
Параметры:
var_name - не обязательный параметр, который сообщает, что данные нужно вернуть в
переменной с именем указанным в var_name. Если параметр не передан, то данные
возвращаются в переменной с именем module_data.
Результат:
В результате возвращается ассоциативный массив со следующими ключами:

Ключ массива Описание значения


full_name Имя заказчика
street Улица
city Город
zip Индекс
state Штат
country Страна
phone1 Первая часть телефонного номера (x-xxx-xxx-xxxx)
phone2 Вторая часть телефонного номера (x-xxx-xxx-xxxx)
phone3 Третья часть телефонного номера (x-xxx-xxx-xxxx)
phone4 Четвертая часть телефонного номера (x-xxx-xxx-xxxx)
email Адрес электронной почты
email2 Альтернативный адрес электронной почты
messenger Номер месенджера
method_by Тип покупки (кредитная карта CC, чек ECHECK)
time Время пользователя
CC Данные о кредитной карте. Представляют из себя
ассоциативный массив, со следующими ключами:
cardholder – Имя владельца карты
card_no – Номер карты
exp_m – Месяц окончания срока действия карты
exp_y – Год окончания срока действия карты
cvc – контрольный номер cvc
comments – комментарий пользователя
ECHECK Данные по чеку. Представляют из себя ассоциативный
массив, со следующими ключами: your_name – Имя
владельца bank_name – Имя банка account_owner – Имя
владельца аккаунта account_number – Номер аккаунта
routing_number – Номер comments – комментарий заказчика
survey Данный медицинского опроса пользователя.
Представляют из себя ассоциативный массив, со
следующими ключами:
gender – пол заказчика
DOB_Day – день рождения
DOB_Month – месяц рождения
DOB_Year – Год рождения
Weight – Рост
Weight_Measure – Единицы измерения роста
Height –

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

5. Frequently Asked Questions


5.1. Как убрать товары с shopengine
Нужно просто удалить вывод товара на страницах бестселлеров, категорий, из выдачи
поиска, со страницы all_products.php. Для примера возьмем тему 'green' и товар cialis (id=156).
Файл group.tpl
Уберем cialis со страницы категории. Находим цикл, в котором выводятся товары группы:
{:foreach name=items item=item from=$group_data.items:}

{:/foreach:}

Чтобы удалить 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:}

делаем все аналогично


{:foreach name=items key=key item=item from=$search_data:}
{:if $item.id != 156:}

{:/if:}
{:/foreach:}

all_products.tpl, data/bestsellers_items.tpl (то что выводится на первой странице), bestsellers.tpl


страницы редактируются аналогичным образом.
Если нужно сделать недоступной саму страницу /item/cialis.html по прямому запросу, можно
сделать, например, в файле item.tpl после инструкции
{:se_module module="item" action="item_data" item_id="auto" var_name="item_data":}
(лучше перенести ее в начало файла, если она еще не там)
можно сделать например переадресацию на индексную страницу (или на любой адрес по
желанию). для этого вставим такой код:
{:se_module module="item" action="item_data" item_id="auto" var_name="item_data":}

{:if $item_data.id == "156":}


{:php:}
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://ваш_домен.com/");
{:/php:}
{:else:}
здесь продолжается код, который был после инструкции
{:se_module module="item" action="item_data" item_id="auto" var_name="item_data":}.
в самом конце файла не забудьте поставить
{:/if:}

46
Документация по использованию ShopEngine 2

5.2. Смена URL


Смена URL возможна для страницы категории и страницы товара.
· Пример для страницы категории:
group/antibiotics.html меняем на primer/antibiotics.html
В файле _cnf/default/config.inc найдите массив $SDATA['REWRITE_URLS'], в нем строку
'group' => array('template'=>'group','module'=>'item','rewrite_action'=>'re_group_id'), отредактируйте так
'primer' => array('template'=>'group','module'=>'item','rewrite_action'=>'re_group_id'),
В файле core/modules/item.module.cls.php в 46 строке
$link = '/group';
Отредактируйте так
$link = '/primer';
· Пример для страницы товара
item/viagra.html меняем на order/viagra.html
В файле _cnf/default/config.inc найдите массив $SDATA['REWRITE_URLS'], в нем строку
'item' => array('template'=>'item','module'=>'item','rewrite_action'=>'re_item_id'), отредактируйте так
'order' => array('template'=>'item','module'=>'item','rewrite_action'=>'re_item_id'),
В файле core/modules/item.module.cls.php в 19 строке
$link = '/item';
Отредактируйте так
$link = '/order';

47

Оценить