Среда, 15 Август 2012 19:32

Дополнительные поля в форме регистрации Joomla

Оцените материал
(11 голосов)

Сегодня мы поговорим о том, как добавить в форму регистрации Джумлы (1.6 — 2.5) дополнительные поля, а заодно и разберемся как управлять этой формой. Должна получиться вот такая расширенная форма:

Итак, в первую очередь нам нужно пробраться в phpMyAdmin, зайти в базу и найти там таблицу jos_users (префикс может быть совершенно другим, если отличается, ставьте ваш, ключевая таблица — users). В ней нам нужно создать новые поля. В данном случае это будут:

  • Возраст (age)
  • Город проживания (city)
  • Специальность (specialty)
  • Навыки и умения (skills)

Собственно, вот скрин, на котором показано как это сделать:

Выставляете значения под таблицей, жмете ОК, вас перебрасывает на страницу с параметрами таблицы. Задаем их (смотрим список новых полей с названиями для сайта и базы выше). Заполняете все как на скрине:

В остальные параметры не лезем. Оставляем как есть. С длиной понятно? Для возраста разумнее всего значение 2 (склоняю голову и извиняюсь перед теми, кто дожил до ста лет и при этом, умеет пользоваться интернетом — занижайте возраст и пишите, что вам всего каких-то 99 лет, например). Сохраняемся, смотрим что получилось. Если все нормально, таблица jos_users должна быть заполнена так:

Если все получилось, давайте вставим эти поля в форму регистрации. Для этого открываем файлик registration.xml, который лежит в папке /components/com_users/models/forms/

Ваша задача скопировать вот этот кусок кода:

Показать/скрыть xml код

Посмотреть код
  1.         <field name="name" type="text"
  2.             description="COM_USERS_REGISTER_NAME_DESC"
  3.             filter="string"
  4.             label="COM_USERS_REGISTER_NAME_LABEL"
  5.             message="COM_USERS_REGISTER_NAME_MESSAGE"
  6.             required="true"
  7.             size="30"
  8.         />

И вставить его (в данном случае) четыре раза, дабы в форме регистрации возникли четыре дополнительных поля, которые нам требуются. Но сначала давайте разберемся что тут к чему.

  • name="name" — собственно, это имя той ячейки базы данных, в которую форма будет втыкать значение;
  • description="COM_USERS_REGISTER_NAME_DESC" — Подсказка; 
  • label="COM_USERS_REGISTER_NAME_LABEL" — Подпись к полю формы регистрации;
  • message="COM_USERS_REGISTER_NAME_MESSAGE" — Сообщение при ошибке в наборе формы;
  • required="true" —  Проверка обязательности ввода значения. То есть, если стоит true — поле обязательно для заполнения, отмечается звездочкой, не заполнив поле не получится зарегистрироваться. Значение false позволяет не заполнять поле. То есть, оно становится необязательным, звездочки не будет;
  • size="30" — Ширина поля, что тут еще скажешь. 

Вот эти значения, которые прописаны заглавными латинскими буквами — отсылка к языковому файлу, но я не буду заострять на этом внимание, просто напишу все значения напрямую в xml-файле и сохраню его в формате UTF-8 без BOM.

Если вы все усвоили, то исправленные блоки должны получиться такими же:

Показать/скрыть xml код

Посмотреть код
  1.         <field name="age" type="text"
  2.             description="Введите свой возраст"
  3.             filter="string"
  4.             label="Возраст"
  5.             message="Неправильно введен возраст. Значение не должно превышать 99"
  6.             required="true"
  7.             size="30"
  8.         />
  9.         <field name="city" type="text"
  10.             description="В каком городе вы живете?"
  11.             filter="string"
  12.             label="Город проживания"
  13.             message="Ошибка. Слишком длинное значение."
  14.             required="true"
  15.             size="30"
  16.         />
  17.         <field name="specialty" type="text"
  18.             description="Кем вы работаете (работали, на кого учились или учитесь)?"
  19.             filter="string"
  20.             label="Специальность"
  21.             message="Ошибка. Слишком длинное значение."
  22.             required="true"
  23.             size="30"
  24.         />
  25.         <field name="skills" type="text"
  26.             description="Что вы умеете делать так, как никто другой?"
  27.             filter="string"
  28.             label="Навыки и умения"
  29.             message="Ошибка. Слишком длинное значение."
  30.             required="true"
  31.             size="30"
  32.         />
 

Проверьте, поля должны добавиться в форму. Если нет, сохраните файл и замените его на ФТП :)

Теперь зайтите в phpMyAdmin, и проверьте заносятся ли значения в соответствующие ячейки. Если да, то переходим к следующему этапу — нужно добавить эти поля в информацию обучетной записи, которая отображается в админке.

Для этого заходим в папку /administrator/components/com_users/models/forms/ и ищем в ней файл user.xml, дальше — действуем по той же схеме. В него вставляем вышеуказанный код, сохраняемся, перезаписываем файл и наслаждаемся полнофункциональной формой информации о пользователе.

Прочитано 23681 раз
Твитнуть

Комментарии   

 
гость
0 #26 гость 15.02.2015 14:56
народ простое решение, заходим в админку: менеджер пользователей-н астройки-разреш ить регистрацию!!!
Цитировать
 
 
kolka-jan
0 #25 kolka-jan 30.01.2015 17:31
Цитата:
Теперь зайтите в phpMyAdmin, и проверьте заносятся ли значения в соответствующие ячейки.
Не совсем понятно, как там это проверить?
Но, судя по тому, что при регистрации нового пользователя в соответствующих полях в БД данные соответствующие не появляются - то, похоже, они туда не синхронизируются.
В чем может быть дело?
Цитировать
 
 
Roman
0 #24 Roman 21.05.2014 18:16
Как сделать чтобы заполненная форма приходила на почту администратору?
Цитировать
 
 
Olga
0 #23 Olga 08.05.2014 10:41
У меня вопрос в другом. Скачала-установ ила шаблон. Но! Там нигде-нигде-ниг де не нахожу, как сделать, чтобы на сайте выводилось поле регистрации. Подскажите, что сделать можно. про базы данных понятно, а вот как сделать, чтобы пользователь мог на сайте зарегистрироват ься вообще - вопрос уже. Вроде уже все перерыла.
Цитировать
 
 
Bagunda
0 #22 Bagunda 13.02.2014 03:15
Спасибо! Помогли немного!
Нужно еще в "Менеджере пользователей" добавить поля!
И нужно убрать повтор пароля и email.
И еще нужно свою логику сделать.
Как всё это сделать?
Цитировать
 
 
Роман1999
+3 #21 Роман1999 08.01.2014 07:39
А если нужно дjбавить поле SELECT , а не текстовое. То как тогда будет выглядеть код?
Цитировать
 
 
Pharaoh
-8 #20 Pharaoh 27.10.2013 05:56
Изменить форму регистрации новых пользователей позволяет компонент расширенной регистрации для Joomla 2.5.
http://www.joomlaplus.ru/manual/use/reg
Цитировать
 
 
Вячеслав3
0 #19 Вячеслав3 01.10.2013 19:25
Доброго времени суток, помог пост, прошу ещё подсказать, как вывести дополнительные поля в форме редактирования профиля.
Зарание спасибо.
Цитировать
 
 
Вадим1212121
-1 #18 Вадим1212121 23.06.2013 20:19
подскажите плиз - нужно в регистрационную форму вставить выбор языка сайта, беру кусок формы из админки



JOPTION_USE_DEFAULT



и вставляю в нужное мне место - вроде работает но форма дублируеться внизу - как ее оттуда убрать ?
Цитировать
 
 
Serg1
+2 #17 Serg1 10.04.2013 14:04
Спасибо, J3.0 все работает
Цитировать
 
 
Иван
0 #16 Иван 02.04.2013 18:25
Все вроде сделал по инструкции, пользователь вроде как регистрируется, но при попытке просмотреть его инфу в админке вылазит:
500 - Обнаружена ошибка.

Неизвестный тип элемента: field
Как решить проблему?
Цитировать
 
 
Эдуард
0 #15 Эдуард 02.04.2013 14:48
Цитирую Саня:
[quote name="У меня нет user.xml"]Joomla 1.6

В /administrator/components/com_users/models/forms/ не файла user.xml, есть profile, но вставка кода не приводит к выводу дополнительного поля (в базе и в регистрации все ок).

Тоже самое и у меня. Как решить?

Цитирую Саня:
[quote name="У меня нет user.xml"]Joomla 1.6

В /administrator/components/com_users/models/forms/ не файла user.xml, есть profile, но вставка кода не приводит к выводу дополнительного поля (в базе и в регистрации все ок).

Тоже самое и у меня. Как решить?

Нашел решение. Оно состоит в том что тебе надо добраться до components/com_users/views/profile/tmpl
и отредактировать default_core.ph p там вставляеш







Если тебе надо добавить телефон. Ну думаю дальше легко разобраться :) :P
Цитировать
 
 
Эдуард
0 #14 Эдуард 02.04.2013 14:32
Цитирую У меня нет user.xml:
Joomla 1.6

В /administrator/components/com_users/models/forms/ не файла user.xml, есть profile, но вставка кода не приводит к выводу дополнительного поля (в базе и в регистрации все ок).

Подскажите как сделать в админке вывод новой строки в информации об учётной записи

Только сейчас увидел эту коварность. Кто найдет решение отпишитесь. В регистрации все поля есть. Но когда авторизовуваешс я то сразу в провиле их нет. Они появляються только если нажать - Редактировать запись
Цитировать
 
 
Эдуард
+1 #13 Эдуард 01.04.2013 21:08
Цитирую yogan:
у меня версия 2.5.9 - ничего не получилось. все сделал по инструкции. кто подскажет?
нужно добавить ФИО, компания

Проверь регистр он должен совпадать с базой
тоесть если ты написал в xml вот так :
Цитировать
 
 
Эдуард
+3 #12 Эдуард 01.04.2013 21:06
Автор тебе огромный респект, искал просто нереально сколько как это можно выполнить. Оказалось все на столько элементарно
Цитировать
 

Добавить комментарий

Защитный код
Обновить

joomla 1.7

Не получаются доработки?

Становитесь партнером студии Millor! Быстро и недорого эти ребята помогут решить практически любую проблему.

Хотите подзаработать?

Если да, то вам сюда! Партнерская программа студии MyWebSite. Получи 20% за каждого клиента! Работаем по всей России и СНГ!

Рекламное место свободно.