Joomla 4. Компонент K2 и форк K2ForJ4 (18 янв 2024)

Если вас, как и меня, достало выслушивать (вычитывать) бесконечные обещания разработчика K2 опубликовать версию компонента K2 под Joomla 4 (без чего невозможно реализовать апгрейд from Joomla 3 to Joomla 4) - воспользуйтесь форком K2ForJ4. Который в данный момент установлен и без каких-либо проблем работает на этом веб-сайте.

Дополнительное поле в форме регистрации

Больше
13 года 3 нед. назад - 13 года 3 нед. назад #1 от Aleksej
Как добавить запись в базу mySQL в Joomla 1.5 при регистрации пользователя?

Понадобилось добавить дополнительное поле в форму регистрации пользователей стандартными средствами (бывает полезно, и не только для SEO оптимизации Joomla). Как выяснилось, это совсем несложно.

Добавляем поле city (текстового типа)

Выполняем SQL запрос в нашу базу данных:
Code:
ALTER TABLE `jos_users` ADD `city` VARCHAR( 250 ) NOT NULL ;

Если необходимо - заменяем префикс jos на используемый.

Добавляем поле в форму регистрации:
Файл components\com_user\views\register\tmpl\default.php - в таблицу с формой добавляем новую строку после Username.
Code:
<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.
Code:
<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
после строки
Code:
var $username = null;

добавляем
Code:
var $city = null;

В этом же файле находим функцию function check() и добавляем проверку на наше поле (если нужно) - данная проверка отрабатывается при отключенном JS в браузере и никогда не помешает
Code:
if (trim( $this->city ) == ) { $this->setError( JText::_( 'Please enter a city.') ); return false; }

Вот и все, в результате получаем обязательное при регистрации поле City, доступно для просмотра и редактирования в административной панели, доступно на фронтенде через объект $user
Code:
$user =& JFactory::getUser(); echo $user->city;

Не забываем делать копии редактируемых файлов!
Последнее редактирование: 13 года 3 нед. назад пользователем Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Dev banner 1
Работает на Kunena форум