Новости Joomla

Вышел релиз Joomla 5.3.2

Релиз исправлений ошибок Joomla 5.3.2

Проект Joomla рад сообщить о выпуске Joomla 5.3.2. Это релиз исправлений ошибок для серии Joomla 5.3.

Веб-ассет Fancybox.js для Joomla v.6.0.9

Веб-ассет Fancybox.js для Joomla v.6.0.9.В Joomla 4 и Joomla 5 появилась концепция Web Assets и WebAssetManager, с помощью которого можно управлять подключениями css, js файлов, подключением. Все css и js файлы включаются в общий реестр ассетов, затем выстраивается граф зависимостей и в итоге на генерируемую страницу подключается только то что нужно на данной странице. Поскольку веб-ассеты можно добавлять с помощью плагинов (ссылка на статью ниже) - можно сказать, что появилось новое направление для плагинов - веб-ассеты. Вы можете устанавливать плагины, включающие веб-ассеты и использовать их как зависимости в самых разных местах Joomla: в шаблоне, в макетах модулей и плагинов. Одним из таких плагинов веб-ассетов является WT Fancybox.js. Плагин добавляет в Joomla WebAssets Registry css и js популярного скрипта галереи изображений fancybox.js, который потом легко можно использовать в коде:
use Joomla\CMS\Factory;$wa = Factory::getApplication()->getDocument()->getWebAssetManager();$wa->usePreset('wtfancybox'); // Local file $wa->usePreset('wtfancybox-remote'); // Use from CDN
Плагин использует систему обновлений Joomla, поэтому с появлением новых версий вы сможете получать их на своих сайтах естественным для Joomla путём. 👩‍💻 Спасибо за работу по упаковке ассета в плагин участнику нашего сообщества Сергею Сергевнину (
@gresserg).- Скачать WT Fancybox.js для Joomla- Статья на JPath.ru Как правильно подключать JavaScript и CSS в Joomla 4- Статья на Хабре: Использование WebAssetsManager Joomla 4 (Joomla 5) и добавление собственных пресетов с помощью плагина#joomla #расширения #webdev

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

Inoken

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Здравствуйте. В процессе обработки ajax-запроса в контроллере компонента необходимо получить доступ к параметрам активного пункта меню. При попытке сделать это с помощью инфтрукции:

Код
$menu_params->merge(JFactory::getApplication()->getMenu()->getActive()->params);
возникает ошибка PHP - Попытка обратиться к свойству необъекта.

Очевидно, что, в силу моего невысокого числа часов летного стажа на Joomla, делаю что-то не то, а параметры меню получить необходимо. Подскажите, пожалуйста, как это правильно сделать в контроллере компонента?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
возникает ошибка PHP - Попытка обратиться к свойству необъекта.
1. Никогда не переводите сообщения об ошибках (предупреждениях).
2. Всегда приводите код в контексте: что такое $menu_params, есть ли у него свойство merge?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Inoken

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
robert, контекст таков:

Код
$menu_params = JComponentHelper::getParams ('com_mycomponent');
$menu_params->merge(JFactory::getApplication()->getMenu()->getActive()->params);

использовал этот же код в модели другого пункта меню, там все работает без ошибок, а в данном контроллере приходит сообщение об ошибке: Trying to get property of non-object in ...

*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
а просто
Код
$menu_params = JFactory::getApplication()->getMenu()->getActive()->params;
разве не достаточно?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Inoken

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
в том-то и дело, что данный код:

Код
JFactory::getApplication()->getMenu()->getActive()->params;

и является источником ошибки.

а просто
Код
$menu_params = JFactory::getApplication()->getMenu()->getActive()->params;
разве не достаточно?
А в даном случае настройки компонента по умолчанию учтуться или получатся только настройки пункта меню?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
в том-то и дело, что данный код и является источником ошибки.
вы уверены? что выводит
Код
var_dump(JFactory::getApplication()->getMenu()->getActive());
?

А в даном случае настройки компонента по умолчанию учтуться или получатся только настройки пункта меню?
нет само собой, настройки компонента пройдут мимо. вы ж только сейчас говорите о параметрах компонента, тема то про параметры текущего пункта меню :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Inoken

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
вы уверены? что выводит
Код
var_dump(JFactory::getApplication()->getMenu()->getActive());
?
нет само собой, настройки компонента пройдут мимо. вы ж только сейчас говорите о параметрах компонента, тема то про параметры текущего пункта меню :)

var_dump выводит NULL.
*

Inoken

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
ошибка локалиовалась до метода getActive () - он возвращает null, насколько я понял из документации по этому методу (с моим неидеальным английским), он вернёт объект пункта активного меню, если таковой был установлен, в противном случае null, что собственно и наблюдаем. Значит проблема в том, что пункт меню не установлен как активный, точнее контроллер не имеет доступ к этой информации (если я всё правильно понимаю). Задачей данного контроллера в разрабатываемом компоненте является обработка ajax-запроса отправляемого из шаблона активного пункта меню, параметры которого мне и необходимы, дабы в соответствии с ними отфильтровать данные и отправить их в качестве ответа. Как передать этому контроллеру информацию об активном пункте меню?
« Последнее редактирование: 19.06.2017, 09:50:08 от Inoken »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
тут надо бы понимать, какой вы в принципе пункт меню хотите видеть... я так понял, что тот пункт меню, с которого делается AJAX запрос? тогда передайте текущий
Код
JFactory::getApplication()->input->getInt('Itemid')
в AJAX запросе к вашему контроллеру

P.S. ага, ну после редактирования стало понятно. ну тогда как я и говорю, просто передайте текущий Itemid как параметр запроса в ваш компонент
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Inoken

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
параметры появились, но их необходимо объединить с параметрами компонента. Объекты, возвращаемые инструкциями:

Код
JComponentHelper::getParams ('com_medialib');

и

Код
JFactory::getApplication()->getMenu()->getItem($menu_item_id)

различны, поэтому через merge () их не склеить. Подскажите, пожалуйста, есть ли в API Joomla какие-нибудь другие стандартные способы объединить настройки воедино с их перекрытием?
« Последнее редактирование: 21.06.2017, 12:18:43 от Inoken »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
например можно так
Код
$params = new JRegistry(JComponentHelper::getParams('com_medialib')->toArray() + JFactory::getApplication()->getMenu()->getItem($menu_item_id)->params->toArray());
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Создание релиза компонента средствами GitHub

Автор SkyAn

Ответов: 4
Просмотров: 963
Последний ответ 01.11.2019, 17:42:04
от Septdir
Формирование ссылки с параметрами в меню

Автор submaster

Ответов: 2
Просмотров: 961
Последний ответ 28.09.2018, 13:32:43
от submaster
Получить данные из поля " file", и передать в файл обработчик

Автор Glog

Ответов: 5
Просмотров: 1575
Последний ответ 01.08.2017, 13:55:40
от Glog
Зависимость модуля от компонента и страницы

Автор Тренд

Ответов: 34
Просмотров: 3017
Последний ответ 16.06.2017, 19:48:39
от dmitry_stas
Организация доступа пользователей к контенту кастомного компонента

Автор Inoken

Ответов: 4
Просмотров: 1216
Последний ответ 15.06.2017, 10:05:40
от Inoken