WebTolkRu
99 subscribers
619 photos
72 videos
2 files
644 links
Joomla-разработчик. Контрибьютер ядра Joomla. https://web-tolk.ru. Разработка Joomla на заказ. Также пишу в @JoomlaFeed.
@sergeytolkachyov Хабр: https://habr.com/ru/users/sergeytolkachyov/posts/
Download Telegram
👩‍💻 Совет по Joomla: замена File::append() в Joomla 6.
В 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 #разработка
👍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
👍5
👩‍💻 Joomla .htaccess: правила для включения сжатия Brotli и правила кэширования.

В чате Joomla коллеги поделились полезными правилами для .htaccess, которые позволяют включить серверное сжатие brotli для трафика, а так же настроить кэширование. Сохраняю к себе.

Смотреть на сайте.

#joomla #php #apache #webdev #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👏7
Иногда совсем не интересно ))

@webtolkru

#joomla
😁4
В настройках Яндекс.Метрики появился профиль сайта.

Яндекс, видимо, хочет получать данные о сайтах вручную, вместо того, чтобы парсить их самостоятельно. Срочно все ставим по счётчикам "Joomla" )))

@webtolkru

#joomla #webdev #seo #yandex
❤3💯1
Forwarded from Joomla Feed (Sergey Tolkachyov)
Media is too big
VIEW IN TELEGRAM
👩‍💻 Компонент View logs v.2.1.0 получил совместимость с Joomla 6.

Компонент просмотра сохраненных логов ядра и расширений 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
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 в мире — системы, которая продолжает давать возможность разработчикам, организациям и государственным структурам создавать открытые, безопасные и инклюзивные цифровые решения.

Оригинал новости
⚡1👍1
Forwarded from Joomla Feed (Sergey Tolkachyov)
Media is too big
VIEW IN TELEGRAM
👩‍💻 Компонент View logs v.2.2.0.
По горячим следам, рекомендациям и просьбам 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
👍2🔥1
👩‍💻 Как делать не надо: скрыть отладку на боевом сайте Joomla по IP.
Иногда нужно что-то поправить по-быстрому на боевом сайте, ну вот прям очень нужно и прям срочно посмотреть какой-нибудь массивчик. И тогда мы свой 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 в уже существующий функционал сайта без глобальной переделки проекта.

Главное преимущество этого способа вывода информации - Скорость!

Для примера. При выводе материалов через стандартный модуль 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, документация на русском языке.
Добавил переводы документации современного скрипта слайдера 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 — плагин вставки альбомов VK для Joomla.
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 #расширения
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
👩‍💻 Совет по Joomla: Удалить ключ из многомерного массива.
Допустим есть у нас массив с объектами вида:
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.
N3T Cookie consent - один из популярных и бесплатных плагинов согласия на использование cookie для Joomla, Внутри имеет немало настроек и возможностей для кастомизации.

Для этого плагина подготовлен файл локализации для русского языка. Устанавливается стандартным для Joomla путём через установщик расширений.

Скачать локализацию

@joomlafeed

#joomla #расширения #локализация
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Люблю шутки математиков)) Какие-то они не от мира сего... )))
😁5👏1
Forwarded from Joomla Feed (Sergey Tolkachyov)
👩‍💻 Quantum Manager нужен сообществу, а автору нужна ваша поддержка!
Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia).

Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

Мы объявляем открытый сбор средств на развитие Quantum Manager — чтобы Дмитрий мог сосредоточиться на проекте и продолжить радовать сообщество новыми версиями.

💚👩‍💻 Поддержите Quantum — и внесите свой вклад в развитие экосистемы Joomla!

Сбор в Т-Банке
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)
👩‍💻 Обработка HTTP ответа в Joomla 6+. Изменения по сравнению с Joomla 3 - Joomla 5.
В 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
❤2