Добавляем в форму регистрации Joomla 1.0 поле Дата рождения

  • Вторник, 09 октября 2007

Периодически на форуме спрашивают, как добавить то или иное поле в форму регистрации пользователей Joomla. И почти всегда их отправляют читать разделы и документацию по компоненту CommunityBuilder — действительно мощному решению для расширения профайлов пользователей Joomla. Однако не всегда это нужно. Иногда требуется всего одно-два поля, а приходится ставить целый компонент. В этой статье я хочу рассказать, как вручную добавить поле в форуму регистрации пользователей.

Перед началом модификаций рекомендую создать резервную копию изменяемых файлов. Если у вас вдруг что-то не получится наличие резервной копии позволит вам откатить изменения и восстановить работоспособность сайта.

Для начала необходимо добавить такое поле в таблицу jos_users, чтобы можно было хранить введенную пользователем информацию. Для этого выполним в phpMyAdmin следующий запрос:

ALTER TABLE `jos_users` ADD `birthDate` DATETIME NOT NULL default '0000-00-00 00:00:00';

После этого расширим набор полей класса mosUser, чтобы данные о дате рождения автоматически попадали в базу при регистрации пользователя.

  1. Открываем файл /includes/joomla.php
  2. Находим в нем строчки:
    	var $params			= null;
    
    	/**
    	* @param database A database connector object
    	*/
    	function mosUser( &$database ) {
    и заменяем их на
    	var $params			= null;
    	var $birthDate			= null;
    
    	/**
    	* @param database A database connector object
    	*/
    	function mosUser( &$database ) {
  3. Сохраняем изменения в файле

Первая часть подготовки выполнена, теперь необходимо добавить непосредственно поле на форму, и подправить функцию сохранения нового пользователя.

  1. Открываем файл /components/com_registration/registration.html.php
  2. Находим в нем строчки:
    		  		
    		  	
    		
    
    и вставляем после них код:
    		
    			
    				Дата рождения
    			
    			
    			        
    			        
    			        
    			
    		
    
  3. Сохраняем изменения в файле

Теперь исправляем непосредственно функцию сохранения нового пользователя, добавляя в нее сохранение введенной даты рождения пользователя.

  1. Открываем файл /components/com_registration/registration.php
  2. Находим в нем строчку:
    $row->registerDate 	= date( 'Y-m-d H:i:s' );
    и вставляем после нее код:
    	$birthD = intval( mosGetParam( $_POST, 'birthDate_d', 0 ) );
    	$birthM = intval( mosGetParam( $_POST, 'birthDate_m', 0 ) );
    	$birthY = intval( mosGetParam( $_POST, 'birthDate_y', 0 ) );
    	if ($birthD != 0 && $birthM != 0 & $birthY != 0) {
    		$row->birthDate = date( 'Y-m-d  H:i:s', mktime (0,0,0,$birthM,$birthD,$birthY) );	
    	}
  3. Сохраняем изменения в файле

Небольшое примечание от yAnTar: для того, чтобы дата рождения пользователя была доступна из глобальной переменной $my необходимо сделать еще одну правку:

  1. Открываем файл /includes/joomla.php
  2. Находим в нем строчку:
    $query = "SELECT id, name, email, block, sendEmail, registerDate, lastvisitDate, activation, params"
    и заменяем ее на:
    $query = "SELECT id, name, email, block, sendEmail, registerDate, lastvisitDate, activation, params, birthDate"
  3. Затем чуть ниже находим строчку:
    $user->activation		= $my->activation;
    и после нее добавляем:
    $user->birthDate		= $my->birthDate;
  4. Сохраняем изменения в файле

Ну вот вроде бы и все, осталось только проверить на деле.

Желаю успешных экспериментов, жду отзывов и вопросов на форуме!

Joomla!® CMS — пожалуй, лучшая система управления контентом с открытым исходным кодом

Логотип Joomla

Joomla! — это больше, чем просто программное обеспечение, это люди, включающие разработчиков, дизайнеров, системных администраторов, переводчиков, копирайтеров, и, что самое главное — простых пользователей.

Мы рады пригласить вас в ряды нашего сообщества!

Свернуть

Коротко о главном в Joomla

Новости портала

Новое в блогах

Видео

Форум о Joomla