В некоторых ситуациях необходимо при регистрации получить информацию о номере телефона пользователя. Для этого необходимо в форме регистрации создать дополнительное поле для ввода номера телефона. Ко всему прочему должна быть возможность вносить изменения в это поле, как администратору сайта, так и непосредственно пользователю, в случае если номер телефона изменился.
В этой статье я в подробностях напишу, каким образом реализовать вышеописанный пример.
Для реализации этого небольшого хака нам понадобятся следующие файлы:
/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 ) {
После!:
вставляем строку:
В этом же файле находим:
$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>
4.Теперь исправляем непосредственно функцию сохранения нового пользователя, добавляя в нее сохранение введенной страны пользователя.
Открываем файл
/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>Номер телефона пользователя:</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 строку:
Чуть выше, сразу над:
вставляем следующий код:
<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
Оригинал статьи - там же в файловом архиве можно скачать готовые хакнутые файлы которые просто нужно закинуть на сайти и заменить ими оригинальные