Новости Joomla

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

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

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

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

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

Читать статью на Хабре.

@joomlafeed

🏆 Открыто голосование за 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 Гость просматривают эту тему.
  • 1 Ответов
  • 4279 Просмотров
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Коллеги, вот такой дурной вопрос по шаблонизации материала\объекта.
К примеру есть блог материалов, в одном итеме отображаются: заголовок, картинка, текст. За все это отвечает один шаблон
Есть блог избранных, надо итем отображать аналогично - другой шаблон
Есть модуль последних новостей - третий шаблон
Хочу сделать копию блога материалов но содержимое итема оставить прежним - еще один шаблон.

Как это дело унифицировать? В некоторых собственных местах я просто выбираю в цикле нужные мне ID материалов\объектов и отдаю свою функцию, где она по ID выбирает нужные строки и делает нужную верстку.

Но в случае с стандартными шаблонами так не выйдет. Тот же модуль последних материалов - подключает всю модель контента, когда в цикле я по ID материала обращусь к своей функции - двойная работа, двойная нагрузка на базу.
И так далее.

Вопрос в чем - никто не задавался вопросом, как в стандартном контенте сделать возможность шаблонизации откуда угодно (модуль, компонент, плагин) по одному единственному шаблону без размножения сущностей?
Переписывать все стандартные шаблоны (модели компонентов) и модули?
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
В общем даже не знаю, зачем я столько времени тупил, ведь решение простое. Может кому и пригодится.
Итак, у нас есть шаблоны блога материалов, блога избранных материалов, пара модулей выводящих материалы. Нам нужно сделать у них одинаковый вывод блока материала. Пример в спойлере (хиты это блог избранных материалов, новые поступления - модуль последних). Писать каждый раз разметку и в случае изменений менять в трех местах нам не надо.
Спойлер
[свернуть]

Пишем свою функцию function product_item($prod) в которой делаем всю нужную разметку.
На уровне вывода блога и хелпера модуля инклюдим файл с функцией и выводим ее в соответствующих файлах
\html\com_content\featured\default_item.php
\html\com_content\category\blog_item.php
\html\mod_articles_latest\default.php

В принимаемый параметр $prod функции передаем объект $this->item. Если нам нужны еще и условия из настроек меню - всегда можем добавить в функцию прием объекта параметров $params
Все, шаблонов и модулей много, разметка везде одна. Единственное но - в передаваемом объекте везде должны содержаться соответствующие принимаемые на уровне функции значения.
Решение простое как валенок, правду говорят что горе от ума, если же его нет все еще хуже.
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться