bartek22 Posted March 8, 2017 Share Posted March 8, 2017 Witam, czy istnieje taka możliwość, aby klient który zgadza się na otrzymywanie newslettera z poziomu koszyka nie otrzymywał maila z rabatem, a otrzymywał tylko ten, który zapisuje się z poziomu modułu np. na home? Obecnie dostają wszyscy. Pozdrawiam Bartek Link to comment Share on other sites More sharing options...
vekia Posted March 8, 2017 Share Posted March 8, 2017 jeżęli chodzi o standardowy moduł newslettera 'block newsletter' to wymaga to modyfikacji kodu kontrolera AuthController protected function processCustomerNewsletter(&$customer) { $blocknewsletter = Module::isInstalled('blocknewsletter') && $module_newsletter = Module::getInstanceByName('blocknewsletter'); if ($blocknewsletter && $module_newsletter->active && !Tools::getValue('newsletter')) { require_once _PS_MODULE_DIR_.'blocknewsletter/blocknewsletter.php'; if (is_callable(array($module_newsletter, 'isNewsletterRegistered')) && $module_newsletter->isNewsletterRegistered(Tools::getValue('email')) == Blocknewsletter::GUEST_REGISTERED) { /* Force newsletter registration as customer as already registred as guest */ $_POST['newsletter'] = true; } } if (Tools::getValue('newsletter')) { $customer->newsletter = true; $customer->ip_registration_newsletter = pSQL(Tools::getRemoteAddr()); $customer->newsletter_date_add = pSQL(date('Y-m-d H:i:s')); /** @var Blocknewsletter $module_newsletter */ if ($blocknewsletter && $module_newsletter->active) { $module_newsletter->confirmSubscription(Tools::getValue('email')); } } } zmieniamy $module_newsletter->confirmSubscription(Tools::getValue('email')); na $module_newsletter->confirmSubscription(Tools::getValue('email'), false); oraz modyfikacji modułu - w pliku modułu blocknewsletter.php public function confirmSubscription($email) { if ($email) { if ($discount = Configuration::get('NW_VOUCHER_CODE')) $this->sendVoucher($email, $discount); if (Configuration::get('NW_CONFIRMATION_EMAIL')) $this->sendConfirmationEmail($email); } } zmieniamy na public function confirmSubscription($email, $voucher = true) { if ($email) { if ($discount = Configuration::get('NW_VOUCHER_CODE') && $voucher) $this->sendVoucher($email, $discount); if (Configuration::get('NW_CONFIRMATION_EMAIL')) $this->sendConfirmationEmail($email); } } Link to comment Share on other sites More sharing options...
bartek22 Posted March 8, 2017 Author Share Posted March 8, 2017 Dzięki Vekia za odpowiedź. Tylko tak mnie nurtuje teraz pytanie, czy to nie zadziała w odwrotnie niż ja chciałem? Mi chodzi o to żeby nie wysyłać powiadomień po zapisie na newsletter oraz kodu rabatowego, gdy klient zaznaczy checkbox podczas składania zamówienia. Jeżeli zapisze się z modułu Blok newsletter to tutaj powiadomienie ma być wysyłane oraz kod rabatowy pzdr Barti Link to comment Share on other sites More sharing options...
bartek22 Posted April 18, 2017 Author Share Posted April 18, 2017 (edited) jeżęli chodzi o standardowy moduł newslettera 'block newsletter' to wymaga to modyfikacji kodu kontrolera AuthController protected function processCustomerNewsletter(&$customer) { $blocknewsletter = Module::isInstalled('blocknewsletter') && $module_newsletter = Module::getInstanceByName('blocknewsletter'); if ($blocknewsletter && $module_newsletter->active && !Tools::getValue('newsletter')) { require_once _PS_MODULE_DIR_.'blocknewsletter/blocknewsletter.php'; if (is_callable(array($module_newsletter, 'isNewsletterRegistered')) && $module_newsletter->isNewsletterRegistered(Tools::getValue('email')) == Blocknewsletter::GUEST_REGISTERED) { /* Force newsletter registration as customer as already registred as guest */ $_POST['newsletter'] = true; } } if (Tools::getValue('newsletter')) { $customer->newsletter = true; $customer->ip_registration_newsletter = pSQL(Tools::getRemoteAddr()); $customer->newsletter_date_add = pSQL(date('Y-m-d H:i:s')); /** @var Blocknewsletter $module_newsletter */ if ($blocknewsletter && $module_newsletter->active) { $module_newsletter->confirmSubscription(Tools::getValue('email')); } } } zmieniamy $module_newsletter->confirmSubscription(Tools::getValue('email')); na $module_newsletter->confirmSubscription(Tools::getValue('email'), false); oraz modyfikacji modułu - w pliku modułu blocknewsletter.php public function confirmSubscription($email) { if ($email) { if ($discount = Configuration::get('NW_VOUCHER_CODE')) $this->sendVoucher($email, $discount); if (Configuration::get('NW_CONFIRMATION_EMAIL')) $this->sendConfirmationEmail($email); } } zmieniamy na public function confirmSubscription($email, $voucher = true) { if ($email) { if ($discount = Configuration::get('NW_VOUCHER_CODE') && $voucher) $this->sendVoucher($email, $discount); if (Configuration::get('NW_CONFIRMATION_EMAIL')) $this->sendConfirmationEmail($email); } } Hej Vekia, czy to faktycznie tak zadziała, że nie będzie wysyłać kodu podczas składania zamówienia? Edited April 18, 2017 by bartek22 (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now