fast cash

Добавляем дополнительное поле в форму регистрации Joomla 1.5

Я столкнулся с ситуацией... Для мониторинга нужна была дополнительная информация о зарегистрированных пользователях сайта. Нужно было знать некоторые данные (любимое направление в музыке, любимых музыкальных исполнителей и т.д), контактные номера телефонов и прочее. На сайте была установлена система Joomla 1.5. Ставить дополнительные расширения не хотелось (сайт итак прилично загружен). Выход один - добавлять дополнительные поля в форму регистрации на сайте.

Как добавить дополнительное поле в форму регистрации Joomla 1.5, например город, пол, номер телефона и прочие данные ?

Такой вопрос мучает многих у кого установлена система Joomla. Многие решают данную проблему путем установки (например) Community Builder или прочих расширений. Но не обязательно устанавливать дополнительные компоненты, тем самым грузить сервер базы данных. Дополнительные поля в форме регистрации пользователей можно сделать самому. Для этого Вам потребуется внимательность, для первого раза усидчивость и текстовый редактор (блокнот, PSPad editor, Notepad++ или любой другой). Итак, как же сделать в форме регистрации Joomla 1.5 поля, не входящие в стандартную установку? Поехали...

Вот стандартная форма регистрации Joomla 1.5:

Стандартная форма регистрации CMS Joomla! 1.5

Эксперимент - Добавляем поле "Город" в форму регистрации на сайте.

Так как в CMS Joomla вся информация заносится и хранится в базе данных MySQL, то нам нужно создать новое место в базе для хранения информации о городе в котором проживает пользователь. Для этого нужно зайти в панель управления базы через phpMyAdmin.

Вот стандартная панель управления phpMyAdmin в которой выбираем базу нужного нам сайта (для примера делаю на локальной машине, а не на сервере хостинга):

phpMyAdmin

Далее, в  открывшейся базе выбираем вкладку SQL:

phpMyAdmin

Затем, в пустом окошке пишем следующее (ожно скопировать отсюда):

ALTER TABLE `jos_users` ADD `city` VARCHAR( 250 ) NOT NULL ;

После этого жмём "Go".

phpMyAdmin

Всё! В базе данных сайта, таблице "jos_users" создано место для внесения и хранения информации о городе проживания пользователя. На этом работа с базой данных сайта закончена.

phpMyAdmin

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>

 

Вот и всё! Мы с Вами обошлись даже без редактирования языковых файлов, так как писали выводимый текст уже на Русском языке.

У нас получилась вот такая форма регистрации с обязательным для заполнения полем "Город"

Форма регистрации CMS Joomla! 1.5 с дополнительным полем.

PS: Для первого раза (от греха подальше) делайте копии редактируемых файлов. И не забывайте сохранять редактируемые файлы в формате UTF-8.

Пример дополнительных полей в форме регистрации можно найти ЗДЕСЬ


Вы можете оценить эту статью, если считаете нужным...

Комментарии 

 
0 #7 Kup 03.06.2013 19:33
Все четко написано. Однако есть вопрос: а что если поле типа file будет? как занести в базу? где обработка $_FILES происходит? в контроллере я не нашел. Если будет возможность - ответьте доп. на мыло. СПС заранее
Сообщить модератору
 
 
+2 #6 Игорь 11.04.2013 13:40
Спасибо огромное!!!
Сообщить модератору
 
 
0 #5 Игорь 15.02.2013 14:51
Автору спасибо , заказ был просили поле Телефон:
:roll:
Сообщить модератору
 
 
0 #4 wemarus.ru 13.02.2013 14:35
А лучше сохранять в UTF(без BOM) либо вынести нужные слова в языковой файл и вызывать по типу:
echo JText::_( 'city' );
Сообщить модератору
 
 
-1 #3 Светлана 08.01.2013 00:19
Если не заполняешь город, вся форма очищается. Появляется надпись над формой "заполнить город", а поле красным не выделяется (((( помогите :oops:
Сообщить модератору
 
 
-1 #2 Administrator 02.12.2012 20:57
Цитирую Елена:
Вместо надписи "Город" вышло пять вопросительных знаков. Что не так?


Проблема с кодировкой Вашего сайта. Читайте PS для этой статьи.
Сообщить модератору
 
 
0 #1 Елена 02.12.2012 19:34
Вместо надписи "Город" вышло пять вопросительных знаков. Что не так?
Сообщить модератору
 

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


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



google pagerank

Каталог@Mail.ru - каталог ресурсов интернет

2009 - 2013 © Расширения Joomla на Русском языке