В некоторых ситуациях необходимо при регистрации получить информацию о номере телефона пользователя. Для этого необходимо в форме регистрации создать дополнительное поле для ввода номера телефона. Ко всему прочему должна быть возможность вносить изменения в это поле, как администратору сайта, так и непосредственно пользователю, в случае если номер телефона изменился.В этой статье я в подробностях напишу, каким образом реализовать вышеописанный пример.
- /includes/joomla.php
- /components/com_registration/registration.html.php
- /components/com_registration/registration.php
- /components/com_user/user.html.php
- /administrator/components/com_users/admin.users.php
- /administrator/components/com_users/admin.users.html.php
! Настоятельно рекомендую сделать резервную копию этих файлов перед внесением в них изменений !
1.Делаем запрос в базу данных для создания дополнительного поля telephone в таблице пользователей jos_users. Для этого выполним в phpMyAdmin следующий запрос:
ALTER TABLE `jos_users` ADD `telephone` VARCHAR(255) NOT NULL default '';
2. Далее необходимо расширить набор полей класса mosUser, чтобы данные о телефоне пользователя автоматически попадали в базу при его регистрации.
Открываем файл /includes/joomla.php
Находим в нем следующие строчки:
var $params = null;
/**
* @param database A database connector object
*/
function mosUser( &$database ) {
После!:
var $params= null;
вставляем строку:
var $telephone = null;
В этом же файле находим:
$query = "SELECT id, name, email, block, sendEmail,
registerDate, lastvisitDate, activation, params"
Заменяем! на:
$query = "SELECT id, name, email, block, sendEmail, registerDate,
lastvisitDate, activation, params, telephone"
Ниже находим строчку:
$user->activation = $my->activation;
После! нее добавляем:
$user->telephone = $my->telephone;
Это необходимо для того, чтобы страна пользователя была доступна из глобальной переменной $my.Первая часть подготовки выполнена, теперь необходимо добавить непосредственно поле на форму регистрации, и подправить функцию сохранения нового пользователя.
3. Открываем файл /components/com_registration/registration.html.php
Находим в нем строчки:
<tr><td><?php echo _REGISTER_EMAIL; ?> *
Над! ней вставляем:
<tr>
<td width="30%">Номер вашего телефона:</td>
<td><input type="text" name="telephone" size="40"
value="" class="inputbox" maxlength="50" /></td>
</tr>
Открываем файл /components/com_registration/registration.php
Находим в нем строчку:
$row->registerDate = date( 'Y-m-d H:i:s' );
Вставляем после! нее следующий код:
$row->telephone = mosGetParam($_POST, 'telephone', '');
5.Выведем поле «Телефон» в настройках пользователей в админке:
Открываем файл /administrator/components/com_users/admin.users.php
Находим строчки (примерно 213-216):
// load the row from the db table
$row->load( (int)$uid );
if ( $uid ) {
Чуть ниже!, после строки:
$row->username = trim( $row->username );
Вставляем следующую строку:
$row->telephone = trim( $row->telephone );
6.Теперь непосредственно выводим новое поле «Телефон» в настройках пользователя в административной части сайта:Открываем файл /administrator/components/com_users/admin.users.html.php
Ищем примерно 237 строку:
<input class="inputbox" type="text" name="email"
size="40" value="<?php echo $row->email; ?>" />
Чуть выше будет примерно следующий код (может отличаться в разных версиях Joomla!)
<tr>
<td>E-mail:</td>
<td>
Сразу над! ним вставляем:
<tr>
<td>Номер телефона пользователя:</td>
<td><input type="text" name="telephone" class="inputbox"
size="40" value="<?php echo $row->telephone; ?>" maxlength="25" />
</td>
</tr>
7.Выводим поле телефона в фронтальной части сайта, и добавляем возможность редактирования этого поля пользователем
Открываем файл /components/com_user/user.html.php
Находим примерно 104 строку:
<?php echo _EMAIL; ?>
Чуть выше, сразу над:
<tr><td>
вставляем следующий код:
<tr>
<td>Мой номер телефона:</td>
<td><input class="inputbox" type="text" name="telephone"
value="<?php echo $row->telephone;?>" size="40" />
</td>
</tr>
P.S.: Хак опробован на CMS Joomla! 1.0.15 и CMS Joomla! 1.0.15 RE
P.P.S.: Если вам лень проделывать эти махинации, Вы можете скачать с файлового архива (где-то тут) готовые хакнутые файлы, заменить ими оригинальные (предварительно сделав резервную копию!) и выполнить запрос с п.1 в phpMyAdmin
| < Предыдущая | Следующая > |
|---|
Комментарии
Коммент от
Апр 09, 2009Комментатор
Aleks_El_Dia???? - это проблемы несовместимости кодировок.
Коммент от
Янв 18, 2010Комментатор
shно вот беда.
Все поля появились, при регистрации, и в админке в меню пользователя.
Только админу приходит письмо без новых данных, и в меню поля остаются пустыми. Хотя в базе все сохраняется
Коммент от
Апр 12, 2010Комментатор
КонстантинКоммент от
Апр 12, 2010Комментатор
Aleks_El_DiaНапишите Михаилу по этому вопросу - http://www.kladr.org/contacts/administrator/mihail.html
Коммент от
Июн 24, 2010Комментатор
АнатолийRSS лента комментариев этой записи