Прикрепленные файлы

Прикрепленные файлы

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

Плагин удобно использовать для раздачи файлов, имеющих отношение к предлагаемому товару — драйверов, обновлений прошивок, инструкций и т.д.

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

Показ списка файлов с помощью хука

Список файлов можно показать в месте, предусмотренном для хука frontend_product.block или frontend_product.block_aux на выбор. Выбрать можно в настройках плагина. Там же можно отредактировать шаблон, который будет показан. В шаблоне доступна переменная $attachments, представляющая из себя массив данных о прикрепленных файлах. Структура

    $attachments = array(
        array
(
           
'id'          => $id,   /* ID записи */
           
'name'        => $name, /* имя файла */
           
'ext'         => $ext,  /* расширение файла */
           
'description' => $desc  /* описание файла */
           
'size'        => $size, /* размер файла в байтах */
           
'url'         => $url   /* ссылка на файл */
       
),
   
);
   

Поддержка тем дизайна и нескольких витрин

Для показа блоков в хуках или по вызову хелпера плагин использует шаблон темы дизайна, который называется plugin.syrattach.attachments.html. Если такого шаблона в теме дизайна нет, то плагин может либо вообще ничего не показывать, либо использовать свой встроенный шаблон. Как поступать в случае, если в теме дизайна нет шаблона для плагина решать вам — настройка «Витрина без шаблона» позволяет указать, что делать в этой ситуации.

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

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

Встроенный хелпер

В плагин встроен хелпер, позволяющий получить массив файлов прикреплённых к товару или готовый html-код для вставки в произвольное место шаблона страницы товара.

Использование и методы хелпера

Для Shop-Script 8.17 и новее. В шаблонах тем дизайна современных версий Shop-Script хелпер плагина вызывается так (описания обязательных и необязательных параметров см. ниже):

  • {$wa->shop->syrattachPlugin->getList()} — для вызова метода getList()
  • {$wa->shop->syrattachPlugin->render()} — для вызова метода render()

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

Для устаревших версий Shop-Script. Методы хелпера вызываются так:

  • {syrattachPlugin::getList()} — для вызова метода getList()
  • {syrattachPlugin::render()} — для вызова метода render()

Метод хелпера getList($product_id)

Используйте этот метод для получения списка приложенных к товару с указанным id файлов. Структура результата аналогична той, которая передаётся в шаблон (см. выше)

Параметры:

  • int $product_id — id товара, для которого необходимо получить список приложенных файлов. Обязательный

Примеры:

получение списка файлов для товара с ID=905

{$files = $wa->shop->syrattachPlugin->getList(905)}

получение списка файлов в шаблоне карточки товара:

{$files = $wa->shop->syrattachPlugin->getList($product.id)}

Метод хелпера render($product_id, $force_on_empty)

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

Второй, необязательный, параметр задает поведение в случае, если у товара нет ни одного прикрепленного файла. По умолчанию в этом случае шаблон не обрабатывается
и хелпер возвращает пустую строку (чтобы не тратить время на парсинг шаблона). Если передать true, то шаблон будет обработан в любом случае.

Параметры:

  • int $product_id — id товара, для которого необходимо получить список приложенных файлов. Обязательный
  • bool $force_on_empty — нужно ли обрабатывать шаблон, если к товару не прикреплено ни одного файла. необязательный

Примеры:

отображение списка файлов для товара с ID=905

{$wa->shop->syrattachPlugin->render(905)}

отображение списка файлов в шаблоне карточки товара:

{$wa->shop->syrattachPlugin->render($product.id)}

Дублирующиеся имена файлов

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

Импорт из CSV

При импорте данных о товарах из CSV можно сразу прикреплять файлы.

  1. Создайте на сервере, в файл-менеджере приложения Сайт (или еще как-нибудь), папку wa-data/public/site/syrattach
  2. Загрузите в эту папку файлы, которые должны быть прикреплены к товарам
  3. В файле CSV, предназначенном для импорта, добавьте одну (или несколько) колонок «Прикрепленный файл».
  4. В строке с товаром укажите в этом столбце имя файла из папки wa-data/public/site/syrattach, который нужно прикрепить к этому товару

Внимание! Прикрепляемый файл должен быть строго в указанной папке. URL не поддерживаются. Указание вложенных папок тоже.

После завершения импорта файлы из папки wa-data/public/site/syrattach можно удалять.

При импорте никакие файлы не удаляются. При повторном импорте, так же как при загрузке файла с дублирующемся именем, файлы с одинаковыми именами не перезаписываются, новый файл добавляется с измененным именем.

Опубликовано: 30 мая 2021