В некоторых ситуациях необходимо при регистрации получить информацию о номере телефона пользователя. Для этого необходимо в форме регистрации создать дополнительное поле для ввода номера телефона. Ко всему прочему должна быть возможность вносить изменения в это поле, как администратору сайта, так и непосредственно пользователю, в случае если номер телефона изменился.В этой статье я в подробностях напишу, каким образом реализовать вышеописанный пример.
- /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
| < Предыдущая | Следующая > |
|---|
Комментарии
Коммент от
Фев 06, 2009Комментатор
ПавелКоммент от
Фев 06, 2009Комментатор
Aleks_El_DiaКоммент от
Фев 10, 2009Комментатор
TalgatКоммент от
Фев 10, 2009Комментатор
TalgatКоммент от
Фев 10, 2009Комментатор
Aleks_El_DiaКоммент от
Фев 11, 2009Комментатор
TalgatСорри. Все нормально. Поля я сделал вручную. Просто В файле joomla.php изменения не сохранились. Пришлось ввести заново. Спасибо!!!
Коммент от
Фев 11, 2009Комментатор
Aleks_El_DiaКоммент от
Фев 22, 2009Комментатор
VladislavТолько вместо $row->telephone = mosGetParam($_P OST, 'telephone', ''); чуть выше, нашёл код $row->name = trim($row->name); и дописал $row-> telephone = trim($row-> telephone);
и вместо "Номер вашего телефона:" написал "echo _PHONE;" (теги php нужно ещё прописать. Здесь упустил чтобы не вырезалось в комментариях) чтобы красоту кода не нарушать :-). Ну и соответственно, добавил переменную в russian.php. Но, это не принципиально)
Коммент от
Фев 22, 2009Комментатор
Aleks_El_DiaМожно и языковую переменную добавить, но я пошел по пути наименьшего количества файлов, которые нужно править
Коммент от
Апр 09, 2009Комментатор
ОekaRSS лента комментариев этой записи