Добавление дополнительного поля для телефона пользователя

номера телефонов

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


Источник: http://www.dia.org.ua

Добавить комментарий:
Имя:
E-mail:
2021 © Обсуждение Joomla и других CMS-систем управления сайтами  Правила | О проекте | Обратная связь