Новости Joomla

Вышли релизы безопасности Joomla 6.1.3 и Joomla 5.4.8

Релиз безопасности Joomla 6.1.3 и Joomla 5.4.8

Проект Joomla! рад сообщить о выходе Joomla 6.1.3 и Joomla 5.4.8. Это релизы безопасности и исправления ошибок для серий 5.x и 6.x.

👩‍💻 WT Otpravkapochtaru - библиотека сервиса Отправка Почты России для Joomla-разработчиков.

👩‍💻 WT Otpravkapochtaru - библиотека сервиса Отправка Почты России для Joomla-разработчиков.

Joomla 5+ пакет для интеграции с API Почты России: нормализация данных, расчёт доставки, создание отправлений, партии, документы, возвраты, поиск отделений, справочники и SOAP-отслеживание.

v.3.0.0. Что нового?
Это дальнейшее развитие ранее закрытой Joomla-библиотеки для работы с API сервиса Отправка (для бизнеса) Почты России. Поэтому версия не 1.0.0, а 3.0.0.

Сейчас эта библиотека ушла от собственных реализаций и стала Joomla-обёрткой известного PHP SDK от Lapay Group.

Возможности библиотеки.
- получение настроек аккаунта, точек сдачи и текущего остатка запросов к API;
- нормализация адресов, ФИО и телефонов перед созданием отправления;
- расчёт тарифа и срока доставки;
- создание, поиск, изменение, удаление и возврат заказов в состояние «Новые»;
- проверка надёжности получателя;
- создание партий, просмотр партий и заказов внутри партии;
- генерация пакета печатных документов и формы Ф103;
- создание, изменение и удаление возвратных отправлений;
- поиск отделений по индексу, адресу и координатам, получение сервисов отделения;
- локальный список стран;
- SOAP-отслеживание операций по РПО и работа с билетами пакетного трекинга.

👩‍💻 Joomla-возможности.
В пакете библиотеки WT Otpravkapochtaru есть поля Joomla Form для расширений. Они позволяют работать в интерфейсе Joomla с некоторыми типами данных, получаемых по API из вашего личного кабинета в ЛК Почты России для бизнеса.
На данный момент в библиотеке доступны 3 поля списков, которые отображают доступные в аккаунте ОПС, типы и категории отправлений.
Поддерживаются зависимые списки: значение одного поля обновляется при изменении другого.

Системные требования.
Системные требования в основном связаны с системными требованиями апстрима библиотеки - LapayGroup PHP SDK.
- Joomla 5+
- PHP 8.3+
- Расширения PHP:
-- ext-mbstring
-- ext-simplexml
-- ext-soap (опционально, для трекинга)
-- ext-zip

Ссылки:
- Страница расширения
- GitHub библиотеки и документация

@joomlafeed

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

zahar_92

  • Захожу иногда
  • 315
  • 8 / 0
Всем привет!
Не отображается стандартный модуль последних товаров. При публикации модуля получаю ошибку
Код
Fatal error: Call to a member function setModel() on boolean in /var/www/market.ru/modules/mod_jshopping_latest_products/mod_jshopping_latest_products.php on line 70
В этом районе код такой
Код
	
addLinkToProducts($rows, 0, 1);

$productlist = JSFactory::getModel('productList', 'jshop');
$productlist->setModel($product);
$productlist->load();

if ($enable_addon){
$dispatcher->trigger('onBeforeDisplayProductList', array(&$rows));
$view = new stdClass();
$view->rows = $rows;
$dispatcher->trigger('onBeforeDisplayProductListView', array(&$view, &$productlist));
$rows = $view->rows;
}
Если закомментировать строки
Код
//$productlist = JSFactory::getModel('productList', 'jshop');
//$productlist->setModel($product);
//$productlist->load();
то все вроде ок, модуль появляется, товары отображаются. Но на сколько это решение верное и за что отвечают эти строки? Не наврежу ли я такими действиями?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
какая у вас версия ЖШ?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

kit2m2

  • Живу я здесь
  • 3375
  • 276 / 0
  • Беру сайты на полное сопровождение
От сюда качали модуль?
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

zahar_92

  • Захожу иногда
  • 315
  • 8 / 0
какая у вас версия ЖШ?
Пардон, забыл.. Joomla 3.9.8 , JS 4.18.3
От сюда качали модуль?
Да, версия 4.1.4
4.1.3 тоже ставил, результат тот же.
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
JSFactory::getModel('productList', 'jshop')
Не находит он эту модель. Она есть вообще?
*

zahar_92

  • Захожу иногда
  • 315
  • 8 / 0
JSFactory::getModel('productList', 'jshop')
Не находит он эту модель. Она есть вообще?
Как это проверить? Модуль публикую на главной. Сам компонент на другой странице.

На страницах JS (категория, товар), модуль работает штатно, без ошибок.
« Последнее редактирование: 19.06.2019, 18:52:46 от zahar_92 »
*

ST_Rage

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Цитировать
Как это проверить?
В коде вашего шаблона. В самом начале файла index.php.
*

zahar_92

  • Захожу иногда
  • 315
  • 8 / 0
В коде вашего шаблона. В самом начале файла index.php.
Шаблон protostar. На сколько я понимаю, в шаблоне Joomla эта модель не должна присутствовать. Повторюсь, если на странице присутствует компонент JS,  то модуль работает как надо, если нет компонента, не работает. Причем модуль бестселлеры работает нормально.
*

D. Tkachenko

  • Захожу иногда
  • 69
  • 15 / 0
Если закомментировать строки
Код
//$productlist = JSFactory::getModel('productList', 'jshop');
//$productlist->setModel($product);
//$productlist->load();
то все вроде ок, модуль появляется, товары отображаются. Но на сколько это решение верное и за что отвечают эти строки? Не наврежу ли я такими действиями?

Если нигде в плагинах вот этот триггер не используется - не навредите (он ниже по коду).

Код
$dispatcher->trigger('onBeforeDisplayProductListView', array(&$view, &$productlist));

Но его лучше тогда либо тоже закомментировать, либо переписать под старую версию так:

Код
$dispatcher->trigger('onBeforeDisplayProductListView', array(&$view));

По сути вопроса - и не должно было работать. Ибо откуда Joomla знает где искать модель компонента, когда последний не подгружен и не указан в классе JSFactory. Можно еще решить вот так (без комментирования), вставит в модуле где-нибудь до:

Код
$productlist = JSFactory::getModel('productList', 'jshop');

следующий код:

Код
JLoader::import('productlist', JPATH_ROOT.'/components/com_jshopping/models');

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

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
следующий код:
лучше тогда
Код
JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_jshopping/models');
вдруг еще какую модель захочется подключить
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

D. Tkachenko

  • Захожу иногда
  • 69
  • 15 / 0
лучше тогда
Код
JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_jshopping/models');
вдруг еще какую модель захочется подключить

Да, и подключить модели прям в factory.php. Как раз собираюсь им об этом написать. А если только в модуле, как по мне, все же лучше явно подключать модель, чтобы путаницы не было. В целом, вообще не понимаю целесообразности того кода что они добавили. Мало того, что он там явно лишний и создает дополнительную ненужную нагрузку на БД, так еще и ломает плагины написанные под старую версию триггера.

Я бы рекомендовал просто закомментировать код и изменить триггер как было раньше. Или использовать стабильную более старую версию модуля.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
так еще и ломает плагины написанные под старую версию триггера
ну раньше 1 параметр передавался, а сейчас 2. в любом случае надо переделывать. и разве передача большего количества параметров в плагин ломает его? по моему больше можно, меньше нельзя.

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

D. Tkachenko

  • Захожу иногда
  • 69
  • 15 / 0
Вы тоже, товарищи, пишите багрепорты, если обнаружили ошибку. Тестировали ведь на последних версиях, значит явно баг с их стороны. Админ там с переводом с русского на английский дружит, я даже не заморачиваюсь - пишу на русском (т.к., с разговорным английским не супер). Так что не стесняйтесь - помогайте сообществу.

Надеюсь, вскоре поправят.
https://www.joomshopping.com/forum/posts/12/13776.html?lang=ru
*

D. Tkachenko

  • Захожу иногда
  • 69
  • 15 / 0
ну раньше 1 параметр передавался, а сейчас 2. в любом случае надо переделывать. и разве передача большего количества параметров в плагин ломает его? по моему больше можно, меньше нельзя.
если есть плагины, которые требуют 2 параметра, это точно так же выкинет исключение. тогда плагины надо переделывать, делать в методе второй параметр необязательным. но тоже вопрос - а если плагину нужна модель, он с ней работает?

Вы правы, если передать больше параметров - исключения ошибки не будет. Или забыл или не знал. Я считаю так лучше не делать. С точки зрения стандарта - неправильно вызывать метод передавая ему больше параметров чем у него. Работает, наверное, потому что используется свой механизм распаковки массива в CMS.

А передавать меньше параметров вполне можно и соответствует стандарту. Достаточно в плагине объявить параметры по умолчанию. Например:

function onBefore...($product, $limit=12)

По поводу модели, если триггер срабатывает с компонента где эта модель подключена, то вызов getModel отработает в плагине корректно. А если триггер одного компонента, а в плагине getModel другого компонента, то без JLoader::import не обойтись, иначе будет также как с модулем по теме.

P.S. Ну, да, вы же за необязательный аргумент и написали. Прочитал невнимательно, неправильно понял.
« Последнее редактирование: 23.06.2019, 14:22:26 от D. Tkachenko »
*

D. Tkachenko

  • Захожу иногда
  • 69
  • 15 / 0
Вы правы, если передать больше параметров - исключения ошибки не будет. Или забыл или не знал. Я считаю так лучше не делать. С точки зрения стандарта - неправильно вызывать метод передавая ему больше параметров чем у него. Работает, наверное, потому что используется свой механизм распаковки массива в CMS.

Все-таки забыл. Это не фича CMS, а стандартный функционал PHP. В старых версиях php даже использовали func_get_args (и сейчас проверил, работает) для получения переменного кол-ва аргументов. Но всё равно, отчасти как СИшник так делать сейчас не советую, плохая практика. Лучше тогда использовать function main(...$array) при передаче переменного количества аргументов. Ко всему PHP идет по пути строгой типизации, вполне вероятно, что могут объявить подобное использование устаревшим.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Лучше тогда использовать function main(...$array) при передаче переменного количества аргументов
вы правы, так и есть, я сейчас все свои плагины перевожу именно на такой способ, чтоб не зависеть от количества параметров. но только следует помнить, что это работает только в php5.6+
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

D. Tkachenko

  • Захожу иногда
  • 69
  • 15 / 0
вы правы, так и есть, я сейчас все свои плагины перевожу именно на такой способ, чтоб не зависеть от количества параметров. но только следует помнить, что это работает только в php5.6+

Хорошее замечание. Правда, сегодня запускать проекты в продакшн на более низкой версии по меньшей мере странно. А старый код, да, нужно переводить уже сейчас, иначе если затянуть, потом будет проще с нуля переписать, чем с таким легаси морочить голову.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плагин обновления цен и остатков товаров JoomShopping из CSV

Автор sergeytolkachyov

Ответов: 3
Просмотров: 8029
Последний ответ 01.07.2026, 14:45:12
от sergeytolkachyov
[JoomShopping 5] вывод товаров из дочерних категорий

Автор v42bis

Ответов: 16
Просмотров: 9789
Последний ответ 13.05.2026, 17:26:17
от sergeytolkachyov
Умный поиск + артикулы товаров

Автор Mick_20

Ответов: 2
Просмотров: 3293
Последний ответ 29.04.2026, 09:14:13
от nevigen
WT JoomShopping Favorite - кнопки избранного в категории товаров и карточке тов

Автор sergeytolkachyov

Ответов: 26
Просмотров: 50927
Последний ответ 14.10.2025, 12:54:56
от sergeytolkachyov
Модуль карусели товаров JoomShopping на Swiper.js для Joomla

Автор sergeytolkachyov

Ответов: 2
Просмотров: 5366
Последний ответ 04.07.2025, 10:30:36
от sergeytolkachyov