Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

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


Recommended Posts

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

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

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

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

Edited by s89
Link to comment
Share on other sites


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

Link to comment
Share on other sites


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

// Генерируем код копона
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);

 

Edited by s89
Link to comment
Share on other sites


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

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

 

Спасибо!

Link to comment
Share on other sites


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

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

 

Link to comment
Share on other sites


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

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

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

 

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

 

Link to comment
Share on other sites


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

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

 

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

Link to comment
Share on other sites

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

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();

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

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.