Вывод в теме
Обновлено
Автоматическое подключение
Плагин подключает готовые формы через события Shop-Script. Тема должна выводить результат соответствующего события.
| Событие | Что возвращает плагин |
|---|---|
backend_order |
Блок в секции info_section карточки заказа в Магазине |
frontend_my_order |
Блок на странице заказа в личном кабинете |
checkout_render_auth |
Форму после контактных данных при соответствующем выборе «Оформление заказа» |
checkout_render_payment |
Форму после выбора оплаты при соответствующем выборе «Оформление заказа» |
checkout_render_confirm |
Форму после подтверждения при соответствующем выборе «Оформление заказа» |
frontend_checkout |
Форму на шаге confirmation старого пошагового оформления |
События оформления обрабатываются только с премиум-лицензией. Значение «Нет» выключает форму оформления. Событие order_action.create привязывает временные файлы к созданному заказу; оно не выводит интерфейс.
Если блок не появляется при верных настройках, разработчику нужно проверить вызов и вывод нужного события в теме. Хелперы ниже возвращают данные, а не готовую форму загрузки.
Получить файлы заказа
Сигнатура метода:
shopOrderattachHelper::getFiles($order_id, $frontend = false);$order_id — внутренний идентификатор заказа Shop-Script. Значение true во втором аргументе формирует ссылки для витрины, false — ссылки для бэкенда. При пустом идентификаторе возвращается пустой массив. Записи сортируются по id по возрастанию.
Пример для шаблона страницы заказа на витрине, в который передан внутренний идентификатор заказа $order_id:
{if !empty($wa->shop->orderattachPlugin->version())}
{$files = shopOrderattachHelper::getFiles($order_id, true)}
{if !empty($files)}
<ul>
{foreach $files as $file}
<li>
<a href="{$file.url|escape}">{$file.name|escape}</a>
</li>
{/foreach}
</ul>
{/if}
{/if}Размещайте этот код в контексте заказа, доступ к которому уже проверен приложением. Сам хелпер получает файлы по переданному идентификатору и не проверяет права текущего покупателя.
Поля результата
| Поле | Содержимое |
|---|---|
id |
Идентификатор записи файла |
order_id |
Идентификатор заказа; до создания заказа используется идентификатор сессии |
name, original_filename |
Исходное имя загруженного файла |
filename |
Имя сохранённого файла на диске с добавленной уникальной частью |
url |
Ссылка для выбранного режима витрины или бэкенда |
size |
Размер в байтах |
ext |
Расширение файла |
upload_datetime |
Дата и время загрузки |
uploaded_by_user |
1 для загрузок с витрины, 0 для загрузок из Магазина |
temporary |
1 для временной загрузки, 0 после привязки к заказу |
available_for_user |
Поле базы данных; при загрузке записывается 1, хелпер по нему список не фильтрует |
hash |
Хеш файла, используемый в ссылке витрины |
status |
Строка finished, добавляемая хелпером для компонента списка |
В режиме витрины url содержит путь вида plugin/orderattach/download/<file_id>/<hash>/ с префиксом приложения. Второй аргумент true меняет формат ссылки, но не фильтрует файлы и не проверяет лицензию или настройки показа.
Получить настройки
shopOrderattachHelper::getSettings();Метод возвращает массив, индексированный техническими именами настроек. Значение находится в поле value; у переключателей это строки "true" и "false", а не логические значения PHP.
Пример чтения заголовка:
{if !empty($wa->shop->orderattachPlugin->version())}
{$settings = shopOrderattachHelper::getSettings()}
{$settings.section_title.value|escape}
{/if}При самостоятельном выводе учитывайте «Статус плагина» и настройки нужной страницы: хелперы не применяют их автоматически.
Шаблоны интерфейса
В составе установленного плагина используются:
templates/actions/backend/BackendOrder.html
templates/actions/frontend/FrontendCheckout.html
templates/actions/frontend/FrontendMyOrder.htmlОни передают данные в JavaScript-компоненты и подключают собранные скрипты форм. Код обращается к этим шаблонам по пути внутри плагина; отдельного механизма переопределения копированием файла в тему в продукте нет. Для собственного списка используйте хелпер; для диагностики отсутствующей формы проверяйте события темы.