В Joomla постепенно, хоть порой и непоследовательно, убирают старое API, доставшееся в наследство от CMS и заменяют его на API от Joomla Framework. При этом порой не обходится без потерь. Многие классы и методы ядра годами имеют статус deprecated, многим имеется альтернатива.
Такими классами являются классы для работы с файловой системой сервера
Joomla\CMS\Filesystem. Они перемещены в плагин обратной совместимости Joomla 6 и могут ещё работать. Но лучше постепенно переходить на новые методы, а в новых расширениях использовать их сразу. Одним из "пострадавших" методов стал
File::append(), который добавлял содержимое в конец файла. Это обёртка для file_put_contents() с разными проверками, использованием потоков, если надо и т.д. Заменой для этого метода станет File::write() с флагом appendToFile. Параметры метода
-
string $file – Абсолютный путь к файлу-
string $buffer – Содержимое-
bool $useStreams false – Использовать потоки-
bool $appendToFile false – дописывать ли в конец или перезаписывать файлuse Joomla\Filesystem\File;
$absoluteFilePath = JPATH_SITE . '/dir/file.txt';
$content = 'Содержимое файла';
// appentToFile - 4-й аргумент
File::write($absoluteFilePath, $content, false, true);
Либо с PHP 8.0 можно использовать именованные аргументы, и тогда не важен их порядок и наличие необязательных.
use Joomla\Filesystem\File;
$absoluteFilePath = JPATH_SITE . '/dir/file.txt';
$content = 'Содержимое файла';
//Именованные аргументы, appentToFile теперь 3-й аргумент
File::write(file: $absoluteFilePath, buffer: $content, appendToFile: true);
Класс находится в libraries/vendor/joomla/filesystem/src/File.php. Кстати, для некоторых удалённых методов теперь нужно использовать нативные функции php.
- вместо
Folder::exists() ➡️ is_dir()- вместо
File::exists() ➡️ is_file() или file_exists()@webtolkru
#joomla #php #webdev #разработка #development
Please open Telegram to view this post
VIEW IN TELEGRAM
👏4
Написал 2 страницы документации для библиотеки интеграции #joomla с #amocrm. В раздел с описанием установки добавил про долгосрочные токены AmoCRM.
- Установка библиотеки в Joomla
- Входящие вебхуки из AmoCRM в Joomla
- Создание плагина для обработки вебхуков AmoCRM в Joomla
@webtolkru
#php #crm #webdev #development #разработка
- Установка библиотеки в Joomla
- Входящие вебхуки из AmoCRM в Joomla
- Создание плагина для обработки вебхуков AmoCRM в Joomla
@webtolkru
#php #crm #webdev #development #разработка
👍8
Forwarded from Joomla Feed (Вадим Куницын)
JL Sitemap v2.1.0 – обновление компонента для карт сайта.
JL Sitemap - это компонент для Joomla, который позволяет вам легко и быстро создавать карту вашего сайта.
Среди ключевых улучшений:
- Полная совместимость с Joomla 6.
- Интеграция с планировщиком задач Joomla 4.1+ для автоматизации процессов.
- Рефакторинг кода.
- Улучшена обработка ошибок на фронтенде HTML-карты.
Это обновление направлено на улучшение работы компонента и поддержание его стабильной работы на будущих версиях Joomla.
Подробнее: https://joomline.ru/rasshirenija/komponenty/jlsitemap.html
JL Sitemap - это компонент для Joomla, который позволяет вам легко и быстро создавать карту вашего сайта.
Среди ключевых улучшений:
- Полная совместимость с Joomla 6.
- Интеграция с планировщиком задач Joomla 4.1+ для автоматизации процессов.
- Рефакторинг кода.
- Улучшена обработка ошибок на фронтенде HTML-карты.
Это обновление направлено на улучшение работы компонента и поддержание его стабильной работы на будущих версиях Joomla.
Подробнее: https://joomline.ru/rasshirenija/komponenty/jlsitemap.html
👍5
В чате Joomla коллеги поделились полезными правилами для
.htaccess, которые позволяют включить серверное сжатие brotli для трафика, а так же настроить кэширование. Сохраняю к себе. Смотреть на сайте.
#joomla #php #apache #webdev #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👏7
Forwarded from Joomla Feed (Sergey Tolkachyov)
Media is too big
VIEW IN TELEGRAM
Компонент просмотра сохраненных логов ядра и расширений Joomla.
v.2.1.0. Что нового?
- Совместимость с Joomla 6 и PHP 8.4.
- Большое обновление интерфейса: добавлено отображение дополнительной информации в списке файлов. Просмотр файла лога в модальном окне и возможность открыть его в отдельном окне.
- Минимальная версия PHP - 8.0.
Страница расширения
GitHub расширения
@joomlafeed
#joomla #расширения
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👏1
Forwarded from Евгений Сивоконь. Блог
Joomla официально признана цифровым общественным благом 🙏🎉
Joomla с гордостью сообщает, что была официально признана цифровым общественным благом (Digital Public Good, DPG) Альянсом цифровых общественных благ (Digital Public Goods Alliance, DPGA) — инициативой, поддерживаемой Организацией Объединённых Наций.
Это признание ставит Joomla! в ряд международных open-source проектов, которые разделяют ценности открытости, прозрачности, защиты данных и социального воздействия.
Важно отметить, что статус цифрового общественного блага присвоен самому программному решению Joomla!, а не организации Joomla как юридическому лицу.
Альянс цифровых общественных благ (DPGA) ведёт международный реестр цифровых общественных благ и оценивает проекты на основе чётко определённых стандартов. Его миссия — поддержка открытых технологий, способствующих достижению Целей устойчивого развития ООН (UN SDGs) и решению глобальных задач развития. 🌐
Чтобы получить статус цифрового общественного блага, проект должен соответствовать Стандарту цифровых общественных благ (Digital Public Goods Standard), который включает следующие критерии:
✔️ Открытое лицензирование (например, использование признанных open-source лицензий)
✔️ Защита данных и безопасность
✔️ Соответствие правовым и этическим нормам
✔️ Вклад в достижение Целей устойчивого развития ООН
✔️ Прозрачное управление и долгосрочная устойчивость
✔️ Активное вовлечение сообщества
Получение статуса цифрового общественного блага — процесс далеко не автоматический. Joomla прошла тщательную процедуру оценки, которая потребовала предоставления подробной документации и доказательств соответствия строгим стандартам.
Благодаря самоотверженной работе множества участников сообщества, этот результат стал наглядным подтверждением универсальности и открытости Joomla, а также бесчисленных способов, с помощью которых она помогает людям создавать веб-решения.
Это достижение подчёркивает позицию Joomla как одной из самых надёжных и гибких open-source CMS в мире — системы, которая продолжает давать возможность разработчикам, организациям и государственным структурам создавать открытые, безопасные и инклюзивные цифровые решения.
Оригинал новости
Joomla с гордостью сообщает, что была официально признана цифровым общественным благом (Digital Public Good, DPG) Альянсом цифровых общественных благ (Digital Public Goods Alliance, DPGA) — инициативой, поддерживаемой Организацией Объединённых Наций.
Это признание ставит Joomla! в ряд международных open-source проектов, которые разделяют ценности открытости, прозрачности, защиты данных и социального воздействия.
Важно отметить, что статус цифрового общественного блага присвоен самому программному решению Joomla!, а не организации Joomla как юридическому лицу.
Альянс цифровых общественных благ (DPGA) ведёт международный реестр цифровых общественных благ и оценивает проекты на основе чётко определённых стандартов. Его миссия — поддержка открытых технологий, способствующих достижению Целей устойчивого развития ООН (UN SDGs) и решению глобальных задач развития. 🌐
Чтобы получить статус цифрового общественного блага, проект должен соответствовать Стандарту цифровых общественных благ (Digital Public Goods Standard), который включает следующие критерии:
✔️ Открытое лицензирование (например, использование признанных open-source лицензий)
✔️ Защита данных и безопасность
✔️ Соответствие правовым и этическим нормам
✔️ Вклад в достижение Целей устойчивого развития ООН
✔️ Прозрачное управление и долгосрочная устойчивость
✔️ Активное вовлечение сообщества
Получение статуса цифрового общественного блага — процесс далеко не автоматический. Joomla прошла тщательную процедуру оценки, которая потребовала предоставления подробной документации и доказательств соответствия строгим стандартам.
Благодаря самоотверженной работе множества участников сообщества, этот результат стал наглядным подтверждением универсальности и открытости Joomla, а также бесчисленных способов, с помощью которых она помогает людям создавать веб-решения.
Это достижение подчёркивает позицию Joomla как одной из самых надёжных и гибких open-source CMS в мире — системы, которая продолжает давать возможность разработчикам, организациям и государственным структурам создавать открытые, безопасные и инклюзивные цифровые решения.
Оригинал новости
Joomla!
Joomla Officially Recognized as a Digital Public Good
Joomla is proud to announce that it has been officially recognized as a digital public good (DPG) by the Digital Public Goods Alliance (DPGA), an initiative supported by the United Nations. This...
⚡1👍1
Forwarded from Joomla Feed (Sergey Tolkachyov)
Media is too big
VIEW IN TELEGRAM
По горячим следам, рекомендациям и просьбам Joomla-сообщества компонент просмотра логов Joomla получил следующую версию
v.2.2.0. Что нового?
- Обновление интерфейса: список логов сделан в виде таблицы, отображение дополнительной информации в списке файлов (время создания и последнего изменения, кнопки действий и их порядок) изменены и сделаны менее пёстрыми.
- Добавлен поиск-фильтр по имени файла лога на странице. Находите нужный файл быстрее.
- Большие файлы. Просмотр файла лога в модальном окне сохранён для файлов менее 1МБ. Возможность открыть файл в отдельном окне сохранена. Но используйте эту функцию с осторожностью: файлы объёмом 8-10мб ещё возможно открывать в браузере, но более крупные - не рекомендуется.
Системные требования:
- Совместимость с Joomla 6 и PHP 8.4.
- Минимальная версия PHP по-прежнему 8.0.
Страница расширения
GitHub расширения
@joomlafeed
#joomla #расширения
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Вау! Моя новость о выходе Joomla 6 попала в PHP Digest. И, насколько я помню, Joomla там не фигурировала если ни никогда, то довольно много лет!
https://t.me/phpdigest/347
#joomla #webdevelopment #разработка #coding #dev
https://t.me/phpdigest/347
#joomla #webdevelopment #разработка #coding #dev
👍2🔥1
Иногда нужно что-то поправить по-быстрому на боевом сайте, ну вот прям очень нужно и прям срочно посмотреть какой-нибудь массивчик. И тогда мы свой
dump() ограничиваем выводом по IP.Вариант 1. Нативный PHP.
if($_SERVER['REMOTE_ADDR'] == 'xxx.xxx.xxx.xxx') {
dump($array);
}Вы увидите свой массивчик, а все остальные посетители - нет.
Вариант 2. IpHelper в Joomla.
В Joomla есть класс
Joomla\Utilities\IpHelper, в котором собраны инструменты для работы с этой информацией. Оказывается, иногда бывает, что $_SERVER['REMOTE_ADDR'] может вернуть 2 IP адреса или наоборот не содержать его. Или IPv6. Используется он в ядре Joomla при работе с балансировщиком нагрузки и в логгерах. Поэтому можно делать такif(\Joomla\Utilities\IpHelper::getIp() == 'xxx.xxx.xxx.xxx'){
dump($array);
}
// Но так делать не нужно, это не правильно 😎
@webtolkru
#joomla #php #webdev #разработка #ip
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
Forwarded from Joomla Feed (Sergey Tolkachyov)
Модуль материалов Joomla на Vue.js.
Модуль выводит материалы с помощью JavaScript фреймворка Vue.js.
Предназначен для опытных разработчиков Joomla, желающих интегрировать Vue в уже существующий функционал сайта без глобальной переделки проекта.
Главное преимущество этого способа вывода информации - Скорость!
Для примера. При выводе материалов через стандартный модуль
При использовании же модуля с vue.js - 104 ms и это время в принципе не зависит от числа элементов. Так как страница отдается сразу, а вся обработка в модуле происходит асинхронно.
Разработчик - участник нашего сообщества Дмитрий Денисов @mitriy_bug
Страница расширения
@joomlafeed
#joomla #расширения
Модуль выводит материалы с помощью JavaScript фреймворка Vue.js.
Предназначен для опытных разработчиков Joomla, желающих интегрировать Vue в уже существующий функционал сайта без глобальной переделки проекта.
Главное преимущество этого способа вывода информации - Скорость!
Для примера. При выводе материалов через стандартный модуль
mod_articles_news в количестве 1200 элементов Request Duration (время отдачи страницы) составило 3 секунды!!!При использовании же модуля с vue.js - 104 ms и это время в принципе не зависит от числа элементов. Так как страница отдается сразу, а вся обработка в модуле происходит асинхронно.
Разработчик - участник нашего сообщества Дмитрий Денисов @mitriy_bug
Страница расширения
@joomlafeed
#joomla #расширения
👏2👍1👀1
Forwarded from Joomla Feed (Sergey Tolkachyov)
This media is not supported in your browser
VIEW IN TELEGRAM
Добавил переводы документации современного скрипта слайдера swiper.js на русский язык. Документация эта относится к плагину веб-ассета для Joomla WT JSwiper, который подключает скрипт нативным для Joomla 4+ способом - с помощью Web Asset Manager.
Сегодня добавлены:
- Модули: Autoplay
- Модули: Grid
- Модули: Free Mode
- Модули: Manipulation
- Эффекты: Затухание (Fade Effect)
- Модули: Parallax
- Модули: Lazy Loading
- Эффекты: Перелистывание (Coverflow Effect)
Читать документацию Swiper.js по-русски
@webtolkru
#webdev #swiperjs #js #joomla
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
Forwarded from Joomla Feed (Sergey Tolkachyov)
This media is not supported in your browser
VIEW IN TELEGRAM
VKGallery — расширение для Joomla 3.x–5.x, которое позволяет вставлять фотоальбомы ВКонтакте прямо в материалы сайта. Поддерживаются режимы: сетка, слайдер и кирпичная кладка (masonry). Мобильный UX и свайпы в комплекте.
- 3 типа галерей: слайдер, сетка и masonry
- Быстрая работа. AJAX-подгрузка, кэширование запросов, ленивая загрузка изображений.
- Мобильный UX. Свайпы, оптимизация под сенсорное управление и адаптивный дизайн.
Плагин использует шорткод
{vkgallery type="album_grid"}album-123456789_987654321{/vkgallery}.Страница расширения
Демо
Разработчик - участник нашего сообщества Сергей Парфёнов (@Aprol).
@joomlafeed
#joomla #vk #расширения
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Forwarded from Joomla Feed (Sergey Tolkachyov)
Компонент "Жимолость" v.1.2.0 (ex. Спам-оборона для Joomla)
Бесплатный компонент работает под Joomla и позволяет защищать формы сайта от атак спам ботов.
👩💻 v.1.2.0. Что нового?
Компонент полностью поддерживает работу с Joomla 6 без необходимости использования плагина совместимости. При этом поддержка Joomla 4 прекратилась, поскольку уже к Joomla 5 отличия между четвертой и пятой версиями были заметны.
Компонент бесплатный. Существует версия для Joomla 3.
Разработчик - участник нашего сообщества Владимир Егоров (@sitogon)
Страница расширения
#joomla #расширения
Бесплатный компонент работает под Joomla и позволяет защищать формы сайта от атак спам ботов.
Компонент полностью поддерживает работу с Joomla 6 без необходимости использования плагина совместимости. При этом поддержка Joomla 4 прекратилась, поскольку уже к Joomla 5 отличия между четвертой и пятой версиями были заметны.
Компонент бесплатный. Существует версия для Joomla 3.
Разработчик - участник нашего сообщества Владимир Егоров (@sitogon)
Страница расширения
#joomla #расширения
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Допустим есть у нас массив с объектами вида:
Array
(
[0] => stdClass Object
(
[value] => 94
[text] => Категория 1
[level] => 1
[params] => {"category_layout":"","image":"","image_alt":""}
[published] => 1
[lft] => 9
[language] => *
)
Элементов в нём штук 100 и нужно нам его почистить от
params. Не писать же цикл или array_map() или array_walk()... Для этой работы можно воспользоваться классом \Joomla\Utilities\ArrayHelper (файл vendor/joomla/utilities/src/ArrayHelper.php). Там немало интересного есть. Но нас интересует метод dropColumn().use Joomla\Utilities\ArrayHelper;
// ...где-то в классе поля, в getOptions()
// получили массив с опциями
$options = array_merge(parent::getOptions(), $options);
// и удалили у них лишний params
$options = ArrayHelper::dropColumn($options, 'params');
@webtolkru
#joomla #php #разработка #development #webdev
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Forwarded from Joomla Feed (Sergey Tolkachyov)
N3T Cookie consent - один из популярных и бесплатных плагинов согласия на использование cookie для Joomla, Внутри имеет немало настроек и возможностей для кастомизации.
Для этого плагина подготовлен файл локализации для русского языка. Устанавливается стандартным для Joomla путём через установщик расширений.
Скачать локализацию
@joomlafeed
#joomla #расширения #локализация
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Forwarded from Joomla Feed (Sergey Tolkachyov)
Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia).
Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.
Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.
Мы объявляем открытый сбор средств на развитие Quantum Manager — чтобы Дмитрий мог сосредоточиться на проекте и продолжить радовать сообщество новыми версиями.
💚
Сбор в Т-Банке
https://www.tbank.ru/cf/1fjgBPGVCLF
Вы можете сделать перевод средств и так же можете высказать свое мнение о том, каких еще функций не хватает Quantum.
Для переводов из-за рубежа доступна карта Visa
4177 4901 4782 8315 (Vladimir Eliseev).👉 Главные доработки:
- Адаптация к работе на joomla 6.x без плагина обратной совместимости
- Возвращение превью для svg (оно было отключено в связи потенциальным уменьшением безопасности для пользователей)
- Если пользователь создает свое поле для загрузки изображений, то квантум в этом поле на данный момент не вызывается — срабатывает вызов стандартного медиа менеджера Joomla. Этот вопрос требует дополнительного исследования и решения.
- Исправить проблему с неверной обрезкой в редакторе изображений (возможно нарушение пропорций при определенных условиях обрезки по шаблону)
- Попытаться добавить возможность работы с мобильных телефонов
- При работе в папке с большим количеством файлов Quantum ведет себя нестабильно. Попытаться реализовать возможность режима работы с большим кол-вом папок.
- Устранить создание undefined папок
- Закрыть некоторую часть задач на гитхабе: https://github.com/Quantum-Manager/tracker/issues
@joomlafeed
#joomla #расширения #community
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝1
Forwarded from Joomla Feed (Sergey Tolkachyov)
В Joomla для выполнения внешних запросов из PHP к сторонним API используется класс
Joomla\Http\Http напрямую или же Joomla\Http\HttpFactory, который возвращает для работы преднастроенный по умолчанию класс Http. О работе с HTTP-запросами подробно рассказывалось в статье 2021 года Создание внешних запросов с использованием HttpFactory (Joomla). Некоторые изменения касаются работы с ответами на запросы. Например, наш запрос:use Joomla\Http\HttpFactory;
$http = (new HttpFactory)->getHttp($options, ['curl', 'stream']);
$response = $http->get('https://any-url.ru/api/any/endpoint');
Раньше можно было получить код ответа или тело ответа как свойство
$response - $response->code или $response->body. Однако, Joomla, начиная с Joomla 4 во многом переходит на стандарты PSR. В частности для работы с HTTP-ответами - на PSR-7. Также хорошая статья на Хабре о PSR-7: PSR-7 в примерах.Прямое обращение к свойствам code, headers, body объявлено устаревшим в Joomla 6.0.0 и обещают удалить в Joomla 7.0.0.
Вместо этого нужно работать с HTTP-ответом по стандартам PSR-7.
Код ответа.
Было
$response->code. Стало $response->getStatusCode().Заголовки ответа.
Было
$response->headers. Стало $response->getHeaders().Тело ответа.
Было
$response->body. Стало (string)$response->getContents().В тело ответа теперь приходит не строка, а поток - объект класса
Laminas\Diactoros\Stream. Поэтому его нужно привести к строке (если это json, к примеру): (string)$response->getContents(). Чаще всего в коде Joomla встречается именно такой вариант. Однако, есть и вариант с перемещением указателя чтения на начало потока:// Получили ответ в виде потока
$stream = $response->getBody();
// "перемотали" на начало
$stream->rewind();
// Получили строковый ответ
$json = $stream->getContents();
В итоге результат одинаковый.
@joomlafeed
#joomla #разработка #php
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Создание внешних запросов с использованием HttpFactory (Joomla)
Обычно когда мы хотим сделать внешний запрос мы используем для этих целей cURL. Настройка cURL довольно громоздкая, да и в принципе проблематично держать в голове все необходимые настройки. Также есть...
❤2