Ви переглядаєте документацію для ocStore 1.5. Актуальна версія — ocStore 3.0.

Розробка нових каналів просування

До ядра ocStore входить кілька корисних каналів просування (product feeds), але вам може знадобитися власний формат, і тоді канал доведеться написати самостійно. Розробка каналу дуже схожа на розробку модулів і є добрим способом розібратися, як насправді працюють основи ocStore. Як і решта системи, канали побудовані за шаблоном MVC-L. У цьому посібнику описано, як за допомогою кожного з компонентів MVC-L створити адміністративну і публічну частини каналу.

Адміністративна частина каналу#

Власник магазину, який користується вашим каналом, захоче налаштовувати його в адмінці: вмикати й вимикати канал і змінювати доступні параметри. Як розробник, ви маєте створити сторінку адмінки, на якій редагуються ці налаштування.

Усі файли адмінки розташовані в теці admin/. У ній є чотири теки:

  1. controller
  2. view
  3. language
  4. model

Кожному каналу потрібно щонайменше по одному файлу в теках view і controller. Деяким знадобляться також файли в теках model і language. Зазвичай усі ці файли мають однакову назву, лише файл представлення має інше розширення (.tpl). Розгляньмо їх по черзі.

Контролер#

Першим створіть контролер сторінки налаштувань каналу. ocStore знаходить канали автоматично, читаючи теку admin/controller/feed вашого магазину. Будь-який канал, файл якого лежить у цій теці, автоматично з'явиться на сторінці Каналів просування і на сторінці прав доступу груп користувачів. Назвіть файл контролера, наприклад, my_feed.php; клас у ньому має називатися ControllerFeedMyFeed.

Контролер містить метод public function index(). Це публічно доступна «сторінка», яка відкривається за посиланням «Змінити» і на яку надсилається форма з представлення. У цьому методі обробляються надіслані дані й зберігаються в таблицю setting бази даних (зазвичай через модель setting/setting).

Також можна визначити метод public function install() — він викликається, коли на сторінці Доповнення > Канали просування натискають «Встановити». Аналогічно метод public function uninstall() викликається при натисканні «Видалити». У цих методах можна створювати й прибирати структури, потрібні каналу (наприклад, таблиці бази даних чи параметри конфігурації). Добра практика — завжди мати метод uninstall(), який прибирає всі зміни, внесені каналом.

Представлення#

Другий обов'язковий файл адмінки — файл представлення. Його створюють у теці admin/view/template/feed з розширенням .tpl, як і всі представлення ocStore. У ньому розміщують форму, яку користувач заповнює й надсилає; вона надсилається в метод index контролера каналу. Найпростіше скопіювати подібне наявне представлення (наприклад, google_base.tpl) і змінити форму під параметри вашого каналу. Назвіть файл, наприклад, my_feed.tpl.

Мовні файли#

Третій файл, який зазвичай потрібен, — мовний. Для кожної мови, яку підтримує канал, потрібен окремий файл у теці admin/language/<назва мови>/feed. Він містить PHP-асоціативний масив $_, де ключ — внутрішня назва, а значення — переклад. Назвіть файл my_feed.php, як і контролер та модель.

Модель#

На боці адмінки модель каналам потрібна рідко. Проте якщо канал використовує власну таблицю бази даних або нестандартний запит для формування даних у певному форматі, модель може знадобитися — наприклад, з методом, який створює додаткову таблицю в базі ocStore. Файл моделі розміщують у теці admin/model/feed і називають, наприклад, my_feed.php, як контролер і мовний файл.

Публічна частина каналу#

Публічна частина каналу влаштована за тим самим принципом, що й адмінка. Що саме міститимуть файли, залежить від призначення каналу. Канал може використовувати будь-які наявні моделі ocStore — не потрібно писати власні запити, якщо такий запит уже є. Наприклад, модель catalog/product містить багато корисних методів для вибірки товарів. Користуйтеся ними замість того, щоб винаходити велосипед.

Контролер публічної частини розміщують у теці catalog/controller/feed (наприклад, catalog/controller/feed/my_feed.php), а сам канал доступний за адресою index.php?route=feed/my_feed. Стандартні канали google_base і google_sitemap не використовують шаблон: вони формують XML прямо в контролері, задають заголовок Content-Type і віддають результат через $this->response->setOutput(). Якщо вам усе ж потрібен шаблон, його розміщують у теці catalog/view/theme/<назва теми>/template/feed. Ця структура тек глибша, ніж в адмінці, через теми: у магазині ocStore може бути багато тем вітрини, але лише один шаблон адмінки.

У публічній частині налаштування, збережені каналом, доступні через об'єкт config контролера, наприклад $this->config->get('my_feed_status'). На їх основі можна керувати тим, що й як віддає канал.

Сторінку перекладено й адаптовано для ocStore з посібника OpenCart 1.5 Documentation by HostJars. Ліцензія — CC BY 3.0.