Дописи в корисному
- А как сделать кнопку ...(0)
- Joomla: JFolder:: create: Path ...(0)
- Прописываем мета ...(0)
- Как убрать meta name="generator" ...(0)
- Регистрация поисковики ...(0)
- IceVmCart+SEF - модуль корзины ...(4)
- Flash поверх выпадающего ...(0)
- Ошибка в Джумле: ...(0)
- Warning: Parameter 1 to modMainMenuHelper::buildXML() ...(0)
- Всплывающее окно ...(0)
- Свежие патчи (обновления) ...(0)
- Простой скрипт плавной ...(0)
- Добавляем новое ...(0)
- Начинающим верстальщикам. ...(0)
- Virtuemart - ускорение ...(1)
- Cloud Zoom - простой и ...(0)
- Инструмент для начальной ...(0)
- error : Parameter 2 to frontpage() ...(0)
- Не все позиции модулей ...(0)
|
бер.
13
Добавляем новое поле в форму регистрации Встал вопрос добавить дополнительное поле в форму регистрации пользователей стандартными средствами, приготовился к глубокому копанию в коде движка (помятуя аналогичный хак для 1.0.хх), но с удивлением для себя обнаружил безумную простоту действия.
Потому по порядку. Добавлять мы будем поле city (текстового типа)/ Выполняем SQL запрос в нашу базу данных:
Код
ALTER TABLE `jos_users` ADD `city` VARCHAR( 250 ) NOT NULL ;Не забываем заменить префикс jos на используемый. Либо можно вручную добавить поле через PHPMyAdmin Добавляем поле в форму регистрации: Файл components\com_user\views\register\tmpl\default.php - в таблицу с формой добавляем новую строку после Username
Код
<tr> <td height="40"> <label id="citymsg" for="city"> <?php echo JText::_( 'City' ); ?>: </label> </td> <td> <input type="text" id="city" name="city" size="40" value="<?php echo $this->user->get( 'city' );?>" class="inputbox required validate-city" maxlength="25" /> * </td> </tr> Добавляем возможность просмотра и редактирования нового поля в панели администрирования Файл administrator\components\com_users\views\user\tmpl\form.php - добавляем в таблицу новую ячейку после username
Код
<tr> <td class="key"> <label for="city"> <?php echo JText::_( 'City' ); ?> </label> </td> <td> <input type="text" name="city" id="city" class="inputbox" size="40" value="<?php echo $this->user->get('city'); ?>" autocomplete="off" /> </td> </tr> Глобальное магическое действие: файл libraries\joomla\database\table\user.php в класс class JTableUser после строки
Код
var $username = null;добавляем
Код
var $city = null; В этом же файле находим функцию function check() и добавляем проверку на наше поле (если нужно) - данная проверка будет у меня отрабатывается при отключенном JS в браузере и никогда не помешает
Код
if (trim( $this->city ) == '') { $this->setError( JText::_( 'Please enter a city.') ); return false; } Вот и все, в результате я получил обязательное при регистрации поле City, доступно для просмотра и редактирования в админ панели, доступно на фронтенде через объект $user (подробно о нём почитать можно здесь):
Код
$user =& JFactory::getUser(); echo $user->city; Проверял на Joomla 1.5.7 - работоспособно, если обнаружатся какие-либо ошибки - прошу отписывать. P.S. не забываем делать резервные копии редактируемых файлов Источник: http://joomlaforum.ru/index.php/topic,44640.0.html |
Show Post










