Новости Joomla на русском
Главная Новости Форум Статьи и обзоры Вопросы и Ответы
Joomla! по-русски

Доступен к загрузке релиз безопасности Joomla 1.5.20 [senu takaa]. Данная версия не содержит никаких исправлений, и выпущена лишь потому, что в пакетах обновления до версии 1.5.19 были допущены ошибки (не все файлы были включены). Эти проблемы не касаются полного дистрибутива Joomla 1.5.19, однако разработчики Joomla рекомендуют незамедлительно установить обновление до Joomla 1.5.20 взамен предыдущих версий.

 
воскресенье, 01 августа 2010 Главная arrow Статьи и обзоры arrow Добавляем в форму регистрации поле Дата рождения
Категории
Статьи
Обзоры
Модификации и хаки
Joomla!™ CMS
Russian Joomla Translation Team
Безопасность
Популярные статьи

Замечание

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 | Забобрить эту страницу! | del.icio.us
Статьи и обзоры / Модификации и хаки

Периодически на форуме спрашивают, как добавить то или иное поле в форму регистрации пользователей 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 1.5

Joomla 1.5.20 Что нового в Joomla CMS 1.5.20

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


Joomla 1.5.17 Joomla 1.5.20
Joomla 1.5.18 Joomla 1.5.20
Joomla 1.5.19 Joomla 1.5.20

Локализации

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


Joomla 1.0

(устаревшая версия)

Joomla 1.0.15 Что нового в Joomla CMS 1.0.15

Joomla 1.0.13 Joomla 1.0.15
Joomla 1.0.14 Joomla 1.0.15
все обновления...

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

Языковые файлы

Русский
Украинский
Белорусский

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

Joomla 1.5 FAQ
Joomla 1.0 FAQ
Руководство пользователя Joomla 1.0.11


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

Joomla 1.5.17 Russian
Joomla 1.0.15 LE 2008

Демо версия

Joomla! 1.5.17 (FrontEnd)
Joomla! 1.5.17 (BackEnd)
(Demo/Demo)