Автор Тема: Активация при регистрации  (Прочитано 958 раз)

11 Апреля 2013, 00:53:15
  • Новичок
  • *
  • Сообщений: 11
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здраствуйте вопрос такой.
Запретил автоматическую активацию аккаунта
В controllers/AuthController.php
заменил: $customer->active = 1;
На: $customer->active = 0;
Как после того как новый пользователь нажал кнопку "зарегистрироваться" его перенаправило бы на страницу с условиями активации?
11 Апреля 2013, 10:35:14
Ответ #1
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102470
  • Репутация: +34217/-0
    • Просмотр профиля
В controllers/AuthController.php нужно изменить страницу, на которую перенаправляется зарегистрированный пользователь:
Tools::redirect('index.php?controller=my-account');на
Tools::redirect('index.php?id_cms=1&controller=cms');Страницу, на которой описываются условия активации, создайте в:
Панель администратора > Настройки > Страницы
11 Апреля 2013, 12:25:57
Ответ #2
  • Новичок
  • *
  • Сообщений: 11
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В controllers/AuthController.php
Нет строки
Tools::redirect('index.php?controller=my-account');
вместо ее я так понимаю вот эта строка:
Tools::redirect('my-account.php');
Меняю в этой строке адрес на другую страницу нет изменений,
также перенаправляет на:
authentication.php

Версия движка: 1.4.4.0
12 Апреля 2013, 10:38:11
Ответ #3
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22166
  • Репутация: +17111/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Для prestashop 1.5
Цитировать
Tools::redirect('index.php?controller=my-account');
В prestashop 1.4, без ajax, редирект после регистрации:
Tools::redirect($back);если нет страницы возврата
Tools::redirect('my-account.php');Измените 2 этих значения.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
12 Апреля 2013, 16:54:32
Ответ #4
  • Новичок
  • *
  • Сообщений: 11
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо огромное. Все разобрался ;)
12 Апреля 2013, 18:32:39
Ответ #5
  • Новичок
  • *
  • Сообщений: 11
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вопрос такой
при $customer->active = 1;
срабатывает как надо и перенаправляет на страницу
а при $customer->active = 0;
нет, а мне нужну, что бы новый пользователь был не активен пока не прочитает страницу с правилами активации.

Если наедется минутка посмотрите пожалуйста файл прикрепил.
Спасибо.
12 Апреля 2013, 21:06:45
Ответ #6
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33010
  • Репутация: +26761/-0
    • Просмотр профиля
При активированом аккаунте пользователя, после редиректа в кабинет пользователя, пользователь остается авторизированным.
Если перенаправить пользователя на любую страницу - newpage.php, то это  вызовет контроллер FrontController.
А в FrontController.php произойдет проверка сохранения сесии, авторизирован или нет, и разрешен ли доступ
if (isset($_GET['logout']) OR ($cookie->logged AND Customer::isBanned((int)$cookie->id_customer)))Поэтому нужно добавить вместе с редиректом
self::$cookie->logged =0;
12 Апреля 2013, 22:25:40
Ответ #7
  • Новичок
  • *
  • Сообщений: 11
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Все равно не получилось может я, что то не то делаю.
В общем решил вопрос с перенаправлением так:
создал файл redirect.php с кодом:
<?
echo '<script type="text/javascript">';
echo 'window.location.href="cms.php?id_cms=8";';
echo '</script>';
?>
в файле: AuthController.php
вставил: Tools::redirect('redirect.php');
Все заработало. Вопрос в том насколько такая схема безопасна?
13 Апреля 2013, 16:42:31
Ответ #8
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102470
  • Репутация: +34217/-0
    • Просмотр профиля
Можно использовать такой вариант, если не помогли другие решения.
13 Апреля 2013, 16:54:39
Ответ #9
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102470
  • Репутация: +34217/-0
    • Просмотр профиля
Для Prestashop 1.4 изменить в файле AuthController.php
строка 148
$customer->active = 1;на
$customer->active = 0;строка 174
self::$cookie->logged = 1;на
self::$cookie->logged = 0;строка 200
if ($back = Tools::getValue('back'))
    Tools::redirect($back);
Tools::redirect('index.php');
на
if ($back = Tools::getValue('back'))
    Tools::redirect('cms.php?id_cms=8');
Tools::redirect('cms.php?id_cms=8');
Проверено, работает.
15 Апреля 2013, 14:15:21
Ответ #10
  • Новичок
  • *
  • Сообщений: 11
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо за подробный ответ. Сейчас все действительно заработало как надо.
Не хочется создавать отдельную тему. У меня еще остался один вопрос, который не как не получается решить. А именно: Запрет добавления товара в корзину без регистрации. Если человек не авторизирован, он видит кнопку "добавить в корзину", но при нажатии на нее всплывает аллерт с сообщением "Добавлять товары в корзину могут лишь зарегистрированные пользователи". Искал в интернете но ничего по теме не мог найти буду очень признателен Вам если вы мне поможете.
16 Апреля 2013, 10:12:07
Ответ #11
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 102470
  • Репутация: +34217/-0
    • Просмотр профиля
В Prestashop для таких целей есть модули,  например, Module Price Hide.
16 Апреля 2013, 17:29:22
Ответ #12
  • Новичок
  • *
  • Сообщений: 11
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо, нашел установил.