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
Forwarded from Joomla Feed (Sergey Tolkachyov)
👩‍💻 Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list.
При работе над плагином возникла необходимость указать стандартный набор из нескольких элементов стандартного поля списка. И хотелось указать их в стандартном же атрибуте default для полей.

❓ Когда это нужно?
Когда Ваши пользователи устанавливают плагин и НЕ заходят в настройки - в коде вы можете использовать значения по умолчанию с помощью класса Registry (писал об этом ранее) и всегда быть уверенным, что хоть какие-то жизненно необходимые параметры к вам придут всегда.

🧐 Но как сделать то же самое для интерфейса админки?
Пользователя нужно направлять, предлагать очевидный работоспособный сценарий для начала, а дальше он уже сам разберется. Когда человек заходит в параметры свежеустановленного плагина в Form ещё нет данных и параметры по умолчанию выставляются из атрибутов default в xml-полях.
<field name="showdesc" type="radio"
label="PLG_CFI_PARAM_SHOWDESC"
class="btn-group btn-group-yesno"
default="1">
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>

Здесь по умолчанию будет включено "Да". И если пользователь не переключит параметр, то при сохранении мы ожидаемо получим "да" в params плагина.
Для поля списков type="list" можно указать значение по умолчанию и многие знают, что его можно указать только одно.
<field type="list"
name="article_fields"
label="article_fields"
description="article_fields_desc"
layout="joomla.form.field.list-fancy-select"
multiple="true"
default="id"
>
<option value="id">id</option>
<option value="title">title</option>
<option value="alias">alias</option>
<option value="introtext">introtext</option>
<option value="fulltext">fulltext</option>
<option value="state">state</option>
</field>

Но у нас поле с множественным выбором (атрибут multiple) и хотелось бы указать несколько значений по умолчанию...
Оказывается, так можно сделать. Для этого в атрибуте default нужно указать json с нужными параметрами в виде {int}key : {string} value.
Например, default='{"0":"id","1":"title"}'.
<field type="list"
name="article_fields"
label="article_fields"
description="article_fields_desc"
layout="joomla.form.field.list-fancy-select"
multiple="true"
default='{"0":"id","1":"title"}'
>
<option value="id">id</option>
<option value="title">title</option>
<option value="alias">alias</option>
<option value="introtext">introtext</option>
<option value="fulltext">fulltext</option>
<option value="state">state</option>
</field>

⚠️ Обратите внимание на кавычки! Поскольку json_decode не понимает одинарные кавычки собственно json нужно писать с двойными, а значение для атрибута default писать в одинарные.

🙏 За подсказанное решение огромное спасибо участникам нашего сообщества - разработчикам Дмитрию Васюкову (@fictionlabs) и Игорю Бердичевскому (@septdir).

@joomlafeed

#joomla #разработка #webdev #development
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3
WT Amo CRM library v.1.3.1
Небольшая PHP библиотека для Joomla 4 / Joomla 5 / Joomla 6 и Amo CRM. Для разработчиков.
Список изменений
- Исправление ошибок. Исправлена ошибка обновления полей AmoCRM контакта при сохранении пользователя через фронтенд форму.
Подробнее

@webtolkru

#joomla #amocrm
👍1
Forwarded from Joomla Feed (Sergey Tolkachyov)
👩‍💻 WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla.
Пакет плагинов галереи изображений и видео для вставки в материалы и модули Joomla, а так же везде, где работают плагины группы content. Поддержка собственных макетов вывода для галерей. Смешанные фото+видео галереи.
Плагин создан как замена Simple Image Gallery и поддерживает синтаксис {gallery}{/gallery}.

👩‍💻 v.1.2.3. Что нового?
- Обработка вступительного и полного текста для материалов Joomla. Добавлена обработка шорткодов в полном и вступительном текстах материалов Joomla.
- Системные требования. Повышены минимальные требования до Joomla 5 и PHP 8.1.
- Мелкие правки. Исправлена ошибка работы макета по умолчанию в плагине контента.
- Joomla 6. Пакет плагинов успешно протестирован на Joomla 6.

Страница расширения.
GitHub расширения
Joomla Extensions Directory

@joomlafeed

#joomla #расширения
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Модификация WT JShopping products anywhere - Uikit макет

Итак, дано: музыкальный журнал, в котором представлены новости, интервью, рецензии и есть небольшой магазин на JoomShopping.
Возникла необходимость внутри Joomla статей вставлять упоминание релиза и кнопочку «добавить в корзину».

Я взял плагин WT JShopping products anywhere Сергея Толкачева (@webtolkru).
Плагин отображает название товара и ссылку. При помощи напильника, ИИ и навыков вёрстки появился Uikit макет для шаблонов на базе Yootheme Pro.

Учитываается мобильная версия - телефоны и ipad.

Кнопка добавления в корзину работает по Ajax и появляется всплывающее окно (Notification Bar от Uikit) с информацией.

Пока это базовый вариант, требующий доведения до лоска, однако он уже работает и его можно применять на проектах.

Взять макет можно здесь.
А плагин вставки товаров в материалы можно забрать здесь.
Приветствуется доведение до ума и оформление в виде PR.
👍1
WT Content Image gallery v.1.2.3.1
Пакет плагинов галереи изображений и видео для вставки в материалы и модули Joomla, а так же везде, где работают плагины группы content.
Список изменений
- Мелкие правки. Исправление ошибки при ручном деплое
Подробнее
👍1
Forwarded from Joomla Feed (Sergey Tolkachyov)
Media is too big
VIEW IN TELEGRAM
👩‍💻 📱 WT Telegram bot для Joomla.
Плагин для отправки сообщений с сайта Joomla в бота Telegram. Плагин предоставляет простую возможность отправлять информацию из Joomla в чаты и каналы с помощью сообщений боту. Разработчики могут использовать его для своих расширений, использовав триггер события для плагинов onWttelegrambotSendMessage.

v.1.1.0. Что нового?

- Поддержка тем в чатах. Добавлена возможность указать message_thread_id для отправки сообщений в конкретную тему чата.

Страница расширения.
GitHub расширения.

@joomlafeed

#joomla #telegram #расширения
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Статья на Хабре: Роскомнадзор приступил к проверкам и начал рассылать предпринимателям первые требования по новому закону.
1 сентября 2025г. заработали новые положения закона о персданных. Для нас всех это новые правила и ответственность — штрафы до 15 000 000 рублей. Подготовиться успели далеко не все.

Сейчас РКН приступил к проверкам и клиенты автора статьи получили одно из первых «писем счастья».

— Есть форма обратной связи на сайте?
— Собираете заявки через соцсети?
— Ведете базу клиентов в CRM?
— Работаете с юрлицами (записываете ФИО контактных лиц)?
— Используете Google Analytics или Яндекс.Метрику?

Если ответ хотя бы на один вопрос «да» — значит эта история касается и вас.

Читать статью

@webtolkru

#joomla #сайты #ркн
💯2🤨1
Forwarded from Joomla Feed (Sergey Tolkachyov)
Media is too big
VIEW IN TELEGRAM
👩‍💻 WT YOOtheme Yandex Map v.1.2.0. Плагин для Joomla.
Плагин добавляет элемент Яндекс Карт для конструктора страниц YOOtheme в Joomla. Гибкие настройки отображения маркеров, всплывающих окон и их содержимого, кластеризация маркеров.

👩‍💻 v.1.2.0. Что нового?
- Исправление отображения иконок и всплывающих окон маркеров.
- Теперь на мобильных устройствах перетаскивание карты работает только с помощью двух пальцев
- Новые элементы управления картой:
- - Открыть карту в полноэкранном режиме
- - Линейка и планиметр
- - Определить моё местоположение
- - Управление поворотом и наклоном карты
- - Поиск по карте
- Новые режимы центрирования карты:
- - Режим Координаты. Используются значения полей Широта и Долгота
- - Режим На крайнем маркере. Используются координаты крайнего установленного на карте маркера
- - Режим Вмещать все маркеры. Карта позиционируется и масштабируется для отображения всех установленных маркеров на карте
- Теперь расположение элементов управления картой можно настроить
- Добавлена возможность выбрать цвет маркера
- Карта перемещается к маркеру при открытии всплывающего окна

- Добавлена возможность скрыть всплывающее окно
- Настраиваемая позиция всплывающего окна относительно маркера. Допустимые значения - сверху, слева и справа от маркера
- Улучшено указание координат с помощью мини-карты в настройках маркера. Теперь в окне настроек элемента карты при перетаскивании маркера карта следует за ним
- Добавлены параметры смещения по осям X и Y для иконок маркеров и кластеров
и другое.

Системные требования.
Минимальная версия Joomla - 4.2, PHP - 8.0.
Версия расширения 1.2.0 протестирована на Joomla 6.0-beta3.

👩‍💻 Релиз выпущен усердиями участника нашего сообщества Андрея Смирникова (@tg_andrey).

Страница расширения
GitHub расширения

@joomlafeed

#joomla #расширения #яндекс #yootheme #yandex #яндекскарты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
WT JoomShopping Favorite v.2.0.3
Функционал избранных товаров, реализован с помощью cookie. В стандартной комплектации список желаний JoomShopping отображается только в карточке товара. В списке товаров нет. При использовании различных хаков для добавления кнопки списка пожеланий в вид категории товаров кнопка перенаправляет в карточку товара, в случае если у товара есть зависимые атрибуты (влияют на цену).

WT JoomShopping Favorites - это альтернативный список пожеланий (избранные товары) для JoomShopping, который решает эти проблемы.
Начиная с версии 1.3.0 поддерживается только Joomla 4. Разработка версий для Joomla 3 заморожена.
Список изменений
- Сообщение пользователю. Добавлено уведомление пользователю о добавлении товара в избранное с помощью системных уведомлений Joomla.
- Исправление конфликтов. Исправление конфликтов со сторонними плагинами.
- Рефакторинг кода. Небольшие улучшения кодовой базы....
Подробнее
👍3
Forwarded from Joomla Feed (Dmitrijs Rekuns)
🚀 Joomla 6.0 и Joomla 5.4 уже здесь!

Сегодня проект Joomla! отмечает важный день — новый мажорный релиз Joomla 6.0 (Kuimarisha) и обновление Joomla 5.4 (Kutegemea) 🎉

Что нового в Joomla 6.0:
🔄 Автоматические обновления ядра — сайт обновляется сам, безопасно и без лишних действий.
🎨 Новый дочерний шаблон Cassiopeia с расширенными настройками цветов и шрифтов.
📜 Расширенное версионирование — теперь включает пользовательские поля.
🧩 Новые типы полей: Notes (заметки) и Numbers (числа с форматированием).
⚙️ Плагин Backward Compatibility 6 — облегчает обновление с Joomla 5.
💫 Плавные CSS-переходы в Cassiopeia и Atum.
🧠 Обновлён TinyMCE 8.0.1.

📦 Обновление с Joomla 5.4 → 6.0 — это обновление, а не миграция 💪 Большинство расширений продолжат работать без проблем.

https://joomlaportal.ru/news/release-news/joomla-6-0-i-joomla-5-4-uzhe-zdes
👍2❤1
Joomla 6. Обновил статью в Википедии, новый скриншот, информация о версиях, обновил план развития Joomla на Joomlaportal.

@webtolkru

#joomla #webdev #php
1👍8⚡1
Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™. Интервью с волонтёрами 🎈

Ну что, друзья, вот и настал этот долгожданный момент. Мы выпустили первое издание собственного журнала под эгидой NorrNext, который включает в себя интервью с видными деятелями сообщества из разных стран и континентов.
Общий нарратив: показать, что нас объединяет (Joomla) и узнать больше о людях, которые вносят свой вклад в развитие платформы в своих сообществах.
20 лет — это много. Давайте же узнаем о коллегах 🎁
Первый цикл включает такие страны, как Австрия, Испания, Латвия, Россия, Румыния, Тайланд, Черногория, Чехия.

⚙️ С кем интервью:

✔️ Владимир Елисеев 🇷🇺
✔️ Дмитрий Рекун 🇱🇻
✔️ Дмитрий Цымбал 🇷🇺
✔️ Евгений Сивоконь 🇷🇺
✔️ Сергей Толкачёв 🇷🇺
✔️ Dénes Székely 🇷🇴
✔️ Jan Pavelka 🇨🇿
✔️ Miljan Vujosevic 🇲🇪
✔️ Sergio Iglesias 🇪🇸
✔️ Sigrid Gramlinger 🇦🇹
✔️ Pisan Chueatchatchai 🇹🇭

‼️ Новые интервью будут добавляться до конца декабря 2025. Заходите по ссылке время от времени💡

👉 Читать далее
👍2
Forwarded from Joomla Feed (Sergey Tolkachyov)
👩‍💻 Обзор нововведений в Joomla 6.0.0. Статья на Хабре.
14 октября 2025 года вышла Joomla 6.0.0. При подготовке к Joomla 4 был изменён релизный цикл на 2-хлетний, где каждая мажорная версия имеет 2 года активной разработки и 2 года - в режиме поддержки и закрытия уязвимостей. С выходом Joomla 6 "четверка" завершает свой путь, а Joomla 5 переходит в режим тех.поддержки. Мажорный релиз не означает больше коренной слом обратной совместимости, но является своеобразным слепком, фиксацией изменений в момент времени. Переход с Joomla 5 на Joomla 6 - это обновление, а не миграция.

❓ Что же в ней нового?
Давайте посмотрим поподробнее:
- обзор новинок со скриншотами и видео
- примечания для разработчиков
- ссылки на полезные ресурсы

Читать обзор на Хабре.

@joomlafeed

#joomla #joomla6
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
К чему приводит замалчивание ошибок

На ревью у коллег часто вижу решения вот такого плана:

use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Types\Type;
use src\Common\Domain\Model\Discount\DiscountType as DiscountTypeEnum;

class DiscountKindType extends Type
{
public function convertToPHPValue($value, AbstractPlatform $platform): ?string
{
/** @var int|null $value */
if (is_null($value)) {
return null;
}

try {
return DiscountTypeEnum::codeToValue($value);
} catch (\Throwable) {
return null;
}
}
}


Делать так ни в коем случае нельзя сразу по многим причинам. Давайте сначала разберемся, что здесь происходит:

⚙️ Из БД извлечено значение, которое Doctrine должна поместить в поле PHP объекта, вызвав метод convertToPHPValue() кастомного типа DiscountKindType.

⚙️ В БД данные хранятся в виде числовых констант (легаси), в коде - в виде строковых констант.

⚙️ Если из БД пришла константа, про которую наш код не знает, к какой строке ее привести, из DiscountTypeEnum::codeToValue() вылетит Exception.

⚙️ Этот Exception в нашем коде замалчивается и выполняется возврат null в качестве значения.

Теперь давайте посмотрим, к каким последствиям приводят такие решения:

☠️ Заглушенный эксцепшен не осядет в логах, мы никогда не узнаем, что он вообще был.

☠️ Тем самым факт присутствия в БД данных, которые наш код не может обработать, скрыт. То есть, у нас либо в базе лежат невалидные данные, либо код написан так, что одна часть приложения не знает, что пишет другая. А мы эту ситуацию скрываем.

☠️ Когда происходила запись в базу неизвестной нашему коду константы, в это действие вкладывался смысл "сохранение скидки с таким-то типом". Когда мы из базы достаем этот неизвестный коду тип и приводим его к null, мы пускаем по коду "гулять" сущность "скидки без типа". Ведь эта сущность после гидрации куда-то пойдет, с ней будут выполняться какие-то действия, и результат этих действий, скорее всего, снова будет сохранен в базу. И все это в полной тишине (т. е. без логирования).

Хотим ли мы, чтобы наше приложение вело себя таким образом? Позже или раньше последствия таких решений накапливаются и становятся заметны. Только вот дебажить их и исправлять последствия (т. е., исправлять данные) в разы дольше и неприятнее, чем если бы наше приложение сразу упало с ошибкой.
🔥2
WT SEO Meta templates v.2.0.4. Правки для Joomla 5.4 / Joomla 6.
Плагин для использования переменных в тегах title и meta description. Позволяет использовать формулы (шаблоны, маски) для тега title и meta-тега description. Принимает данные (в том числе и сео-формулы) из дополнительных плагинов-провайдеров.

👩‍💻 Что нового?
➕ Joomla 6 ready. Внесены изменения для совместимости с Joomla 6.
⛔️ Автоустановка провайдеров. Отключена автоматическая установка плагинов-провайдеров во избежание ошибок установки в случае гипотетической недоступности удалённого сервера. Установите нужные провайдеры вручную.

В плагине-провайдере для материалов Joomla внесены изменения для исключения возникавшей на Joomla 5.4 и Joomla 6.0 ошибки.

Основной плагин
Плагины-провайдеры:
- WT SEO Meta templates - Virtuemart
- WT SEO Meta templates - JoomShopping
- WT SEO Meta templates - Content, стандартные материалы и категории Joomla
- WT SEO Meta templates - Tags, стандартные теги Joomla.
- WT SEO Meta templates - Phoca Gallery, компонент галереи изображений Phoca Gallery.

@webtolkru

#joomla #расширения #seo
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Из Joomla-чата) Сохраню сюда, буду клиентам показывать

#юмор
😁2👍1
Forwarded from Joomla Feed (Sergey Tolkachyov)
👩‍💻 Joomla 6: Автоматические обновления ядра в Joomla.
В октябрьском номере официального журнала Joomla - Joomla Community Magazine вышла статья David Jardin, где рассказывается о внедрении функционала автоматического обновления ядра Joomla.

❓Почему сейчас? Joomla же жила как-то 20 лет без автоматических обновлений?
Это оказалась самая востребованная за последнее время от пользователей Joomla функция. Но, основная причина внедрения - проблемы безопасности.

Всякий раз, когда в новой версии Joomla устраняется уязвимость, злоумышленники начинают анализировать код, чтобы выяснить, какая именно уязвимость была исправлена. И как только они это выясняют - начинается разработка автоматизированных скриптов для взлома как можно большего количества сайтов. Затем доступы к автоматически взломанным сайтам продаются в профильных чатах и ресурсах "пачками" по несколько сотен тысяч или миллионов сайтов. Ваш сайт могли взломать несколько лет назад, но воспользоваться уязвимостью могут не сразу, а тогда, когда у злоумышленников возникнет необходимость. И только после этого вы может быть узнаете об этом.

Анализ патча, понимание проблемы и разработка скрипта требуют времени. И если владелец сайта не обновит его до истечения этого срока, сайт может быть взломан. А хакеры действуют быстро! Для критических, легко эксплуатируемых уязвимостей речь идёт о временном окне в 10–12 часов — и этого времени явно недостаточно, чтобы все успели обновить свои сайты.

Здесь выходят на первый план автоматизированные обновления: проект Joomla теперь может активно устанавливать обновления (и, следовательно, исправления безопасности) на сайты, чтобы гарантировать, что сайты действительно обновляются вовремя.

🕘 От первых идей до реализации прошло 5 лет. И здесь можно вспомнить, как в Joomla 5.1 внедрили TUF - The Update Framework, позволяющий устанавливать защищённое соединение между сайтом и сервером обновлений и исключает возможность supply chain attack (атаки на цепочку поставок).

Об особенностях реализации и требованиях к сайту читаем подробнее в статье на JCM.

@joomlafeed

#joomla #secutiry #jcm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
WT SEO Meta templates - Content v.2.0.3
Плагин-провайдер данных материалов и категорий Joomla, а также их пользовательских полей для основного плагина WT SEO Meta templates. Параметры плагина позволяют задать единый для всех категорий и/или товаров шаблон, по которому будут формироваться текст тега <title> и текст meta-тега description. Если параметры плагина отключены совсем, то он просто будет формировать переменные, которые Вы можете использовать при заполнении <title> и meta-description вручную. Поддерживается Joomla 3 и Joomla 4.
Список изменений
- Правки PHP 8.4. Улучшена совместимость с PHP 8.4.
- Обработка спец.символов во вступительном тексте материала. Кавычки и прочие символы могли сломать вёрстку сайта....
Подробнее
👍1
WT JSwiper - SWiper.js для Joomla-разработчиков v.12.0.3.
Вышел релиз плагина веб-ассета для Joomla 4+, подключающий swiper.js в вашу Joomla.

На скриншоте не лого Swiper потому, что сборку плагина теперь автоматизировал на GitHub Actions. Тут хорошо так помог ИИ Qwen. Новые версии плагина теперь должны появляться сами. Собранные бандлы css и js тянутся с jsdelivr по ссылкам пока что, там может и до полноценной сборки доберусь. Ссылку на GitHub репозиторий поменял на свой.

Страница расширения
GitHub расширения (новый, с автосборками)

@webtolkru

#joomla #js #webdev #development #разработка

😢 И грустная новость: на ладан дышит мой терабайтник WD, прослуживший около 7 лет. Там лежит примерно 2/3 рабочих файлов от клиентов. Ну и всякое личное: distrib, фото/видео. Он ещё подаёт признаки жизни, так что будем надеяться - успею всё скопировать...
👍3
👩‍💻 Совет по 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