Вы оказались правы в вопросе которое мы обсуждали вэтой теме, действительно шаблоны писем были перепутани, точнее в данном магазине этот шаблон был совершенно удален. Сейчас все исправил однако есть еще один нюанс. При создании нового клиента из админки он автоматисно становится активированным т.е. подтвержден. И письмо которое приходить по емейлу в целом не нужно, то есть, зачем активировать активного пользователя. Подскажите плиз, что нужно изменить в контроллере админки, чтобы по умолчанию поле базы is_active присваивалось 0. А то сейчас они все = 1.
Как при добавлении покупателя из админинистративного интерфейса указать системе, что адрес электропочты нуждается в подтверждении покупателем?
10.11.2011 13:32
Свойство is_active объекта "покупатель" не имеет отношения к факту подтверждения адреса электропочты покупателем.
Критерием подтверждения адреса электропочты покупателем является пустое значение свойства confirmation.
Критерием подтверждения адреса электропочты покупателем является пустое значение свойства confirmation.
10.11.2011 13:52
Если я правильно вас понял то null является залогом пидтвверженого емейлу. А для того, чтобы по умолчанию он бив не подтвержденным достаточно установить в него что угодно?
10.11.2011 13:58
Свойство confirmation объекта Покупатель хранит открытый ключ подтверждения адреса электропочты этого Покупателя.
10.11.2011 14:07
К сожалению с вашево ответа я ничего не понял. Ниже я излагаю функцию которая сохраняет и отправляет письмо в подтверждение. Если кто в курсе пидсакажыте плиз, что нужно изменить чтобы клиент был подтвержден после перехода по ссылке подтверждения.
public function saveAction() { $session = $this->_getSession(); if ($data = $this->getRequest()->getPost()) { $data = $this->_filterPostData($data); $redirectBack = $this->getRequest()->getParam('back', false); $this->_initCustomer('customer_id'); /** @var Mage_Customer_Model_Customer */ $customer = Mage::registry('current_customer'); // Prepare customer saving data if (isset($data['account'])) { if (isset($data['account']['email'])) { $data['account']['email'] = trim($data['account']['email']); } $customer->addData($data['account']); } // unset template data if (isset($data['address']['_template_'])) { unset($data['address']['_template_']); } $modifiedAddresses = array(); $data = $this->_filterPostData($this->getRequest()->getPost()); if (! empty($data['address'])) { foreach ($data['address'] as $index => $addressData) { if (($address = $customer->getAddressItemById($index))) { $addressId = $index; $modifiedAddresses[] = $index; } else { $address = Mage::getModel('customer/address'); $addressId = null; $customer->addAddress($address); } $address->setData($addressData) ->setId($addressId) ->setPostIndex($index); // We need set post_index for detect default addresses } } // not modified customer addresses mark for delete foreach ($customer->getAddressesCollection() as $customerAddress) { if ($customerAddress->getId() && ! in_array($customerAddress->getId(), $modifiedAddresses)) { $customerAddress->setData('_deleted', true); } } if(isset($data['subscription'])) { $customer->setIsSubscribed(true); } else { $customer->setIsSubscribed(false); } $isNewCustomer = !$customer->getId(); try { if ($customer->getPassword() == 'auto') { $sendPassToEmail = true; $customer->setPassword($customer->generatePassword()); } // force new customer active if ($isNewCustomer) { $customer->setForceConfirmed(true); } Mage::dispatchEvent('adminhtml_customer_prepare_save', array('customer' => $customer, 'request' => $this->getRequest()) ); $customer->save(); if ($customer->isConfirmationRequired()) { $customer->sendNewAccountEmail('confirmation', $session->getBeforeAuthUrl() ); $session->addSuccess($this->__('Account confirmation is required. Please, check your email for the confirmation link. To resend the confirmation email please <a href="%s">click here</a>.', Mage::helper('customer')->getEmailConfirmationUrl($customer->getEmail()))); // $this->_redirectSuccess(Mage::getUrl('*/*/index', array('_secure'=>true))); // return; } else { $session->setCustomerAsLoggedIn($customer); $url = $this->_welcomeCustomer($customer); // $this->_redirectSuccess($url); // return; } // send welcome email //if ($customer->getWebsiteId() && ($customer->hasData('sendemail') || isset($sendPassToEmail))) { // $storeId = $customer->getSendemailStoreId(); // if ($isNewCustomer) { // $customer->sendNewAccountEmail('registered', '', $storeId); // } // /// confirm not confirmed customer // elseif ((!$customer->getConfirmation())) { // $customer->sendNewAccountEmail('confirmed', '', $storeId); // } // } //TODO? Send confirmation link, if deactivating account if ($newPassword = $customer->getNewPassword()) { if ($newPassword == 'auto') { $newPassword = $customer->generatePassword(); } $customer->changePassword($newPassword); $customer->sendPasswordReminderEmail(); } Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('The customer has been saved.')); Mage::dispatchEvent('adminhtml_customer_save_after', array('customer' => $customer, 'request' => $this->getRequest()) ); if ($redirectBack) { $this->_redirect('*/*/edit', array( 'id' => $customer->getId(), '_current'=>true )); return; } } catch (Exception $e){ Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); Mage::getSingleton('adminhtml/session')->setCustomerData($data); $this->getResponse()->setRedirect($this->getUrl('*/customer/edit', array('id'=>$customer->getId()))); return; } } $this->getResponse()->setRedirect($this->getUrl('*/customer')); }
10.11.2011 14:12
Данный форум не предназначен для бесплатного анализа программного кода.
Эта тема тоже закрыта.
Эта тема тоже закрыта.