Регистрация и заполнение профиля.

Вопрос

#1 22 марта 2017 в 15:43
Час Всем Добрый! Подскажите как осуществить данную идею!
Зарегистрировавшийся пользователь переходит после регистрации к себе в профиль.

Но так же может спокойно выйти от туда не заполнив необходимые поля.
Как сделать что бы пользователь пока не заполнит обязательные поля не смог перейти на другие страницы.


Это как раз и от спамеров и для тех кто регистрируется через uLogin. Человек ЕСТЬ а кто он и от куда это тоже нужно знать.
Помогите осуществить или опишите подробнее как это можно сделать.

Всем спасибо!
#2 22 марта 2017 в 20:40
MegaRostov, надо писать или компонент с хуком, который будет следить за заполненностью профиля.
Но можно немного исправить main.tpl.php вашего шаблона, добавив в самый верх шаблона после

  1. <?php $core = cmsCore::getInstance(); ?>
добавить

  1. <?php if (cmsUser::isLogged()){
  2. if (!cmsUser::get('icq') && $this->controller->name != "users"){
  3. cmsUser::addSessionMessage("Заполните поле icq", 'error');
  4. $this->controller->redirectTo('users', cmsUser::get('id'), array('edit'));
  5. }} ?>

В этом коде:

1 строка: проверяем, заполнено ли поле icq. Вторая проверка в этой строке нужна, чтобы не получить бесконечное перенаправление
2 строка: добавляем уведомление о нужном поле
3 строка: перемещаем пользователя на страницу редактирования профиля

Если вы хотите заставить заполнить несколько полей, то код нужно немного модифицировать

  1. <?php if (cmsUser::isLogged()){
  2. if ((!cmsUser::get('icq')|| !cmsUser::get('phone')) && $this->controller->name != "users"){
  3. cmsUser::addSessionMessage("Заполните поля телефон и icq", 'error');
  4. $this->controller->redirectTo('users', cmsUser::get('id'), array('edit'));
  5. }} ?>
#3 22 марта 2017 в 21:06
Zau4man,
Вах-вах!
Теперь мне нужно все это понять и поправить на те поля которые должны быть обязательными к заполнению.
Так как полей у меня к заполнению около 3-5… Обязательных.
1)День рождения
2)Город
3)Телефон
4)Почта (для тех кто регистрировался через uLogin)
#4 22 марта 2017 в 21:15

Теперь мне нужно все это понять и поправить на те поля которые должны быть обязательными к заполнению.

MegaRostov
Админка — компоненты — профили пользователей — поля профилей

Имена полей тут


Добавлять во вторую строку, не забывая про скобочки

  1. if ((!cmsUser::get('icq') || !cmsUser::get('phone') || !cmsUser::get('skype') || !cmsUser::get('city')) && $this->controller->name != "users"){
И не делайте на живом сайте. Поставьте тестовый и на нем.
#5 22 марта 2017 в 21:28
То есть получается немного исправить main.tpl.php
  1. <?php $core = cmsCore::getInstance(); ?>
И вставлять
  1. <?php if (cmsUser::isLogged()){
  2. if ((!cmsUser::get('icq')|| !cmsUser::get('phone')) && $this->controller->name != "users"){
  3. cmsUser::addSessionMessage("Заполните поля телефон и icq", 'error');
  4. $this->controller->redirectTo('users', cmsUser::get('id'), array('edit'));
  5. }} ?>
  6.  
Вернее уже добавленные стоки
  1. if ((!cmsUser::get('icq') || !cmsUser::get('phone') || !cmsUser::get('skype') || !cmsUser::get('city')) && $this->controller->name != "users"){
  2.  
Правильно я Вас понял!?
#6 22 марта 2017 в 22:06
Zau4man, спасибо!
#7 22 марта 2017 в 23:04
Тема интересная! Спасибо ОГРОМНОЕ!
НО в тоже время надоедливая… Как раз то что нужно.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.