Откройте phpMyAdmin и базу данных в которую установлена Joomla. И давайте добавим 2 новых поля в таблицу jos_users: website (website VARCHAR (255) not null) и gender (gender VARCHAR (3) not null) ну или выполните такой запрос в поле SQL запроса:
ALTER TABLE `jos_users` ADD `website` VARCHAR( 255 ) NOT NULL , ADD `gender` VARCHAR( 20 ) NOT NULL
Продолжим. Откройте в любом текстовом редакторе(кроме Блокнота) файл {папка joomla}/libraries/joomla/database/table/user.php и после строки:
var $params = null;
Вставляем:
/** * Description * * @var string */ var $website = null; /** * Description * * @var string */ var $gender = null;
Таким образом мы сообщим jooml'е, что необходимо добавить значения полей в базу данных. Теперь находим файл {папка joomla}/components/com_user/views/register/tmpl/default.php (строка 74) и открываем его.
Здесь нам необходимо добавить 2 поля в форму регистрации. Мы назовем их так же, как и поля в базе данных. Сверстаем тем же способом что и остальные поля — таблицей, смотрим:
<tr> <td height="40"> <label for="website"><?php echo JText::_( 'WEBSITE' ); ?></label> </td> <td> <input type="text" id="website" name="website" size="40" value="http://" /> </td> </tr> <tr> <td height="40"><?php echo JText::_( 'GENDER' ); ?></td> <td> <input type="radio" id="g_m" checked="true" name="gender" value="m" /> <label for="g_m"><?php echo JText::_( 'MALE' ); ?></label> <br /> <input type="radio" id="g_f" name="gender" value="f" /> <label for="g_f"><?php echo JText::_( 'FEMALE' ); ?></label> </td> </tr>
Немного пояснений.
Дело в том, что в Joomla, как и во всех системах управления сайтом есть мощная система управления языками и куча фишек для управления ими. Но для программиста, пишущего свой код под CMS должно быть еще больше подобных возможностей. Класс JText в Joomla довольно прост в использовании.
Давайте добавим в языковые файлы 4 строчки: WEBSITE, GENDER, MALE, FEMALE. Но для каждого компонента есть свой языковой файл. Открываем {папка joomla}/language/ru-RU/ru-RU.com_user.ini в любом текстовом редакторе и пишем в конце файла:
WEBSITE=Веб-сайт GENDER=Пол MALE=Мужской FEMALE=Женский
Думаю, все легко и просто, никаких дополнительных действий не требуется.
Но вот в чем еще казус — пользователь наверное захочет отредактировать свои данные если что. Поэтому откроем файл {папка joomla}/components/com_user/views/user/tmpl/form.php (строка 70) и вписываем чуть измененный код с формы регистрации(добавлено чтение из базы данных определенного параметра):
<tr> <td height="40"> <label for="website"><?php echo JText::_( 'WEBSITE' ); ?></label> </td> <td> <input type="text" id="website" name="website" size="40" value="<?php echo $this->escape($this->user->get('website'));?>" /> </td> </tr> <tr> <?php $gend = $this->escape($this->user->get('gender')); ?> <td height="40"><?php echo JText::_( 'GENDER' ); ?></td> <td> <input type="radio" id="g_m" <?php if($gend=="m" or $gend==""): ?> checked="true" <?php endif; ?> name="gender" value="m" /> <label for="g_m"><?php echo JText::_( 'MALE' ); ?></label> <br /> <input type="radio" id="g_f" <?php if($gend=="f"): ?> checked="true" <?php endif; ?> name="gender" value="f" /> <label for="g_f"><?php echo JText::_( 'FEMALE' ); ?></label> </td> </tr>
Все. Теперь пользователь сможет отредактировать данные о себе:
Но возможность редактирования данных о пользователе должен иметь и администратор сайта. Теперь добавим эти поля в форму редактирования пользовательских данных в админ-панели.
Откроем файл {папка joomla}/administrator/components/com_users/view/user/tmpl/form.php (строка 133) и добавим в соответствии со стилем формы новые поля:
<td> <label for="website"><?php echo JText::_( 'WEBSITE' ); ?></label> </td> <td> <input type="text" id="website" name="website" size="40" value="<?php echo $this->escape($this->user->get('website'));?>" /> </td> </tr> <tr> <?php $gend = $this->escape($this->user->get('gender')); ?> <td><?php echo JText::_( 'GENDER' ); ?></td> <td> <input type="radio" id="g_m" <?php if($gend=="m" or $gend==""): ?> checked="true" <?php endif; ?> name="gender" value="m" /> <label for="g_m"><?php echo JText::_( 'MALE' ); ?></label> <br /> <input type="radio" id="g_f" <?php if($gend=="f"): ?> checked="true" <?php endif; ?> name="gender" value="f" /> <label for="g_f"><?php echo JText::_( 'FEMALE' ); ?></label> </td> </tr>