новый формат поля для регистрации

InstantCMS 2.X

создать дополнение, плагин или что-то такое

#1 19 января 2019 в 23:12
Понадобилось мне решить задачу, отобразить на форме регистрации не обязательные поля. Штатными средствами решить не смог, пришлось залезть в кишочки и все там сделать.
Вопрос вот какой, задачу я решил. Внёс правки, создал классы, переводы, логику. Всё это прям в движке, хотелось бы все это оформить в виде дополнения, чтобы при обновлениях версии не затиралось. Подскажите, возможно это или готовиться к регулярным обновлениям сделанных изменений.
С движком только знакомлюсь, по этому все внутренней кухни ещё не разобрал.
#2 19 января 2019 в 23:18

Штатными средствами решить не смог

@Sin13
Попробуйте смочь. Это возможно 100%
#3 19 января 2019 в 23:30


Штатными средствами решить не смог

@Sin13
Попробуйте смочь. Это возможно 100%

Ris
Если "ткнёте пальцем" скажу спасибо. Поиск ничего не выдал. куча тем как в коде отобразить поле того же "телефона", которое не обязательное при регистрации. Задача стоит, пусть не заполняется, но должно присутствовать на форме регистрации. Искал долго, не нашел ни расширения чисто под эту фичу, ни решения как это штатно сделать, существующие типы крутил вертел по разному. Может до 2.11.0 это работало, как это сделать в этой версии из коробки я не нашел.
#4 20 января 2019 в 00:02
@Sin13,
#5 20 января 2019 в 00:35
Насколько я смог понять, нужно чтобы поля были, когда непосредственно жмешь Регистрацию и попадаешь на эту страницу?
Но это не очень логично на самом деле. Не очень корректно.
Вы уж определитесь — ОБЯЗАТЕЛЬНОЕ ли поле, так ли оно важно для регистрации, смогут/захотят ли его заполнить ВСЕ пользователи?
И если да — то смело ставьте его в обязательные в настройках пользователей.
Если нет, то лучше перебрасывать пользователя после непосредственно регистрации на страницу настроек профиля. Т.е. имя он указал, почту и пароль тоже, а дальше пусть заполняет что хочет. За счет того, что автоматически перебрасывает на эту страницу, многие заполнят. Ну а если человек принципиально не хочет телефон светить — он его в любом случае не напишет.
#6 20 января 2019 в 00:57

Насколько я смог понять, нужно чтобы поля были, когда непосредственно жмешь Регистрацию и попадаешь на эту страницу?

alkokrolik
Достаточно убрать галку "Показывать в профиле" с поля "Телефон".
Тогда оно будет доступно только при редактировании (если разрешить юзеру доступ для изменения).
#7 20 января 2019 в 01:09


Насколько я смог понять, нужно чтобы поля были, когда непосредственно жмешь Регистрацию и попадаешь на эту страницу?
Но это не очень логично на самом деле. Не очень корректно.
Вы уж определитесь — ОБЯЗАТЕЛЬНОЕ ли поле, так ли оно важно для регистрации, смогут/захотят ли его заполнить ВСЕ пользователи?
И если да — то смело ставьте его в обязательные в настройках пользователей.
Если нет, то лучше перебрасывать пользователя после непосредственно регистрации на страницу настроек профиля. Т.е. имя он указал, почту и пароль тоже, а дальше пусть заполняет что хочет. За счет того, что автоматически перебрасывает на эту страницу, многие заполнят. Ну а если человек принципиально не хочет телефон светить — он его в любом случае не напишет.

alkokrolik
Да, надо именно на странице регистрации отобразить. Да, не совсем логично, такое требование заказчика. Карточка достаточно обширная при регистрации и много данных.
Вот как раз, потому что не все захотят не все смогут, часть полей идет на потом, если человек может, чтобы сразу все вбил. Тут думаю после первой волны регистраций будет понятно, все ли поля обязательные выживут.
По этому и хочу вынести этот функционал в модуль, это редкий кейс и мало кому нужна эта галочка отобразить поле.😊Просто получается повышение гибкости настроек отображения.
#8 20 января 2019 в 01:35
@Sin13,
Теперь понял. Нужно, чтобы поле было именно на первой странице регистрации? но не было обязательным?
Тогда достаточно дописать семь строк в файл \system\controllers\auth\forms\form_registration.php
  1. <?php
  2.  
  3. class formAuthRegistration extends cmsForm {
  4.  
  5. public function init() {
  6.  
  7. return array(
  8.  
  9. 'basic' => array(
  10. 'type' => 'fieldset',
  11. 'childs' => array(
  12. new fieldString('email', array(
  13. 'title' => LANG_EMAIL,
  14. 'rules' => array(
  15. array('required'),
  16. array('email'),
  17. array('unique', 'cms_users', 'email')
  18. )
  19. )),
  20. new fieldString('phone', array(
  21. 'title' => LANG_PHONE,
  22. 'rules' => array(
  23. array('phone'),
  24. array('unique', 'cms_users', 'phone')
  25. )
  26. )),
  27. new fieldString('password1', array(
  28. 'title' => LANG_PASSWORD,
  29. 'is_password' => true,
  30. 'options'=>array(
  31. 'min_length'=> 6
  32. ),
  33. 'rules' => array(
  34. array('required')
  35. )
  36. )),
  37. new fieldString('password2', array(
  38. 'title' => LANG_RETYPE_PASSWORD,
  39. 'is_password' => true,
  40. 'options'=>array(
  41. 'min_length'=> 6
  42. ),
  43. 'rules' => array(
  44. array('required')
  45. )
  46. ))
  47. )
  48. )
  49.  
  50. );
  51.  
  52. }
  53.  
  54. }
  55.  
И не нужно никаких

правки, создал классы, переводы, логику.

@Sin13
Чтобы это было в виде дополнения достаточно его оформить в виде дополнения:
/users/files/download7072.html
#9 20 января 2019 в 09:27

Чтобы это было в виде дополнения достаточно его оформить в виде дополнения

Ris
Цель всё же немного иная, чем просто в виде дополнения, а именно

чтобы при обновлениях версии не затиралось

@Sin13
Для этого надо использовать хуки. В двойке есть хуки которые позволяют получить и изменить содержимое всех форм движка.
Для формы регистрации этот хук будет называться form_auth_registration. Но для его объявления системе нужна запись в файле манифеста. Поэтому для этого нужен свой компонент, в котором будете вносить эти изменения. Только в этом случае ничего не слетит при обновлении.
#10 20 января 2019 в 10:57
@Sin13,
Я бы поговорил с заказчиком. Зависит конечно от проекта, но все же в любом случае много полей при регистрации — это плохо.
Какая-то часть может и передумать регистрироваться.
Я вот по себе знаю: заходишь на любой современный известный сайт — и там только несколько полей требуют, например, почта и пароль, телефон и пароль, иногда даже тупо один только телефон/почта/аккаунт в соцсетях. Просто и быстро. И есть некоторое удивление, когда попадаешь на какой-нибудь форум/сайт/магазин, где выкатывают целую портянку для заполнения. Даже если некоторые поля необязательны — все равно напрягает.
Вопрос — зачем вам телефон, отсюда и надо танцевать.
#11 21 января 2019 в 13:15


@Sin13,
Я бы поговорил с заказчиком. Зависит конечно от проекта, но все же в любом случае много полей при регистрации — это плохо.
Какая-то часть может и передумать регистрироваться.
Я вот по себе знаю: заходишь на любой современный известный сайт — и там только несколько полей требуют, например, почта и пароль, телефон и пароль, иногда даже тупо один только телефон/почта/аккаунт в соцсетях. Просто и быстро. И есть некоторое удивление, когда попадаешь на какой-нибудь форум/сайт/магазин, где выкатывают целую портянку для заполнения. Даже если некоторые поля необязательны — все равно напрягает.
Вопрос — зачем вам телефон, отсюда и надо танцевать.

alkokrolik
На данный момент, проще оказалось впилить изменение, чем переубедить заказчика.
Телефон, как пример, поля не по умолчанию, которое есть из коробки :). Зачем мне описывать все поля свои. Про портянку согласен, но на данный момент на стадии регистрации надо предоставить возможность сообщить о себе информацию, по которой потом будут формироваться группы, назовем их "по интересам". Минимальная форма, даст мне головняк в виде большой серой массы, которую надо будет потом как-то на основе чего распределять, заставлять как-то заполнять профиль. Необязательные поля, как раз для того чтобы получить массив вариация, на данный момент неопределенных значений, потом их можно будет причесать и выдать уже списком. обязательных значений.


Чтобы это было в виде дополнения достаточно его оформить в виде дополнения

Ris
Цель всё же немного иная, чем просто в виде дополнения, а именно

чтобы при обновлениях версии не затиралось

@Sin13
Для этого надо использовать хуки. В двойке есть хуки которые позволяют получить и изменить содержимое всех форм движка.
Для формы регистрации этот хук будет называться form_auth_registration. Но для его объявления системе нужна запись в файле манифеста. Поэтому для этого нужен свой компонент, в котором будете вносить эти изменения. Только в этом случае ничего не слетит при обновлении.

Loadырь

Спасибо, посмотрю в сторону хуки, кажется это единственный вариант для меня. Да и полей много разных и каждое руками вносить, это не наш метод.😊Будет эффект автобуса, зачем мне головняк этот. Пусть модераторы после сдачи имеют возможность управлять полями.


@Sin13,
Теперь понял. Нужно, чтобы поле было именно на первой странице регистрации? но не было обязательным?
Тогда достаточно дописать семь строк в файл \system\controllers\auth\forms\form_registration.php

Ris

Спасибо, за файлик. попробую разобраться что к чему, хочется все же независимое решение сделать, кто знает как проект дальше будет жить. может и не нужен будет этот "хак".
#12 21 января 2019 в 16:19

будут формироваться группы, назовем их "по интересам". Минимальная форма, даст мне головняк в виде большой серой массы, которую надо будет потом как-то на основе чего распределять, заставлять как-то заполнять профиль

@Sin13
Писали бы конкретнее smoke
У меня тоже есть что-то подобное, типа профессия, ну то есть получается что все пользователи как-то распределяются по группам. Я сделал обязательное поле, чтобы они сразу определялись. Но и дал возможность регистрироваться просто как "посетитель". Можно выбирать несколько профессий, можно потом изменять. Но поле обязательное, т.к. оно важно.
#13 26 апреля 2021 в 20:45
Всем привет коллеги.
Вопросик как в последней версии инстанта. Добавить пункт (поле) в регистрацию по системному имени.
Пример есть поле (например телефон) (Системное имя "Phone") как его вывести в страницы регистрации-авторизации.
Спасибо.
#14 26 апреля 2021 в 21:27
Шадринец, сделайте поле обязательным для заполнения и оно появится в форме регистрации.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.