Корисний рада: Прийняття декількох подарункових сертифікатів в OpenCart 2.0

2

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

Як створити подарунковий ваучер?

Тільки адміністратори та довірені користувачі back-end можуть створювати подарункові ваучери. Для цього OpenCart містить модуль за замовчуванням. На наступному скріншоті показано розділ, в якому користувач може створювати ваучери.

Корисний рада: Прийняття декількох подарункових сертифікатів в OpenCart 2.0

Так в чому проблема?

Якщо у нас в OpenCart за замовчуванням реалізована система ваучерів, в чому проблема? Пояснимо це за допомогою прикладу:
Нещодавно моя знайома хотіла купити через OpenCart пару предметів, вартість яких становила 800 доларів, але у неї було тільки 500 доларів і два подарункових ваучера вартістю 250 доларів кожен. Тому вона зателефонувала мені і попросила допомогти їй. Оскільки OpenCart дозволяє використовувати для покупки тільки один ваучер за раз, вона не могла купити потрібні речі.

Рішення

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

Корисний рада: Прийняття декількох подарункових сертифікатів в OpenCart 2.0

Інтернет-магазин на OpenCart!

Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!

Приступити до створення

Зміна контролера

Зміна моделі

Зміна подання

Файл контролера

Відкрийте файл catalog/controller/checkout/cart.php. Знайдіть наступний код:

if(isset($this->request->post[‘voucher’]) && $this-> valid voucher())
{
$this->session->data[‘voucher’]=$this->request->post[‘voucher’];
}

Змініть наведений вище код таким чином:

if(isset($this->request->post[‘voucher’]) && $this-> valid voucher())
{
$this->session->data[‘voucher’][$this->request->post[‘voucher’]]=$this->request->post[‘voucher’]; // creates an array for multiple vouchers
}

Файл моделі

Відкрийте файл catalog/model/total/voucher.php. Знайдіть наступні рядки коду:

$this->load->model(‘checkout/voucher’);
$voucher_info = $this->model_checkout_voucher->getVoucher($this->session->data[‘voucher’]);
if ($voucher_info) {
if ($voucher_info[‘amount’] > $total) {
$amount = $total;
} else {
$amount = $voucher_info[‘amount’];
}
$total_data[] = array(
‘code’ => ‘voucher’,
‘title’ => sprintf($this->language->get(‘text_voucher’), $this->session- >data[‘voucher’]),
‘text’ => $this->currency->format(-$amount),
‘value’ => -$amount,
‘sort_order’ => $this->config->get(‘voucher_sort_order’)
);
$total -= $amount;
}

Нам потрібно запустити зовнішній цикл для вилучення всіх ваучерів, для яких ми поставили масив в кроці 1. Ми помістимо зовнішній цикл після $this->load->model(‘checkout/voucher’);. Ми будемо обробляти через цикл Масив ваучерів сесії, щоб отримати всі ваучери, які ми застосовуємо. Код для цього повинен бути таким, як показано нижче. Зверніть увагу, що в коді розміщені коментарі, щоб його було простіше зрозуміти.

foreach (array_unique($this->session->data[‘voucher’]) as $voucher)
{ // цикл foreach вибирає всі елементи масиву і отримує унікальний ваучер
$voucher_info = $this->model_checkout_voucher->getVoucher($voucher); // fetch the order details
// Перевірка 1: Існує ваучер
if ($voucher_info) {
// Перевірка 2: Перевищує кількість ваучерів кількість замовлень, результат зберігається
if ($voucher_info[‘amount’] > $total) {
$amount = $total;
} else {
$amount = $voucher_info[‘amount’];
}
// Кінець перевірки 2
// Масив для повернення оновленої загальної суми
$total_data[] = array( ‘code’ => ‘voucher’, ‘title’ => sprintf($this->language-> get(‘text_voucher’), $voucher),
‘text’ => $this->currency->format(-$amount),
‘value’ => -$amount,
‘sort_order’ => $this->config->get(‘voucher_sort_order’)
);
// Кінець масиву
$total -= $amount; // Віднімає кількість для загальних сум по замовленню
} // Кінець перевірки 1
} // Кінець циклу Foreach

Файл подання

Відкрийте файл catalog/view/theme/default/template/checkout/voucher.tpl. Знайдіть наступний рядок коду:

Замініть її на:

Ми вирішили нашу проблему! Фактично, ми просто виконали для цього кілька простих хаків, тому нам не довелося розробляти новий модуль або розширення. Ми лише змінили кілька рядків коду.

Висновок

У цій статті ми представили успішне рішення для додавання в інтернет-магазин декількох ваучерів. Оскільки OpenCart не дозволяє покупцям за замовчуванням використовувати декілька ваучерів за раз, ми змінили код, щоб вони могли використовувати стільки ваучерів, скільки захочуть. Це допоможе клієнтам легко і просто здійснювати покупки без будь-яких проблем.

У наших наступних статтях ми впровадимо в систему OpenCart кілька реальних бізнес-інструментів, тому слідкуйте за нашими оновленнями. Спасибі за увагу!

Корисний рада: Прийняття декількох подарункових сертифікатів в OpenCart 2.0

Інтернет-магазин на OpenCart!

Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!

Приступити до створення