msFile - расширение miniShop2 для продажи файлов

Расширение предназначено для продажи цифровых товаров (файлов) на основе магазина miniShop2 для MODx Revolution.

Актуальная версия: 1.0.1-pl1 выпущена 5 июня 2020г.

Приобрести расширение вы можете в магазине MODStore.pro. Стоимость расширения 1490р за использование на 1-м сайте.

Установка

Расширение зависит от FileAttach версии >= 1.0.10. В MODx Revolution начиная с версии 2.4 поддерживаются установка зависимостей, если у вас версия старше, то предварительно установите FileAttach.

Для хранения файлов создайте отдельный медиа-ресурс (далее МР). Укажите в нем basePath и baseUrl. Если вы не создадите МР, то файлы будут загружаться в корень вашего сайта, что крайне нежелательно.

После этого в системных настройках:

  • укажите номер нового МР
  • установите fileattach.private в значение "да"
  • выберите нужный подкаталог для хранения или храните файлы в корне МР
  • перечислите в fileattach.templates список шаблонов товаров, в которых будет включен интерфейс загрузки файлов. Если оставите пустым, то будет включено для всех документов.

Принцип работы

Файлы, присоединенные к продукту из закладки "Файлы" будут добавлены в список заказа после его оплаты. После оплаты файлы доступны для скачивания пользователем по специальной ссылке, в которой не отражен прямой доступ к файлу. Чтобы исключить возможность скачивания через FileAttach, файлу присваивается новый идентификатор. После того как пользователь открывает ссылку, файл в заказе отмечается как скачанный, таким образом можно определить какие файлы пользователь получил.

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

У продуктов с загруженными файлами при добавлении в корзину количество устанавливается равным 1.

Чтобы пользователь мог получить свои файлы после оплаты имеет смысл сделать вывод списка в письме уведомляющем об оплате. Для этого в чанк tpl.msEmail.paid.user добавьте конструкцию:

{block 'products'}
{parent}

<p><strong>Скачать файлы:</strong></p>
{$_modx->runSnippet('msOrderFile', ['order'=>$order.id])}
{/block}

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

{$_modx->runSnippet('msOrderFile', ['order'=>$order.id,'product'=>$product.id])}

Или вы можете отобразить список заказанных файлов в личном кабинете пользователя.

NB: На текущий момент в msFile не реализовано вложение файлов из заказа в почтовое сообщение.

Сниппет msOrderFile

Выводит список купленных файлов. Список выводится из пунктов, оформленных в чанке.

Название Значение по умолчанию Описание
&limit 0 Ограничение вывода файлов на странице. Если не указано, то вывод всех прикрепленных файлов
&product 0 Выбрать список файлов для определенного продукта
&outputSeparator   Разделитель вывода записей
&order 0 Показать файлы для заказа с номером id, если не указано, то выводятся все купленные файлы текущего пользователя
&showExt false Извлекать расширение файла
&showHASH false Получать хэш файла
&showTitle false Получить название продукта
&sortBy name Сортировать по полю
&sortDir ASC Направление сортировки
&toPlaceholder false Сохранять результат в плейсхолдер, вместо прямого вывода на странице
&tpl msFileTpl Чанк оформления каждого ряда файлов
&ext   Допустимое расширение файла для фильтра вывода
&tag   Метка файла для фильтра вывода

Допустимые переменные в чанке

Название Описание
name Название файла
fid Строковой идентификатор файла
hash Хэш файла
ext Расширение файла
url Ссылка на скачивание файла
oid Идентификатор заказа
fileid Идентификатор файла FileItem из таблицы FileAttach
description Описание файла
until Метка времени UNIX до которой будет доступен файл
product Название продукта
product_id Идентификатор продукта

Системные настройки

Вы можете автоматизировать отметку заказов как отправленных после того как пользователь скачал все файлы из заказа, для этого включите настройку mfile.autosent.

msfile.tag - метка, по которой будут отбираться файлы для добавления в приобретенные файлы.

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

Обратите внимание, что обработчик не отслеживает есть ли в заказе не цифровые товары, потому не включайте эту опцию если у вас в продаже есть товары без файлов.

Просмотр списка приобретенных файлов в управлении заказом

В окне изменения заказа во вкладке "Файлы" отображается список присоединенных файлов собранные из всех продуктов в заказе. Вкладка появляется для оплаченных заказов.

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

Ограничения

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

Уведомление о безопасности

При продаже цифровых материалов доступ к проданным файлам обеспечивается встроенными механизмами ядра MODx, компонент msFile на них не влияет.

В организации магазина рекомендую выделять покупателей в отдельную пользовательскую группу, для которой надо назначить права доступа для скачивания файлов. Права регулируются двумя параметрами: доступ к медиа-источнику и политика "FileAttach Download" (как минимум). Так же для удобства пользователей создайте страницу в кабинете пользователя, в которой будут перечислен список приобретенных файлов.

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

Выдача файлов в зависимости от свойств товара

Предположим ваш товар имеет несколько свойств на выбор пользователя, например размер или цвет. Вы можете назначить метку для товара с кодом этого свойства, а затем при выдаче ссылки произвести фильтрацию в сниппете msOrderFile по свойству &tag. Например, &tag=`синий`. Таким образом вам нужно для товара загрузить набор файлов для каждого значения свойства и задать значение метки.

Загрузка больших файлов

Ограничения по размеру могут быть установлены на нескольких уровнях.

В modX Revo: системная настройка upload_maxsize указывает допустимый размер загружаемого файла в байтах.

В PHP:

  • свойство post_max_size указывает допустимый размер данных, отправляемых методом POST
  • свойство upload_max_filesize указывает допустимый размер загружаемого файла, должно быть не больше чем post_max_size

Отладка ошибок

Если файл не скачивается или скачивается с размером 0 или 1 байт - проверьте права доступа к медиа-источнику (Меню - Контроль доступа - редактировать группу - Права доступа - Доступ к источникам файлов. Добавить источник файлов - укажите в записи соответствующие права для медиа-источника). Выполните сброс привилегий через меню.

 


Метки: filemodxразработка

Просмотров:
Опубликовано: 28.08.2017