Новости 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 Гость просматривают эту тему.
  • 271 Ответов
  • 37394 Просмотров
*

zikkuratvk

  • Глобальный модератор
  • 4824
  • 346 / 2
  • Обслуживаем проекты - дорого.
Прошло уже довольно таки много времени, поля в целом оказались вполне рабочим инструментом.
Но к сожалению все существующие фильрации оказались платными, мало того, что платными, так это еще и отдельные виды фильрации материалов.

Мы решили исправить эту проблему и сделали собственную реализацию фильтров для полей Joomla.

Система состоит из плагина и модуля.

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

В общем тестируем предлагаем и наслаждаемся :-)

Официальная страница модуля:
https://joomline.ru/rasshirenija/moduli/jlcontentfieldsfilter.html

Ссылка на скачивание:
https://joomline.net/ru/downloads/jlcontentfieldsfilter.html

Ссылка на документацию:
https://joomline.ru/docs/99-jlcontentfieldsfilter.html

Перед тем как задать вопрос, по поводу того, что не работает проверьте системные требования и убедитесь, что системный плагин "Система — JlContentFieldsFilter" включен.

Демо версия фильтра


Минимальная версия Joomla для корректной работы фильтра - Joomla 3.8.0
Внимание!!! Если у вас Joomla ниже 3.8.3, то для получения корректного результаты не используйте значения по умолчанию для полей.
« Последнее редактирование: 27.12.2020, 20:26:17 от zikkuratvk »
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
У вас же плагин. Дописать строку на after save не проблема.
Какую строку? Удалить все значения по умолчанию?  ^-^
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
ну да. я думаю, логика у создателя полей была в том, что можно массово менять значения полям, у которых дефолтное значение.
а про фильтрацию он не думал.

но вообще, если значение не хранится в базе, то как поиск осуществляется? (который обычный, а не фильтр)
может имеет смысл намекнуть автору о проблеме?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
ну да. я думаю, логика у создателя полей была в том, что можно массово менять значения полям, у которых дефолтное значение.
а про фильтрацию он не думал.
Не понятно зачем. Допустим было по умолчанию 20, потом ты поставил 40 и все, что было 20, стало 40, хотя свойства итема не изменились. Ошибочка выйдет.
но вообще, если значение не хранится в базе, то как поиск осуществляется? (который обычный, а не фильтр)
может имеет смысл намекнуть автору о проблеме?
А есть поиск по полям?
*

zikkuratvk

  • Глобальный модератор
  • 4824
  • 346 / 2
  • Обслуживаем проекты - дорого.
нету поиска по полям
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
У текстового может не так работать значение по умолчанию. Или ты мог не так проверить.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
а вот это, кстати, баг получается.
т.е. по дефолтному значению поиск и не срабатывает, а вот если поменять - то ищет.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Аркадий, ты мне сегодня не веришь прям вообще!  ;D Я ведь как велосипедист - велосипедисту пишу!  ;D
Как я мог не так проверить? На свежем дистрибе в дефолтный поиск вбиваешь и смотришь.
Все так и работает - если уникальное значение в поле - ищет, если по умолчанию - не ищет.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Посмотрел в плагине поиска, есть там поиск по полям.
Код
'LOWER(fv.value) LIKE LOWER(' . $word . ')'
то есть тоже ищет то, что есть в таблице значений.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Аркадий, ты мне сегодня не веришь прям вообще!  ;D Я ведь как велосипедист - велосипедисту пишу!  ;D
Я верю, но не сразу  ^-^. Все проверять надо. Но благодаря тебе все глюки отловили, так-что говори, говори.  ^-^
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Дык надо запостить это, как баг на гитхабе.
Может сами и сделают сохранение значения в базу, иначе странное поведение получается.
*

zikkuratvk

  • Глобальный модератор
  • 4824
  • 346 / 2
  • Обслуживаем проекты - дорого.
Ура!! У нас появилась официальная страница расширения :-) https://joomline.ru/rasshirenija/moduli/jlcontentfieldsfilter.html
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

zikkuratvk

  • Глобальный модератор
  • 4824
  • 346 / 2
  • Обслуживаем проекты - дорого.
кто-то на радостях аж  "Моудль" написал в демке  ;D
Конечно на радостях то :) на самом деле странно что бесплатного до сих пор не появилось.
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
я читал, что французы что-то делают. но из того, что видел - js фильтрация, явно не то, или платный и корявый.
так что да - впереди планеты всей.
но хорошо бы продавить нормальной сохранение дефолтного значения в базу теперь, иначе через вас будут рапортовать о глюках.
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
нету поиска по полям
=) Давно в плагин search/content заглядывали?

Спойлер
[свернуть]
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

zikkuratvk

  • Глобальный модератор
  • 4824
  • 346 / 2
  • Обслуживаем проекты - дорого.
Ну круто что)) вот вам и фильтр по полям :-) гыыы))
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
*

zikkuratvk

  • Глобальный модератор
  • 4824
  • 346 / 2
  • Обслуживаем проекты - дорого.
я требую объяснить шутку для непрограммеров!
а то не смешно пока и не понятно!  ;D
Ну в поиске можно фильтировать по полям теоретически.
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
теоретически.
Именно =)
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Biss

  • Давно я тут
  • 995
  • 101 / 0
Хорошее дело делаете, ребята. Спасибо. Уже требуется на одном проекте (ну у меня лично, и пока на одном  ^-^) Успехов вам в разработке. Надеюсь фильтр будет лучшим в своем роде  yes!
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
в общем, я запостил на гитхаб
https://github.com/joomla/joomla-cms/issues/18889
раз вы совсем не хотите  ;D
Как раз зашел туда с этой целью, смотю, а уже есть  ^-^
*

Biss

  • Давно я тут
  • 995
  • 101 / 0
Добавьте, пожалуйста, в настройки модуля возможность менять названия кнопок на свои (тип текст) чтобы при обновл. в будущем не менять константы
*

zikkuratvk

  • Глобальный модератор
  • 4824
  • 346 / 2
  • Обслуживаем проекты - дорого.
А что мешает переопределить константы в языках жумла?
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Сделал PR в джумлу по поводу значений по умолчанию https://github.com/joomla/joomla-cms/pull/18891 Чтобы PR приняли требуется тестирование.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Чтобы PR приняли требуется тестирование.
я затестил, стало искать и фильтровать.
товарищи с гитхаба, присоединяйтесь!
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
По поводу триггера для фильтрации. Посмотрел в код, там легаси модели удалили, а новую родительскую модель еще не подключили к ком-контенту. Придется подождать пока все устаканится. Ну и по сути самого триггера есть вопросы.  Функция из libraries/src/MVC/Model/ListModel.php
Код
public function getItems()
{
// Get a storage key.
$store = $this->getStoreId();

// Try to load the data from internal storage.
if (isset($this->cache[$store]))
{
return $this->cache[$store];
}

try
{
// Load the list items and add the items to the internal cache.
$this->cache[$store] = $this->_getList($this->_getListQuery(), $this->getStart(), $this->getState('list.limit'));
}
catch (\RuntimeException $e)
{
$this->setError($e->getMessage());

return false;
}

return $this->cache[$store];
}
Если напрямую подвергать изменению запрос, то будет конфликт с кэшем т.к. $store будет определяться неправильно. Думаю надо изменять $store и добавлять state соответственно возможностям дочерней модели. так правильно, но не вполне гибко. Плюс к этому надо отдавать плагинам всю модель, что не есть хорошо.
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
По поводу триггера для фильтрации.
Да уж печалененько. Надо будет $this->_getList еще глянуть.. хотя мне толку нет. У меня по глупости на основной ветке форка pr повис. Да и смысла com_content в cck переделывать не вижу. Проще свой мини каталог написать.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
$this->_getList глядеть не надо, с кэшем проблемы будут. Когда $store уже определен поздно что-то делать, все надо делать до него.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT Simple price table - модуль прайслиста для Joomla

Автор sergeytolkachyov

Ответов: 0
Просмотров: 55
Последний ответ 16.02.2026, 14:25:56
от sergeytolkachyov
SW JProjects - Менеджер цифровых проектов для Joomla! CMS™

Автор Septdir

Ответов: 62
Просмотров: 19866
Последний ответ 30.01.2026, 14:57:54
от sergeytolkachyov
Бесплатный плагин импорта экспорта данных в поля материалов Joomla - CFI

Автор zikkuratvk

Ответов: 11
Просмотров: 8430
Последний ответ 27.01.2026, 08:37:19
от sergeytolkachyov
JL Like - Социальные кнопки для Joomla (новый взгляд)

Автор zikkuratvk

Ответов: 640
Просмотров: 111999
Последний ответ 23.01.2026, 15:27:10
от zikkuratvk
А-ля корзина для материалов Joomla

Автор Efanych

Ответов: 152
Просмотров: 23257
Последний ответ 23.12.2025, 18:15:39
от zikkuratvk