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

Shustry

  • Гуру
  • 6434
  • 745 / 3
Название: Переопределение шаблона блога категории не наследуется материалами.
Версии:
1.7, 2.5
Решение:
— требуется.
Описание:
При переходе по ссылке в переопределённом шаблоне категории юзаецо стандартный шаблон материала. Никак из админки контролировать нельзя (переопределение каждого материала через меню не вариант).
Ожидаемый результат:
По-имени назначенного шаблона категории система во-первой должна искать и подключать одноимённый шаблон для материала. И только при отсутствии оного — юзать стандартный.
« Последнее редактирование: 19.11.2013, 23:49:47 от Shustry »
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Жень, давай подробнее про проблему, я не до конца вник.
Это проблема ядра или стандартных шаблонов?
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Ядра конечно. Я только свои самописные шаблоны юзаю. Суть в том, что ты, например, хочешь на сайте создать два различных вида раздела: Новости и Статьи. Возможности оверрайда это позволяют. Но только в выводе категории. При том, для пункта меню нужно писать отдельную XML, что несколько нелогично имхо. По-умолчанию должен подтягиваться альтернативный шаблон категории в том случае, если я его назначил в менеджере категорий. А уже сменить на дефолтный можно при создании пункта меню, а не наоборот.
Сорри, отошёл чуть от темы. С категориями худо/бедно решаемо. Но я бы хотел, чтобы вывод материала из Новости отличался от вывода материала из Статьи. Тут непонятно, вроде можно назначить альтернативный шаблон материала в менеджере, но, внимание баг: при переходе по ссылке с блога категории всегда открывается стандартный шаблон материала. Единственное решение: для каждой, например, новости, вручную создавать пункт меню. Что конечно маразм для сайтов, где over1000 новостей скопилось.
Решение:
Программа минимума: хотя бы добавить в view материала параметр «имя шаблона родительской категории», чтобы можно было написать свои подшаблоны для материалов.
В идеале: по-имени шаблона категории искать одноимённый подшаблон для материала и выводить. При отсутствии — юзать стандартный.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
В идеале: по-имени шаблона категории искать одноимённый подшаблон для материала и выводить. При отсутствии — юзать стандартный.
Ага, а можешь багфикс дать?
Файлик и что править? Или нет пока такого?

ЗЫ. И да, как контролируется переход из пункта меню? По ItemID? Он передается при переходе?
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Дополню. Как это выглядело бы для верстальщика/разработчика:
1. Создаём для категорий шаблон news.php.
2. Создаём для материала шаблон news.php.
Теперь, если назначить категории шаблон news (html/com_content/category), статьям присваивается одноимённый шаблон материала (html/com_content/article). Если такого шаблона материала нет, юзаем стандарнтый.
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Ага, а можешь багфикс дать?
Файлик и что править? Или нет пока такого?
Багфикс только на уровне шаблона замутил. Ядро совсем не трогаю. Я ж не настоящий программер. :(

Код: php
jimport( 'joomla.application.categories' );
$categories = JCategories::getInstance('Content');
 
$cat_layout = explode(':',json_decode($categories->get($this->item->catid)->params)->category_layout)[1];

ЗЫ. И да, как контролируется переход из пункта меню? По ItemID? Он передается при переходе?
ItemID всегда из Jmenu можно получить. В последнее время юзаю велосипед, что выше привёл. Раньше разводил по альасу категории. if(... == 'novosti') {} и т.д.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
ItemID всегда из Jmenu можно получить.
Всё проще - можно выключить на секунду SEF и посмотреть - передается ли в урле этот параметр.
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Всё проще - можно выключить на секунду SEF и посмотреть - передается ли в урле этот параметр.
Да можно и не отключать. JRequest пока работает. Как параметр не передаётся. Но из референса наверное можно выдернуть. Но нафик, Серёг? Суть проблемы в шаблонизации, а решать это с помощью меню — очередной велосипед.
b2z, сделал. Так нормуль?
« Последнее редактирование: 19.11.2013, 23:51:45 от Shustry »
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Да можно и не отключать. JRequest пока работает. Как параметр не передаётся. Но из референса наверное можно выдернуть. Но нафик, Серёг? Суть проблемы в шаблонизации, а решать это с помощью меню — очередной велосипед.
Ну по текущей концепции\логике движка, если не передается параметр - то на одну и ту же страничку материала мы можем попасть с разных пунктов меню.
А, значит, у них могут быть разные шаблоны.. так?

Вопрос изменения концепций думаю выходит за рамки просто "бага".
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Серёг, причём тут вообще меню и как они связаны с описанной выше проблемой? Это баг. Всё в рамках раздела. Допустим я вообще не создаю никаких пунктом меню и юзаю навигацию внутри контента?
Ну по текущей концепции\логике движка, если не передается параметр - то на одну и ту же страничку материала мы можем попасть с разных пунктов меню.
А, значит, у них могут быть разные шаблоны.. так?
Не совсем так. Когда я с разных пунктов меню перехожу на одну страницу, я могу шаблон этой страницы/материала там же и изменить. Тогда, в зависимости от пункта меню, с которого я перехожу, шаблоны будут разными. С этим всё в порядке и логично. Я в названии темы постарался ёмко передать суть проблемы. Повторюсь. Неважно, назначил я шаблон категории в менеджере категорий или как альтернативный шаблон пункта меню, я бы хотел чтобы все эти манипуляции как-то учитывались и для материалов, что в этой категории находятся. Сейчас «кто в лес, кто по-дрова». Шаблон категории отдельно, шаблон материала отдельно. Никак между собой они не связаны, как будто это разные компоненты вообще.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Погоди, если ItemID не передается, то ссылка на страничку будет одна - что с категории1 переходить, что с категории2, так?
ЗЫ. Давно плотно не работаю с com_content, там же нет мультикатегорийности(?), но категория2 может быть ребенком категории1.
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Ты совсем про другое говоришь. :( ItemID тут вообще не при делах. Ты когда оверрайд любого компонента/модуля пишешь ItemID как юзаешь? Я никак. Наследование шаблона категории подкатегорией не так критично, потому что сложно представить себе сайт, где тысяча категорий. И без наследования можно назначить. А вот с материалами беда. Если я хочу тысячу материалов вывести другим шаблоном, то сейчас это можно сделать:
а) одним из решений, что по моей ссылке есть. От меня, от SDkillera или Фёдора. Там есть твой вариант с ItemID.
б) создать тысячу пунктов меню, где обозначить шаблон.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Предложения по улучшению внешнего вида шаблона админки isis

Автор AlekVolsk

Ответов: 1
Просмотров: 2214
Последний ответ 20.10.2014, 16:50:07
от AlekVolsk