Вы оказались правы в вопросе которое мы обсуждали вэтой теме, действительно шаблоны писем были перепутани, точнее в данном магазине этот шаблон был совершенно удален. Сейчас все исправил однако есть еще один нюанс. При создании нового клиента из админки он автоматисно становится активированным т.е. подтвержден. И письмо которое приходить по емейлу в целом не нужно, то есть, зачем активировать активного пользователя. Подскажите плиз, что нужно изменить в контроллере админки, чтобы по умолчанию поле базы 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
Данный форум не предназначен для бесплатного анализа программного кода.
Эта тема тоже закрыта.
Эта тема тоже закрыта.

Вход
Регистрация
Помощь
Тема закрыта

