Добавляем дополнительное поле в форму регистрации Joomla 1.5
Я столкнулся с ситуацией... Для мониторинга нужна была дополнительная информация о зарегистрированных пользователях сайта. Нужно было знать некоторые данные (любимое направление в музыке, любимых музыкальных исполнителей и т.д), контактные номера телефонов и прочее. На сайте была установлена система Joomla 1.5. Ставить дополнительные расширения не хотелось (сайт итак прилично загружен). Выход один - добавлять дополнительные поля в форму регистрации на сайте.
Как добавить дополнительное поле в форму регистрации Joomla 1.5, например город, пол, номер телефона и прочие данные ?
Такой вопрос мучает многих у кого установлена система Joomla. Многие решают данную проблему путем установки (например) Community Builder или прочих расширений. Но не обязательно устанавливать дополнительные компоненты, тем самым грузить сервер базы данных. Дополнительные поля в форме регистрации пользователей можно сделать самому. Для этого Вам потребуется внимательность, для первого раза усидчивость и текстовый редактор (блокнот, PSPad editor, Notepad++ или любой другой). Итак, как же сделать в форме регистрации Joomla 1.5 поля, не входящие в стандартную установку? Поехали...
Вот стандартная форма регистрации Joomla 1.5:
Эксперимент - Добавляем поле "Город" в форму регистрации на сайте.
Так как в CMS Joomla вся информация заносится и хранится в базе данных MySQL, то нам нужно создать новое место в базе для хранения информации о городе в котором проживает пользователь. Для этого нужно зайти в панель управления базы через phpMyAdmin.
Вот стандартная панель управления phpMyAdmin в которой выбираем базу нужного нам сайта (для примера делаю на локальной машине, а не на сервере хостинга):
Далее, в открывшейся базе выбираем вкладку SQL:
Затем, в пустом окошке пишем следующее (ожно скопировать отсюда):
ALTER TABLE `jos_users` ADD `city` VARCHAR( 250 ) NOT NULL ;
После этого жмём "Go".
Всё! В базе данных сайта, таблице "jos_users" создано место для внесения и хранения информации о городе проживания пользователя. На этом работа с базой данных сайта закончена.
PS: По умолчанию, в таблицах Joomla устанавливается префикс jos (например jos_users). Если Вы меняли префикс на другой то в SQL запросе тоже замените на свой.
Переходим к другому этапу. Сейчас будем править исходный код системы Joomla 1.5. Будьте внимательны!!!
1. Редактирование файла default.php. Он находится по адресу: ВАШ_САЙТ/components/com_user/views/register/tmpl/
После строки №43 она заканчивается </tr> (после свойств username) отступите строчку вниз и вставьте следующие строчки (можете копировать и вставлять отсюда - проверено на работоспособность):
<tr>
<td height="40">
<label id="citymsg" for="city">
<?php echo JText::_( 'Город' ); ?>:
</label>
</td>
<td>
<input type="text" id="city" name="city" size="40" value="<?php echo $this->escape($this->user->get( 'city' ));?>" maxlength="25" /> *
</td>
</tr>
Тем самым Вы добавляете новое поле в форме регистрации. После сохранения файла, можете начать регистрацию на сайте и, увидите, что появилась новая строчка.
2. Редактирование файла form.php. Он находится по адресу: ВАШ_САЙТ/administrator/components/com_users/views/user/tmpl/
После строки №94 она заканчивается </tr> (после свойств username) отступите строчку вниз и вставьте следующие строчки (можете копировать и вставлять отсюда - проверено на работоспособность):
<tr>
<td class="key">
<label for="city">
<?php echo JText::_( 'Город' ); ?>
</label>
</td>
<td>
<input type="text" name="city" id="city" size="40" value="<?php echo $this->user->get('city'); ?>" autocomplete="off" />
</td>
</tr>
После этого в Админпанели, при просмотре данных пользователя Вы увидите новую строчку.
3. Редактирование файла user.php. Он находится по адресу: ВАШ_САЙТ/libraries/joomla/database/table/
После строки №46 (после свойств username) отступите строчку вниз и вставьте следующую строчку (можете копировать и вставлять отсюда - проверено на работоспособность):
var $city = null;
И после строчки №154 она заканчивается скобочкой } (после свойств username) отступите строчку вниз и вставьте следующую строчку (можете копировать и вставлять отсюда - проверено на работоспособность):
if (trim( $this->city ) == '') {
$this->setError( JText::_( 'Пожалуйста, введите город.') );
return false;
}
Если пользователь не введёт город при регистрации, то появится сообщение о необходимости заполнения этого поля.
4. Для того, чтобы пользователь смог отредактировать свой город проживания (вдруг он переедет), Вам нужно внести корректировку в файл form.php.
Этот фай расположен по адресу: ВАШ_САЙТ/components/com_user/views/user/tmpl/
После строки №38 (после свойств name) отступите строчку вниз и вставьте следующие строки (можете копировать и вставлять отсюда - проверено на работоспособность):
<tr>
<td width="120">
<label for="name">
<?php echo JText::_( 'Мой город' ); ?>:
</label>
</td>
<td>
<input type="text" id="city" name="city" value="<?php echo $this->escape($this->user->get('city'));?>" size="40" />
</td>
</tr>
Вот и всё! Мы с Вами обошлись даже без редактирования языковых файлов, так как писали выводимый текст уже на Русском языке.
У нас получилась вот такая форма регистрации с обязательным для заполнения полем "Город"
PS: Для первого раза (от греха подальше) делайте копии редактируемых файлов. И не забывайте сохранять редактируемые файлы в формате UTF-8.
Пример дополнительных полей в форме регистрации можно найти ЗДЕСЬ
Вы можете оценить эту статью, если считаете нужным...
Комментарии
echo JText::_( 'city' );
Проблема с кодировкой Вашего сайта. Читайте PS для этой статьи.