Opencart, окрім продажу звичайних фізичних товарів, дозволяє здійснювати продаж цифрових товарів – файлів, які можна завантажити після придбання. Це стандартний функціонал, який доступний у всіх версіях платформи. Cтаття допоможе вам зрозуміти, як це працює.

Примітка. В стандартному англійському мовному пакеті використовується термін Downloads. Кацапською в різних мовних пакетах це перекладають як «Файлы для скачивания» або «Загрузки».В українських мовних пакетах також можуть бути розбіжності, тому потрібно розуміти, що наведені нижче терміни означають одне і те ж:

  • Downloads
  • Файлы для скачивания
  • Загрузки
  • Завантаження
  • Файли для завантаження
  • Файли для скачування

У статті можуть використовуватися різні варіанти для запобігання тавтології. Ілюстрації – з англомовного інтерфейсу Opencart 3.

Що таке завантаження в опенкарт?

Перша за все, це – об’єкт, який зберігається у базі даних. Кожен файл для скачування має власний ідентифікатор (download_id), який використовується для реалізації зв’язку товар-файл та, власне, завантаження цього файлу. Тобто ви не взаємодієте з фізичним файлом напряму.

Завантаження є властивістю товару і пов’язане з ним точно так само, як з товаром пов’язуються категорії, фільтри тощо. Файл для скачування не є самостійним об’єктом, ви не можете продати його окремо від товару. Також не можна купити окремі файли, прикріплені до товару.

Як опенкарт зберігає файли для завантаження

Стандартний каталог зберігання файлів - /system/storage/download/. Шлях до каталогу міститься у константі DIR_DOWNLOAD і може бути змінений у config.php. 

В базі даних збереження завантажень забезпечується такими таблицями:

  • oc_download
  • oc_download_description
  • oc_product_to_download

Схематично це виглядає так:


Пояснення до деяких полів таблиць:

download_id – унікальний ідентифікатор завантаження, створюється автоматично;

filename – під якою назвою зберігається файл на сервері. Зверніть увагу на те, що опенкарт при збереженні файлу додає до назви випадковий набір символів. Так, якщо ви створюєте завантаження з файлом file.pdf, у каталозі DIR_DOWNLOAD він матиме приблизно таку назву: file.pdf.7nVP71yFpwHUPhqvfcHkjRyJPkESssCr. Це унеможливлює прямий доступ до файлів та перезаписування файлів з однаковими типовими назвами (на кшталт manual.pdf, guide.pdf тощо);

mask – під такою назвою користувач завантажить файл

name – назва завантаження для виведення на фронті різними мовами

Як прикріпити файл до товару

1. Для початку, необхідно створити завантаження. Для цього перейдіть до розділу Каталог -> Завантаження та натисніть кнопку Додати, щоб перейти до форми створення завантаження.


2. Завантажте файл на сервер за допомогою кнопки Upload. Поля Filename та Mask заповняться автоматично. Вам залишається заповнити назву завантаження та натиснути кнопку Зберегти. 


Ви також можете вручну вказувати назву файлу у полі Filename. В цьому випадку, впевніться в тому, що файл з такою назвою присутній у каталозі /storage/download/. Випадковий вабір символів піся розширення файлу – необов’язковий елемент, якщо ви завантажуєте файли на сервер вручну.

3. Тепер, коли файл для завантаження створений, його можна прикріпити до товару. Відкрийте товар для редагування та перейдіть до вкладки Links (связи, зв’язки, посилання) і почніть вводити назву завантаження у полі Downloads. У випадаючому списку оберіть потрібний файл.


4. Збережіть товар. Це все, завантаження тепер прикріплене до товару і клієнт зможе скачати його після того, як придбає товар.

На які налаштування опенкарт варто звернути увагу

Головні налаштування opencart містять деякі налаштування, пов’язані із завантаженнями. Розглянемо їх.

Complete order status – Статуси завершеного замовлення. Клієнт зможе отримати доступ до завантаження тільки тоді, коли статус його замовлення є серед відмічених статусів у цьому полі. Налаштування знаходиться у вкладці Опції.


У вкладці Сервер є такі поля:


Вони містять списки дозволених до завантаження розширень та MIME-типів. Файл має задовольняти обидві умови, інакше опенкарт його не збереже. Перелік поширених MIME-типів можна переглянути, наприклад, на Вікіпедії.

Як клієнт отримує доступ до завантаження

Щоб отримати доступ до файлів, клієнт має придбати товар, а його замовлення – отримати статус «Завершено». Майте на увазі, що клієнт не може здійснити гостьове замовлення, якщо хоча б один товар у корзині має прикріплений файл. Реєстрація – обв’язкова, тому що доступ до завантажень здійснюється з особистого кабінету користувача.


Скачування файлу відбувається за посиланням, що має такий вигляд: https://site.com/index.php?route=account/download/download&download_id=2

Отримавши download_id, опенкарт здійснює запит до бази даних для отримання інформації про завантаження (filename, mask). Також у цей момент здійснюється перевірка, чи дійсно цей користувач придбав товар, до якого прикріплений файл. Якщо перевірка пройдена і запит повернув інформацію про завантаження, відбувається зчитування файлу filename в оперативну пам’ять і передача цих даних в барузер користувача. Браузер запропонує користувачу зберегти файл під назвою mask. Іншими словами, користувач не взаємодіє з оригінальним файлом filename напряму. Прямий доступ до файлу неможливий.

Які переваги надає модуль Розширені Завантаження

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

Отже, головні переваги:

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

2. Модуль дозволяє вивести перелік прикріплених завантажень безпосередньо на сторінці товару. Це просто зручно. Звичайно, скачати платний файл можна так само тільки після його придбання.

3. Advanced Downloads спрощує процес створення завантажень та прикріплення їх до товару. Так, створення та прикріплення здійснюються в єдиному місці у вкладці Downloads у формі редагування товару.


Всі інші можливості детально описані на сторінці модуля Розширені Завантаження.