Новости Joomla

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

В процессе работы с Joomla бывает необходимо работать с пользовательским интерфейсом более тонко, чем обычно. Все формы Joomla состоят из стандартных полей, содержанием, стилем отображения, состоянием (включено/выключено, доступно для редактирования или нет и т.д.) можно управлять с помощью плагинов. Да и для нестандартных проектов хорошей практикой является создание одного системного или нескольких плагинов групп "под проект", в которых храниться весь "нестандарт".

В этой статье описаны все триггеры, которые вызываются через Event Dispatcher из administrator/components/com_fields/src/Helper/FieldsHelper.php, с привязкой к жизненному циклу (порядку этапов работы запроса), аргументам, изменяемым данным и дальнейшему распространению по Joomla. Это поможет вам работать с Joomla свободнее и не опасаясь при этом потерять изменения при очередном обновлении движка.

Подходы, описанные в статье, полезны в тех случаях, когда вы работаете с данными в com_fields - механизме создания и редактирования пользовательских полей ядра Joomla и при использовании FieldsHelper. Многие сторонние компоненты не используют эту возможность, поэтому данная статья будет полезна лишь частично.

🏆 Открыто голосование за Joomla в премии CMS Critic People’s Choice Awards 2025

🏆 Открыто голосование за Joomla в  премии CMS Critic People’s Choice Awards 2025

🗓 Голосование продлится до 27 февраля 2026 года.

👩‍💻 Проголосовать! 👩‍💻

Номинации, в которых можно проголосовать за Joomla:
⭐️ Best Free CMS
⭐️ Best Open Source CMS
⭐️ Best Enterprise CMS

Также в номинации Best e-Commerce Solution участвуют компоненты интернет-магазинов для Joomla:
⭐️ HikaShop
⭐️ Virtuemart

В номинации Best Website Builder оказались:
⭐️ YooTheme
⭐️ SP Page Builder

Что такое CMS Critic Awards?
С 2012 года премия CMS Critic Awards занимает особое место в сообществе систем управления контентом (CMS). Это единственный в своем роде сайт, который составляет рейтинг системы управления контентом и связанных с ними решений на рынке — от малого до крупного и подчеркивает их инновации и услуги.

Каждый год награда CMS Critic Awards присуждается одному победителю в различных отраслевых категориях, таких как: «Лучшая облачная CMS», «Лучший DXP», «Лучшая Headless CMS и других. Затем результаты оглашаются через СМИ вместе с выбором редакции CMS Critic.
В этом году премия вернулась к своим традициям и только TOP-5 движков по количеству номинаций попали в 2-й этап - голосование.

@joomlafeed

0 Пользователей и 1 Гость просматривают эту тему.
  • 0 Ответов
  • 4358 Просмотров
*

Aleks_El_Dia

  • Живу я здесь
  • 3671
  • 353 / 0
  • AEDStudio Joomla! Direction
Во время создания очередного интернет-проекта ввиду его интернациональности родилась следующая идея - возле вывода автора статьи вывести его страну. После нескольких манипуляций и хаков парочки файлов CMS Joomla! поставленая цель была достигнута.
Итак эта тема поможет вам:
1. Научится добавлять дополнительные поля при регистрации пользователя.
2. Выводить значение этого поля в любом нужном месте.

Для решения данного вопроса я руководствовался статьей о добавлении дополнительного поля "День рожденья" http://joomlaportal.ru/content/view/1400/68/

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

Код: sql
ALTER TABLE `jos_users` ADD `country` VARCHAR(255) NOT NULL default '';
2.После этого расширим набор полей класса mosUser, чтобы данные о стране автоматически попадали в базу при регистрации пользователя:
2.1 Открываем файл /includes/joomla.php
2.2 Находим в нем следующие строчки:

 
Код: php
 var $params      = null;
 
  /**
  * @param database A database connector object
  */
  function mosUser( &$database ) {
 
2.3 Заменяем их на:
 
Код: php
        var $params			    = null;
var $country = null;

/**
* @param database A database connector object
*/
function mosUser( &$database ) {
      
2.4 Для того, чтобы страна пользователя была доступна из глобальной переменной $my необходимо сделать еще одну правку. Находим:

Код: php
$query = "SELECT id, name, email, block, sendEmail, registerDate, lastvisitDate, activation, params"

2.5 Заменяем на:

Код: php
$query = "SELECT id, name, email, block, sendEmail, registerDate, lastvisitDate, activation, params, country"

2.6 Ниже находим строчку:

Код: php
$user->activation    = $my->activation;

2.7 И после! нее добавляем:

Код: php
$user->country       = $my->country;

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

3. Открываем файл /components/com_registration/registration.html.php
3.1 Находим в нем строчки:
Код: html4strict
<input type="text" name="name" size="40" value="" class="inputbox" maxlength="50" />
        </td>
    </tr>
   
3.2 Вставляем после! них код:
Код: html4strict
<td>
        Ваша страна
      </td>
      <td>
              <select name="birthDate_d">
          <option value="Украина">Украина</option>
       <option value="Россия">Россия</option>
        <option value="Беларусь">Беларусь</option>
         <option value="Молдавия">Молдавия</option>
            </select>             
      </td>
     
При необходимости можно изменить список или дополнить его. Значение атрибута value будет записыватся в базу данных.

4.Теперь исправляем непосредственно функцию сохранения нового пользователя, добавляя в нее сохранение введенной страны пользователя.
Открываем файл /components/com_registration/registration.php
4.1 Находим в нем строчку:

Код: php
$row->registerDate   = date( 'Y-m-d H:i:s' );

4.2 Вставляем после! нее следующий код:

Код: php
$row->country 	= mosGetParam($_POST, 'country', '');

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

5. Для этого необходимо открыть файл /components/com_content/content.html.php
5.1 Находим следующие строчки:

Код: php
/**
* Writes Author name
*/
function Author( &$row, &$params ) {
if ( ( $params->get( 'author' ) ) && ( $row->author != '' ) ) {
?>
<tr>
<td width="70%" align="left" valign="top" colspan="2">
<span class="small">
<?php echo _WRITTEN_BY . ' '.( $row->created_by_alias ? $row->created_by_alias : $row->author ); ?>
</span>
&nbsp;&nbsp;
</td>
</tr>
<?php
}
}

5.2 Меняем их на:
Код: php
/**
* Writes Author name
*/
function Author( &$row, &$params ) {
global $my;
if ( ( $params->get( 'author' ) ) && ( $row->author != '' ) ) {
global $database;
$query = "SELECT country"
. "\n FROM #__users"
. "\n WHERE id = " . (int) $row->created_by
;
$database->setQuery( $query );
$row->country = $database->loadResult();
?>
<tr>
<td width="70%" align="left" valign="top" colspan="2">
<span class="small">
<?php echo _WRITTEN_BY . ' '.( $row->created_by_alias ? $row->created_by_alias : $row->author ).', '.$row->country; ?>
</span>
&nbsp;&nbsp;
</td>
</tr>
<?php
}
}

И это все.

Тестил на оригинальной версии CMS Joomla! 1.0.15 и на русской версии  CMS Joomla! 1.0.15 RE
За решение вопроса приношу благодарности товарищу temniy

Оригинал статьи здесь - Добавление дополнительного поля "Страна" при регистрации пользователя
« Последнее редактирование: 27.09.2011, 11:10:15 от Aleks_El_Dia »
Спам придумали боги в отместку за наши молитвы (с) Рома Воронежский
На молоко: Z369038872422 || R210017695494 || U247040729215 || ЯД 410011288250383
Мигрирую сайты, переношу расширения J!1.0->J!1.5->J!2.5. Более 50 успешных миграций.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не отображает link CSS style

Автор leo78

Ответов: 0
Просмотров: 1302
Последний ответ 15.07.2015, 16:37:06
от leo78
Вариант пагинатора

Автор AlekVolsk

Ответов: 5
Просмотров: 1418
Последний ответ 03.02.2015, 01:00:30
от ELLE
Странности при установке компонента

Автор Александр216

Ответов: 3
Просмотров: 1551
Последний ответ 16.07.2014, 12:38:39
от Aleks.Denezh
Странности в работе sql-запроса

Автор Александр216

Ответов: 7
Просмотров: 1815
Последний ответ 27.06.2014, 22:03:19
от Aleks.Denezh
Прошу помощи с RS monials

Автор Unloved

Ответов: 0
Просмотров: 1743
Последний ответ 06.06.2014, 04:12:25
от Unloved