Memori БобрДобр Закладки Google Яндекс.Закладки Twitter del.icio.us Текст 2.0 News2 Мистер Вонг МоёМесто СМИ 2 Ваау!AddScoop LinkStore RuSpace Сто Закладок© ОднаКнопка.ру

# tushov.ru

Блог Тушова Леонида

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

Недавно, в одном проекте понадобилось добавить пару полей на форму регистрации пользователя в Jooml’e, а именно ФИО, номер телефона, ICQ, адрес и т.д. Подходящих компонентов для Joomla 1.5 найти не удалось. Потому предлагаю свое решение данной проблемы самым простым как мне кажется способом:
1) Качаем, устанавливаем и включаем мой плагин Extension User Data
2) Добавляем необходимые дополнительные поля в файлы: \administrator\components\com_users\models\user.xml и \administrator\components\com_users\models\registered.xml, к примеру:

view source
print?

`1` | `<?xml version=``"1.0"` `encoding=``"utf-8"``?>`

`2` | `<form>`

`3` | `<name>Registered User Type</name>`

`4` | `<params>`

`5` | `<param name=``"language"` `type=``"languages"` `client=``"site"` `default``=``""` `label=``"Front-end Language"` `description=``"paramLanguage"` `/>`

`6` | `<param name=``"timezone"` `type=``"timezones"` `default``=``""` `label=``"Time Zone"` `description=``"Time Zone for this User"` `/>`

`7` | `<param name=``"familiya"` `type=``"text"` `label=``"Фамилия"` `size=``"60"` `/>`

`8` | `</params>`

`9` | `</form>`

Здесь добавлено поле familiya. Добавлять можно сколько угодно полей различных типов, все значения полей для конкретного пользователя будут храниться в поле params таблицы jos_users
3) И последнее, не забудьте отредактировать форму регистрации, находится она в файле \components\com_user\views\register\tmpl\default.php или же \templates\ваш_шаблон\html\com_user\register\default.php. Кроме того, я не советую редактировать файл \components\com_user\views\register\tmpl\default.php (если файл \templates\ваш_шаблон\html\com_user\register\default.php не существует), лучше скопируйте его в папку своего шаблона и Joomla сама подключит его (данный файл должен лежать в \templates\ваш_шаблон\html\com_user\register\default.php). В форме регистрации имена дополнительных полей должны быть ключами массива params, т.е. к примеру для примера выше с полем familiya:
`<input type="text" name="params[familiya]" />`

Ну вот и все =)

#### Похожие записи

- Экранирование внешних ссылок в Joomla с помощью плагина ExtLinks
- Плагин TViewer – сделай выбор шаблона Joomla удобнее…
- Плагин StartPage – если нужна стартовая страница (заставка) для сайта…
- Очередное обновление плагина ExtLinks – версия 2.1
- Обновление SEO-плагина JSEOPlugin 1.1

Joomla, Разработка 11.09.2009 21:55 Просмотров: 5,840

Метки: Joomla, разработка, Расширения, расширения Joomla

## Комментарии

Комметариев: 39 к записи: “Дополнительные поля формы регистрации пользователя в Joomla 1.5”

1. xandr:
   2010/04/26 в 19:15

   только что удалил добавленную строку в 2 файлах:

   \administrator\components\com_users\models\user.xml и \administrator\components\com_users\models\registered.xml

   … ошибка XML Parsing Error at 7:61. Error 9: Invalid character пропала … просматривать информацию о пользователях можно нормально .. правда поля Телефон как не было, тиак и нет )

   … у меня joomla 1.5.14 … может просто версия не совместима с Вашим плагином? … ули руки мне ровнять надо )

2. Тушов Леонид:
   2010/04/26 в 21:11

   > XML Parsing Error at 7:61. Error 9: Invalid character

   и

   > и почему начала выдаваться ошибка при просмотре учетных записей пользователей ?

   – это все из-за ошибки в вашем XML файле, который вы отредактировали. Ищите ошибку – неверный символ ну или что-то подобное… Xml файл обязательно должен быть сохранен в кодировке UTF-8
   Что касается БД, то нужно смотреть таблицу jos_users - найти строку соответствующую зарегистрированному пользователю, в поле params должна быть запись вида phone=значение

   > … у меня joomla 1.5.14 … может просто версия не совместима с Вашим плагином? …

   нет мой плагин работает на всей линейке 1.5.X – так что и вашем случае должен работать без проблем!

3. xandr:
   2010/04/27 в 03:51

   Леонид, не знаю – так задумывалось Вами или нет … но … из файла
   \administrator\components\com_users\models\registered.xml
   … я вообще убрал всяческие добавления – оставил его в исходном виде … далее … файл
   \administrator\components\com_users\models\user.xml
   … в него я внес те изменения, которые Вы описывали в статье … в результате – пропала ошибка в админском меню при просмотре информации о пользовател (XML Parsing Error at 7:61. Error 9: Invalid character ) … в форму регистрации пользователя – добавилось нужное поле … а в БД (там где Вы описали) – все есть и вносится, при регистрации нового пользователя …

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

   НО

   ОГРОМНОЕ ВАМ ЧЕЛОВЕЧЕСКОЕ СПАСИБО за Ваши труды, терпение и старание!!!! … если сможете обьяснить – как внести доп. поле (телефон) в данные пользователя при просмотре их через админку – буду вообще в восторге … ну а нет – и на том еще раз благодарю Вас! :)

4. Тушов Леонид:
   2010/04/27 в 11:55

   Радует что у вас данные пишутся в БД )
   По поводу \administrator\components\com_users\models\registered.xml и \administrator\components\com_users\models\user.xml
   первый отвечает именно за запись доп. полей в БД в поле params для юзера, второй нужен как раз для отображения значений этих доп. полей
   Вы смотрите значение поля телефон в админке, в режиме редактирования юзера – так ведь?
   у вас там отображены поля: Язык административной панели, Язык сайта, Редактор пользователя, Сайт помощи, Временная зона
   Если вы откроете файл \administrator\components\com_users\models\user.xml и посмотрите на его содержимое:

   view source
   print?

   `01` | `<?xml version=``"1.0"` `encoding=``"utf-8"``?>`

   `02` | `<form>`

   `03` | `` `<params>`

   `04` | `` `<param name=``"admin_language"` `type=``"languages"` `client=``"administrator"` `default``=``""` `label=``"Back-end Language"` `description=``"paramAdminLanguage"` `/>`

   `05` | `` `<param name=``"language"` `type=``"languages"` `client=``"site"` `default``=``""` `label=``"Front-end Language"` `description=``"paramLanguage"` `/>`

   `06` | `` `<param name=``"editor"` `type=``"editors"` `default``=``""` `label=``"User Editor"` `description=``"WYSIWYG Editor for this User"` `/>`

   `07` | `` `<param name=``"helpsite"` `type=``"helpsites"` `default``=``""` `label=``"Help Site"` `description=``"Help Site for this User"` `/>`

   `08` | `` `<param name=``"timezone"` `type=``"timezones"` `default``=``""` `label=``"Time Zone"` `description=``"Time Zone for this User"` `/>`

   `09` | `` `</params>`

   `10` | `</form>`

   вы поймете что это именно те поля которые отображаются у вас в админке для определенного пользователя, если же глянете на содержимое файла \administrator\components\com_users\models\registered.xml:

   view source
   print?

   `1` | `<?xml version=``"1.0"` `encoding=``"utf-8"``?>`

   `2` | `<form>`

   `3` | `` `<name>Registered User Type</name>`

   `4` | `` `<params>`

   `5` | `` `<param name=``"language"` `type=``"languages"` `client=``"site"` `default``=``""` `label=``"Front-end Language"` `description=``"paramLanguage"` `/>`

   `6` | `` `<param name=``"timezone"` `type=``"timezones"` `default``=``""` `label=``"Time Zone"` `description=``"Time Zone for this User"` `/>`

   `7` | `` `</params>`

   `8` | `</form>`

   то не увидите этих полей.
   По хорошему дополнительные поля должны быть внесены в оба файла, если у вас при открытии страницы вылетает ошибка парсинга XML – ищите ошибку в этом файле. Как я уже сказал скорее всего проблема где-то в неверном символе или же кодировке .. или же еще раз напишите мне тут в комментариях содержимое вашего файла после добавление доп. поля который вызывает ошибку я попробую посмотреть найти ошибку.

5. xandr:
   2010/04/28 в 23:16

   Леонид, очевидно вся загвоздка была в русских буквах в файлах registered и user
   … сегодня сидел ковырялся и вот к чему пришел …
   фал \administrator\components\com_users\models\user.xml у меня имеет тако

6. xandr:
   2010/04/28 в 23:27

   такой вид:

   view source
   print?

   `01` | `<?xml version=``"1.0"` `encoding=``"utf-8"``?>`

   `02` | `<form>`

   `03` | `` `<params>`

   `04` | `` `<param name=``"admin_language"` `type=``"languages"` `client=``"administrator"` `default``=``""` `label=``"Back-end Language"` `description=``"paramAdminLanguage"` `/>`

   `05` | `` `<param name=``"language"` `type=``"languages"` `client=``"site"` `default``=``""` `label=``"Front-end Language"` `description=``"paramLanguage"` `/>`

   `06` | `` `<param name=``"editor"` `type=``"editors"` `default``=``""` `label=``"User Editor"` `description=``"WYSIWYG Editor for this User"` `/>`

   `07` | `` `<param name=``"helpsite"` `type=``"helpsites"` `default``=``""` `label=``"Help Site"` `description=``"Help Site for this User"` `/>`

   `08` | `` `<param name=``"timezone"` `type=``"timezones"` `default``=``""` `label=``"Time Zone"` `description=``"Time Zone for this User"` `/>`

   `09` | `` `<param name=``"phone"` `type=``"text"` `default``=``""` `label=``"Phone"` `description=``"Phone"` `/>`

   `10` | `` `</params>`

   `11` | `</form>`

   … файл \administrator\components\com_users\models\registered.xml – такой вид:

   view source
   print?

   `1` | `<?xml version=``"1.0"` `encoding=``"utf-8"``?>`

   `2` | `<form>`

   `3` | `` `<name>Registered User Type</name>`

   `4` | `` `<params>`

   `5` | `` `<param name=``"language"` `type=``"languages"` `client=``"site"` `default``=``""` `label=``"Front-end Language"` `description=``"paramLanguage"` `/>`

   `6` | `` `<param name=``"timezone"` `type=``"timezones"` `default``=``""` `label=``"Time Zone"` `description=``"Time Zone for this User"` `/>`

   `7` | `` `<param name=``"phone"` `type=``"text"` `default``=``""` `label=``"Phone"` `description=``"Phone"` `/>`

   `8` | `` `</params>`

   `9` | `</form>`

   … а в файл \templates\ваш_шаблон\html\com_user\register\default.php я внес такое дополнение:

   view source
   print?

   `01` | `<tr>`

   `02` | `` `<td height=``"40"``>`

   `03` | `` `<label id=``"emailmsg"` `for``=``"email"``>`

   `04` | `` `<?php` `echo` `JText::_(` `'Email'` `); ?>:`

   `05` | `` `</label>`

   `06` | `` `</td>`

   `07` | `` `<td>`

   `08` | `` `<input type=``"text"` `id=``"email"` `name=``"email"` `size=``"40"` `value=``"<?php echo $this->escape($this->user->get( 'email' ));?>"` `class``=``"inputbox required validate-email"` `maxlength=``"100"` `/> *`

   `09` | `` `</td>`

   `10` | `</tr>`

   `11` | `<strong><tr>`

   `12` | `` `<td height=``"40"``>`

   `13` | `` `<label id=``"phonemsg"` `for``=``"phone"``>`

   `14` | `` `<?php` `echo` `JText::_(` `'Mobile Phone'` `); ?>:`

   `15` | `` `</label>`

   `16` | `` `</td>`

   `17` | `` `<td>`

   `18` | `` `<input type=``"text"` `id=``"phone"` `name=``"params[phone]"` `size=``"40"` `value=``"<?php echo $this->escape($this->user->get( 'phone' ));?>"` `class``=``"inputbox required validate-phone"` `maxlength=``"100"` `/> *`

   `19` | `` `</td>`

   `20` | `</tr></strong>`

   `21` | `<tr>`

   `22` | `` `<td height=``"40"``>`

   `23` | `` `<label id=``"pwmsg"` `for``=``"password"``>`

   `24` | `` `<?php` `echo` `JText::_(` `'Password'` `); ?>:`

   `25` | `` `</label>`

   `26` | `` `</td>`

   `27` | `` `<td>`

   `28` | `` `<input` `class``=``"inputbox required validate-password"` `type=``"password"` `id=``"password"` `name=``"password"` `size=``"40"` `value=``""` `/> *`

   `29` | `` `</td>`

   `30` | `</tr>`

   … в таком случае, в форме регистрации нового пользователя на сайте появляется поле «Mobile Phone» … регистрация проходит нормально … в БД записываются данные phone=»значение» … а в адвинском меню сайта в режиме регистрации пользователя – появляется окно «Phone» …

   …. если же вносить русские буквы или ту строку, которая есть у Вас в примере – то почему-то выдаются ошибки, когда заходишь в режиме редактирования зарегестрированного пользователя (заходишь через админку сайта) … но при этом в БД все пишется нормально ….

   … и еще одно НО … при просмотре информации о пользователях в БД … для пользователя Администратор, вместо телефона появляются такие значения …

   admin__language=
   language=
   editor=
   helpsite=
   timezone=
   phone=5555555 (это номер телефона админа)

   … не знаю почему так, но в остальном вроде бы все ок …

7. Тушов Леонид:
   2010/04/29 в 11:46

   > …. если же вносить русские буквы или ту строку, которая есть у Вас в примере – то почему-то выдаются ошибки, когда заходишь в режиме редактирования зарегестрированного пользователя (заходишь через админку сайта) … но при этом в БД все пишется нормально ….

   - все же еще раз посоветую обратить внимание на кодировку в котором вы сохраняете файл! Она должна быть UTF-8 не все редакторы умеют корректно сохраняться файлы в этой кодировке. К примеру Notepad++ вставляет при наличии кириллице в содержимом спец. символы в начале файла – из-за этого могут сыпатся ошибки при парсинге XML Jooml’ой!

   > … и еще одно НО … при просмотре информации о пользователях в БД … для пользователя Администратор, вместо телефона появляются такие значения …

   > admin__language=
   > language=
   > editor=
   > helpsite=
   > timezone=
   > phone=5555555 (это номер телефона админа)

   - а что в админке у пользователя Администратор отображается в поле phone? Более того вы же пользователя не регистрировали этого – он был создан автоматически при установке Joomla. Значение дополнительного поля было сохранено или из формы обновления профиля во Front-End’е сайта или же из админке при редактировании его же.

8. xandr:
   2010/05/01 в 01:56

   возможно, Вы правы, на счет «особенностей некоторых редакторов» … сохранял Notepad++ … правда кодировку ставил именно UTF-8 … в результате при наличии кирилицы – выдаются квадратики в созданном поле формы … но это не столь важно – поля озаглавил английскими

   … а на счет «а что в админке у пользователя Администратор отображается в поле phone?» … там все корректно и выдаются только цифры № телефона, т.е. 5555555

   … последнее я спросил лишь из-за того, что есть разница в формате записи в БД у админа и других пользователей … но Вы полностью обьяснили возможную причину этого …

   … спасибо Вам огромнео, Леонид … благодаря таким терпеливым разьяснениям – неопытные пользователи (вроде меня) – приобретают опыт

9. Тушов Леонид:
   2010/05/01 в 22:34

   пожалуйста! все мы когда-то были «неопытными» :)

Страница 4 из 4«1 2 3 4
Показать все комментарии на одной странице

## Комментарии

Нажмите, чтобы отменить ответ.
Пожалуйста, для корректной вставки кода (php,html,css и др.) в ваши комментарии пользуйтесь кнопкой Вставить код

Имя (*)

Почта (не публикуется) (*)

Сайт

Уведомлять меня о новых комментариях на электронную почту

© 2009 tushov.ru