Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Автоматический купон за отзыв. Нужны советы


Recommended Posts

Добрый день.
Ищу любую информацию на счет автоматического купона за написанный отзыв.
Клиент пишет отзыв, ему сразу падает на емейл сообщение с кодом. (без подтверждение отзыва)

Хочется сделать самому ради практики в разработке.

Как говорят, кто чем может, помогите))
Буду благодарен за любую информацию на счет моей задачи.

p.s. с опенкартом работаю давно, но на счет php мой максимум, это допилить или сделать свой модуль на базе существующего.
Мои знания пока не дают мне понять как генерировать купон по добавлению отзыва.

Змінено користувачем s89
Надіслати
Поділитися на інших сайтах


Идёте в контроллер \product\product.php и в функции write дописываете генерацию кода и отправку письма (используя другие встроенные функции).

Надіслати
Поділитися на інших сайтах


Добавил в контроллер следующие строки.
Купон генерируется все как надо.
Но, правильно ли я все сделал?

// Генерируем код копона
function generatePassword($length = 8){
  $chars = 'abdefhiknrstyzABDEFGHKNQRSTYZ23456789';
  $numChars = strlen($chars);
  $string = '';
  for ($i = 0; $i < $length; $i++) {
  	$string .= substr($chars, rand(1, $numChars) - 1, 1);
  }
  return $string;
}

$data['coupon_id'] = '';
// Имя купона
$data['name'] = 'Купон за отзыв';
// Код купона
$data['code'] = generatePassword(8);
// Тип купона
$data['type'] = 'P'; // процент
// Прцент скидки купона
$data['discount'] = '5'; // 5% скидки
// Фиксированная скидка
$data['total'] = '';
// Авторизация покупателя
$data['logged'] = '0'; // приминение без авторизации
// Бесплатная доставка
$data['shipping'] = '0'; // нет
// Дата начала действия купона
$data['date_start'] = date('Y-m-d', time()); // старт с момента добавление отзыва
// Дата окончания действия купона
$data['date_end'] = date('Y-m-d', strtotime('+2 year')); // 2 года
// количество приминений купона
$data['uses_total'] = 1; // 1 раз
// количество применений купона одним покупателем
$data['uses_customer'] = 1; // 1 покупатель
// Вкл/Выкл
$data['status'] = true; //вкл
// END Coupon
                            
$this->load->model('catalog/review');
$this->model_catalog_review->addCoupon($data);

 

Змінено користувачем s89
Надіслати
Поділитися на інших сайтах


10 часов назад, PeterStudio сказал:

Идёте в контроллер \product\product.php и в функции write дописываете генерацию кода и отправку письма (используя другие встроенные функции).

 

Спасибо!

Надіслати
Поділитися на інших сайтах


Ну так а дальше отправка почты, стандартно как в opencart,  можете по аналогии сделать как в model/checkout/order

Только кому Вы будет отправлять почту? Вам сначала проверить залогинен ли покупатель и потом уже генерировать купон и отправлять на его почту.

 

Надіслати
Поділитися на інших сайтах


13 минут назад, vtkach сказал:

Ну так а дальше отправка почты, стандартно как в opencart,  можете по аналогии сделать как в model/checkout/order

Только кому Вы будет отправлять почту? Вам сначала проверить залогинен ли покупатель и потом уже генерировать купон и отправлять на его почту.

 

Спасибо. я все понимаю. не все нюансы описал своего проекта. У меня пользователь при добавлении отзыва указывает email

 

Надіслати
Поділитися на інших сайтах


1 минуту назад, s89 сказал:

Спасибо. я все понимаю. не все нюансы описал своего проекта. У меня пользователь при добавлении отзыва указывает email

 

Так и пошлите ему письмо, как например при регистрации, только с купоном

Надіслати
Поділитися на інших сайтах

Отправку сообщения сделал так:

if (isset($this->request->post['email'])) {
	$email = $this->request->post['email'];
}

// Отправляем email сообщение с купоном для автора отзыва
$html = $this->load->view('default/template/mail/review_coupon.tpl', $data); // шаблон email письма

$mail = new Mail();
$mail->protocol = $this->config->get('config_mail_protocol');
$mail->parameter = $this->config->get('config_mail_parameter');
$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
$mail->smtp_username = $this->config->get('config_mail_smtp_username');
$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
$mail->smtp_port = $this->config->get('config_mail_smtp_port');
$mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');

$mail->setTo($email);
$mail->setFrom($this->config->get('config_email'));
$mail->setSender(html_entity_decode($this->language->get('name_store'), ENT_QUOTES, 'UTF-8'));
$mail->setSubject(html_entity_decode($this->language->get('text_subject'), ENT_QUOTES, 'UTF-8'));
$mail->setHtml($html);
$mail->send();

Это конечно не весь код который нужный для работы...
Если кому то понадобится помощь, пишите, распишу подробнее.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

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

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.