Jump to content

Kod rabatowy po zapisie do newsletera


bartek22

Recommended Posts

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

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

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

  • 1 month later...

 

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 by bartek22 (see edit history)
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
×
×
  • Create New...