Новости Joomla на русском
Главная Новости Форум Статьи и обзоры Вопросы и Ответы
Joomla! по-русски
Вышла стабильная версия Joomla 2.5.1! Исправлено 32 ошибки (2 ошибки безопасности низкого уровня), увеличена скорость работы Joomla на Windows Azure, исправлены ошибки в функциях пакетной обработки и поиска. Библиотека MooTools обновлена до версии 1.4.3. Разработчики настоятельно рекомендуют обновиться до Joomla 2.5.1. Пакет русской локализации Joomla 2.5 уже доступен для загрузки.
 
Saturday, 04 February 2012 Главная arrow Статьи и обзоры arrow Добавляем в форму регистрации поле Дата рождения
Категории
Статьи
Обзоры
Модификации и хаки
Для разработчиков
Joomla!® CMS
Russian Joomla Translation Team
Безопасность
Популярные статьи

Advego.ru - наполнение сайтов информацией

Замечание

Joomla!® является торговой маркой компании Open Source Matters inc в США и др. странах. Название Joomla! и его вариации, такие как J, Joom и т.д., используются в рамках ограниченной лицензии, определённой компанией Open Source Matters. Проект Joomlaportal не относится к компании Open Source Matters или проекту Joomla! Точки зрения представленные на данном сайте не являются официальными точками зрения Joomla Project или Open Source Matters.

Торговая марка Joomla® и логотип используются в рамках ограниченной лицензии, предоставленной Open Source Matters.

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

09.10.2007 | smartСтатьи и обзоры / Модификации и хаки

Периодически на форуме спрашивают, как добавить то или иное поле в форму регистрации пользователей 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. Находим в нем строчки:
              <input type="text" name="name" size="40" value="" class="inputbox" maxlength="50" />
            </td>
        </tr>
    и вставляем после них код:
        <tr>
          <td>
            Дата рождения
          </td>
          <td>
                  <select name="birthDate_d">
              <option value=""></option>
    <?php
              for($i=1; $i<=31; $i++) {
    ?>                
              <option value="<?php echo $i; ?>"><?php echo str_pad($i, 2, "0", STR_PAD_LEFT); ?></option>
    <?php
              }
    ?>                
                  </select>
                  <select name="birthDate_m">
              <option value=""></option>
    <?php
              for($i=1; $i<=12; $i++) {
    ?>                
              <option value="<?php echo $i; ?>"><?php echo str_pad($i, 2, "0", STR_PAD_LEFT); ?></option>
    <?php
              }
    ?>                
                  </select>
                  <select name="birthDate_y">
              <option value=""></option>
    <?php
              for($i=date("Y"), $n=date("Y")-70; $i>=$n; $i--) {
    ?>                
              <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
    <?php
              }
    ?>                
                  </select>
          </td>
        </tr>
  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 2.5

Joomla 2.5.1

Joomla 2.5.0 Joomla 2.5.1

Локализация Joomla 2.5

Пакет русской локализации Joomla 2.5.1

Joomla 1.7

Joomla 1.7.5

Joomla 1.7.3 Russian
(русифицированная версия)

Joomla 1.7.4 Joomla 1.7.5

Локализация Joomla 1.7

Пакет русской локализации Joomla 1.7.5

Joomla 1.5

Joomla 1.5.25

Joomla 1.5.25 Russian
(русифицированная версия)

Joomla 1.5.24 Joomla 1.5.25

Локализация Joomla 1.5

Русский язык для лицевой панели (site)
Русский язык для административной панели (admin)

Как обновить Joomla 1.0
до версии Joomla 1.5?

Документация

Joomla 1.7 FAQ
Joomla 1.5 FAQ
Joomla 1.0 FAQ


Русская версия Joomla

Joomla 1.7 Russian
Joomla 1.5 Russian