Ответить Новая тема Новый опрос 
 Персональное соощение в ЛК
Michel II
Профессионал
Сообщений: 473
Регистрация: 08-06-2012


09-02-2013 05:57
Здравствуйте.
В моем магазине покупатели разбиты на две группы.
В зависимости от группы они войдя под своим аккаунтом видят те или иные цены. (группа опт - одни, а группа розница, соответственно - другие)
Вот хотелось бы сделать так, что бы зайдя в свой ЛК люди видели некое сообщение.
Текст сообщения для двух групп разный, но не персонализированный. т.е ФИО особенно не требуется.


Это сложно?
 



preatashop v1.4.10
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
doubled
Cпециалист
Сообщений: 296
Регистрация: 08-06-2011


09-02-2013 15:34

Открываем controllers/MyAccountController.php

Добавляем
self::$smarty->assign('customerGroups', parent::getCurrentCustomerGroups());

перед
self::$smarty->assign('HOOK_CUSTOMER_ACCOUNT', Module::hookExec('customerAccount'));

Открываем тема/my-account.tpl и ставим там где надо отображать

Напрмер:
<h4>{l s='Welcome to your account. Here you can manage your addresses and orders.'}</h4>
{if in_array('2', $customerGroups)}
<p class="warning">
{l s='Message for a group with ID2'}</p>
{elseif in_array('3', $customerGroups)}
<p class="warning">
{l s='Message for a group with ID3'}</p>
{else}
{/if}


Текст сообщения меняем в переводах
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Michel II
Профессионал
Сообщений: 473
Регистрация: 08-06-2012


09-02-2013 21:28
Суперски.!! все вроде получилось.
только циферку 3 сменил на циферку 1, т.к у меня ID групп 1 и 2 (3, 4 и тд -нет.)
Спасибо.
 



preatashop v1.4.10
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Michel II
Профессионал
Сообщений: 473
Регистрация: 08-06-2012


09-02-2013 21:40
прошу прощения. теперь нужна консультация)))
сейчас вывод сообщения зависит от положения чекбоксов (какие отмечены а какие нет) из кружка 1 (см. картинку).

а хотелось бы , что бы вариант сообщения зависил от положения дроп пункта в кружке 2. именно этот пункт определяет те цены , которые видит покупатель.

Возможно ли как то подточить код? ))


Изображения:
опт.jpg - Размер файла28.49KB, Скачиваний: 274 (Нажмите для увеличения)
 



preatashop v1.4.10
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
doubled
Cпециалист
Сообщений: 296
Регистрация: 08-06-2011


09-02-2013 21:52
Тоесть покупатели находятся сразу в двух группах?

 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
doubled
Cпециалист
Сообщений: 296
Регистрация: 08-06-2011


09-02-2013 22:35
Цитата:( Michel II @ 09-02-2013 16:40 Смотреть сообщение )
Возможно ли как то подточить код? ))

Нет, подточить низя, можно только новый сделать )

Для того что бы учитывалась группа клиента "по умолчанию":

В controllers/MyAccountController.php:

self::$smarty->assign('customerGroup', parent::getDefaultCustomerGroup());
self::$smarty->assign('HOOK_CUSTOMER_ACCOUNT', Module::hookExec('customerAccount'));


Для тема/my-account.tpl ставим там где надо отображать.

Пример:
<h4>{l s='Welcome to your account. Here you can manage your addresses and orders.'}</h4>
{if in_array('2', $customerGroup)}
<p class="warning">
{l s='Message for group with ID2'}</p>
{elseif in_array('3', $customerGroup)}
<p class="warning">
{l s='Message for group with ID3'}</p>
{else}
{/if}


И самое главное для classes/FrontController.php:

protected static $currentCustomerGroups;
protected static $defaultCustomerGroup;



public static function getCurrentCustomerGroups()
{
if (!isset(self::$cookie) || !self::$cookie->id_customer)
return array();
if (!is_array(self::$currentCustomerGroups))
{
self::$currentCustomerGroups = array();
$result = Db::getInstance()->ExecuteS('SELECT id_group FROM '._DB_PREFIX_.'customer_group WHERE id_customer = '.(int)self::$cookie->id_customer);
foreach ($result as $row)
self::$currentCustomerGroups[] = $row['id_group'];
}
return self::$currentCustomerGroups;
}

public static function getDefaultCustomerGroup()
{
if (!isset(self::$cookie) || !self::$cookie->id_customer)
return array();
if (!is_array(self::$defaultCustomerGroup))
{
self::$defaultCustomerGroup= array();
$result = Db::getInstance()->ExecuteS('SELECT id_default_group FROM '._DB_PREFIX_.'customer WHERE id_customer = '.(int)self::$cookie->id_customer);
foreach ($result as $row)
self::$defaultCustomerGroup[] = $row['id_default_group'];
}
return self::$defaultCustomerGroup;
}



Ну и понятное дело что для {if in_array('2', $customerGroup)} вместо '2' надо ставить ID группы для которой будет сообщение...
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Michel II
Профессионал
Сообщений: 473
Регистрация: 08-06-2012


10-02-2013 17:20
Спасибо. все получилось.
Покупатели , конечно , не всегда находятся в двух группах.(но бывает и так. Пока это недостаток схемы регистрации.)
А вот пункт "группа по умолчанию" зависит от того - регистрируется покупатель как юр.личо или как физ лицо (если есть реквизиты - в группу опт, если нет - в группу розница).
Вот и хотел сдеалать, что бы при входе в ЛК им давалось пояснительное сообщение

"ваш статус "розница" ну иили что то подобное.


Сообщение отредактировано Michel II 10-02-2013 13:23 ...
 



preatashop v1.4.10
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
doubled
Cпециалист
Сообщений: 296
Регистрация: 08-06-2011


10-02-2013 18:58
Согласен, это полезная штука.
Можно сообщать какая скидка установлена для покупателя в данный момент.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос