WebTolkRu
101 subscribers
629 photos
73 videos
2 files
651 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)
1️⃣ Мажорная версия Joomla и расширений
Используется для первой версии и тогда, когда происходят неизбежный слом обратной совместимости. Например, новая версия переписана на новую архитектуру файлов и классов и ранее доступный для Joomla 3 модуль / плагин теперь не может с ней работать, а только с Joomla 4+. Если видим, что изменилась мажорная версия (первый разряд в версии) - сначала читаем информацию на сайте разработчика, обкладываемся бэкапами и только потом пробуем обновлять Joomla или расширения.
2️⃣ Минорная версия
Используется при появлении нового функционала или большого накопленного количества изменений, заметных для конечных пользователей. Например, изменение интерфейса расширения, появление новых разделов в компоненте, новых настроек и т.д. Эти обновления не должны ломать обратную совместимость. Но лучше перед обновлением ознакомиться со списком изменений. Мало ли что там...
3️⃣ Патч версия
Используется чаще всего. Любые небольшие изменения, исправления мелких ошибок, рефакторинг кода, поправили комментарий в PHP Doc block, изменили code style и т.д. - это патч версии. Для конечного пользователя изменения скорее всего незаметны невооружённым глазом. Обновление на эту версию не принесет проблем в виду их малого размера. Но ответственный разработчик всё равно сначала изучает changelog и обкладывается бэкапами.

👩‍💻 Changelog
В Joomla 4 и Joomla 5, кстати, появилась кнопка "изменения". Её видно в списке доступных обновлений расширений, но только если разработчик внедрил у себя changelog url. Тогда вебмастер может непосредственно перед обновлением ознакомиться со списком изменений прямо в админке Joomla. Также changelog расширения можно увидеть в списке всех установленных расширений Joomla: Система - Управление - Расширения. У некоторых расширений число версии является кнопкой. Нажмите её и увидите всплывающее окно, где динамически с сайта разработчика загрузится список изменений для данной версии. Вы узнаете ЧТО было добавлено, ЧТО удалено, КАКИЕ исправления ошибок и уязвимостей были сделаны и т.д.

@joomlafeed
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Joomla Feed (Sergey Tolkachyov)
Компонент календаря событий iCagenda v.3.9.4
Популярный компонент для календаря мероприятий начиная с версии 3.9.0 получил полную совместимость с Joomla 5 без включенного плагина обратной совместимости.

👩‍💻 iCagenda позволяет сделать на сайте как платную, так и бесплатную регистрацию на мероприятия, события, концерты.
Некоторые сторонние разработчики поддерживают интеграции с iCagenda: AcyMailng, Falang, Advanced Custom Fields.
Возможности компонента:
- гибкие настройки событий, регулярные события
- контактная информация мероприятия
- фильтры для поиска
- платная и бесплатная регистрации
- функция отмены мероприятия с уведомлением всех посетителей
- плагины ActionLog и Privacy (персональные данные Joomla)
- расслыка посетителям конкретного мероприятия
... и многое другое.
Компонент имеет русскую локализацию.

Цены

Расширение имеет 3 редакции:
- бесплатная версия
- Платная:
- - Pro 1 год: 25 евро
- - Pro Unlimited: 100 евро единоразово

Страница расширения
Расширение на JED

Демо Joomla 4 / Joomla 5

#расширения
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏1
WT CDEK library для Joomla
Небольшая нативная PHP Joomla библиотека для работы с API службы доставки CDEK. Пакет состоит из плагина для хранения настроек, PHP-библиотеки и виджета карты для выбора пунктов выдачи заказа.
Поддерживается Joomla 4.2.7 и выше.

Библиотека представляет собой клиент для подключения и авторизации в API CDEK и несколько методов для работы с ним с предварительной проверкой структуры данных, а также обработку ошибок при запросе. Для работы с библиотекой под рукой необходимо иметь официальную документацию CDEK API.

Данное расширение предназначено для Joomla-разработчиков. Они могут использовать его в качестве зависимости при разработке своих расширений для Joomla.
Pull Requests welcome со стороны Joomla разработчиков!
В составе библиотеки методы для получения списка ПВЗ, регионов, городов, 2 метода для расчета стоимости доставки и другие.

👩‍💻 Виджет выбора типа доставки от CDEK (карта с выбором ПВЗ)
В состав библиотеки включен виджет карты ПВЗ последней на данный момент версии: 3.10.2.
Javascript виджета оформлен как Joomla Web Asset. В своём коде подключаем его с помощью WebAssetManager.

По умолчанию в комплекте с виджетом идёт файл service.php, который является точкой входа для ajax-запроса. В данной библиотеке функционал этого файла (получение списка ПВЗ и калькуляции тарифов) перенесён в системный плагин Joomla.

Страница расширения, примеры кода.
GitHub репозиторий WT CDEK Library

Документация API CDEK
Документация виджета карты с выбором ПВЗ CDEK

#joomla #cdek #php #library #sdk #api
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Forwarded from Joomla Feed (Sergey Tolkachyov)
This media is not supported in your browser
VIEW IN TELEGRAM
SM WT CDEK аддон доставки для JoomShopping
Способ доставки для интернет-магазина JoomShopping с выбором ПВЗ.
Возможности аддона:
- работа с CDEK API v.2.0
- расчет стоимости по актуальным тарифам для физ.лиц (доставка) и интернет-магазин (для некоторых тарифов требуется юр.лицо)
- Отображение сроков доставки
- Отображение виджета с картой для выбора пункта выдачи заказа или постамата (нужен API ключ Яндекс.Карт)
- Неограниченное количество способов доставки Joomla JoomShopping с помощью CDEK
- Возможность наценки на способы доставки CDEK
- Возможность указания коэффициента поправки веса. В этот коэффициент закладывается вес упаковки.
- Отображение отладочной информации на этапе расчета стоимости доставки.
- Возможность отключить показ способа доставки или сделать его неактивным в случае возникновения ошибок
Системные требования:
- минимальная версия Joomla - 4.2.7.
- минимальная версия JoomShopping - 5+
- Библиотека WT Cdek. Устанавливается вместе с аддоном.
- API ключ Яндекс.Карт

Расширение платное.

Страница расширения и купить

#расширения #JoomShopping
👍1
JLSitemap - SWJProjects
Плагин для интеграции Joomla компонента цифровых проектов SW JProjects и статической XML-карты сайта JLSitemap
Подробнее
👍1
Поступают запросы на создание версий расширений для Joomla 3 для тех расширений, что были написаны сразу для Joomla 4 / Joomla 5. Надо?
Anonymous Poll
20%
Да
60%
Нет
20%
Посмотреть ответы
WebTolkRu pinned «Поступают запросы на создание версий расширений для Joomla 3 для тех расширений, что были написаны сразу для Joomla 4 / Joomla 5. Надо?»
Разово поблагодарить

Благодарность за расширения Joomla или статьи.
WebTolkRu pinned «Разово поблагодарить Благодарность за расширения Joomla или статьи.»
Forwarded from Joomla Feed (Sergey Tolkachyov)
Вышел JoomShoppping 5.5.0
Один из самых популярных компонентов интернет-магазина на Joomla.

Что нового?
- при создании пункта меню выбрать категорию, производителя и т.д. можно из выпадающего списка
- обновлён макет выбора уже загруженного изображения при редактировании товара
- исправлено сохранение характеристик (выбор основной категории товара
при мультикатегорийности сбрасывал значение текстовых характеристик)
- обновление роутера компонента
- новый фильтр в списке пользователей в админке

Поля JForm для разработчиков
Добавлены поля Joomla Form для разработчиков сторонних расширений. Теперь можно не писать свои типы полей Joomla для получения данных JoomShopping, а использовать из ядра компонента. Namespace полей Joomla\Component\Jshopping\Administrator\Field.
Доступны поля:
- список зависимых атрибутов
- список значений для выбранного атрибута
- список категорий
- список характеристик
- список значений для указанной характеристики
- список меток (лейблов) товара
- список статусов заказа
- список производителей
- список вендоров
Теперь в своём модуле или плагине можно выбрать категорию товаров таким образом:
<field type="jshoppingcategories"
name="jshoppingcategories"
label="jshoppingcategories"
addfieldprefix="Joomla\Component\Jshopping\Administrator\Field"/>

Ещё примеры использования здесь.

JoomShopping вышел на GitHub
Долгое время разработчики работали с сообществом только посредством своего форума. На форуме они получали предложения, багрепорты, а изменения производились в закрытом репозитории. Однако, недавно появился ещё репозиторий компонента на GitHub для сторонних контрибьютеров, где есть возможность предложить свой код и он даже может быть принят. Для этого изменение должно быть хорошо описано/задокументировано в ветке на форуме или в самом PR: описана проблема, шаги её воспроизведения. Гарантий того, что ваш PR будет сразу принят нет, но это большой шаг в сторону открытости компонента к изменениям.

Скачать JoomShopping

#JoomShopping #php #расширения #интернетмагазин
👍1
👩‍💻 Совет по Joomla: как указать форму слова в зависимости от количества
Например, при создании способа доставки вы хотите показывать "дня", "дней" в зависимости от количества дней: "3 дня", но "5 дней".

Для этого воспользуйтесь методом Text::plural() в Joomla.
PHP файл:
use Joomla\CMS\Language\Text;

// Сколько дней будет идти посылка
$period_max = 5;

/**
* Подключаем файл с языковыми константами для вывода "дней" в падежах
*/
$lang = Factory::getApplication()->getLanguage();
// Системное имя расширения
$extension = 'lib_webtolk_libraryname';
// JPATH_SITE для языковых файлов фронтенда
$base_dir = JPATH_SITE;
// Код языка
$language_tag = 'ru-RU';
// Принудительная загрузка указанного языка
$reload = true;
// Загружаем все языковые константы из файла локализации
$lang->load($extension, $base_dir, $language_tag, $reload);
?>

Срок доставки: <?php echo $period_max .' '.Text::plural('WT_SHIPPING_DAY', $period_max); ?>

Для того, чтобы это работало - ваше расширение должно иметь локализацию (языковые файлы) по канонам Joomla.
Языковой *.ini файл (локализация):
WT_SHIPPING_DAY_0 = "дней"
WT_SHIPPING_DAY_1 = "день"
WT_SHIPPING_DAY_2 = "дня"
WT_SHIPPING_DAY_MORE = "дней"


#joomla #php #cookbook #dev #web #wevdev

@webtolkru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
WT Telegram bot - Content v.1.0.1
Плагин позволяет отправлять в Telegram чат или канал материалы из интерфейса Joomla. На данный момент вручную с помощью кнопки на тулбаре в списке статей или при редактировании статьи. Для его работы нужен установленный и настроенный основной плагин System - WT Telegram bot
Список изменений
- Исправление ошибок. Некорректное добавление кнопки в интерфейсе Joomla 4, вызывавшее ошибку.
- Исправление английской локализации. Исправление перевода на английский язык
Подробнее
Forwarded from Joomla Feed (Sergey Tolkachyov)
Работа с Joomla в PHPStorm. Шаблоны (boilerplate) для быстрого создания модулей, плагинов Joomla в IDE.
PHPStorm - среда разработки для PHP-программистов, работающих с кодом как на чистом PHP, так и с такими PHP-фреймворками как Symfony, Laravel, Yii и другими. Эти фреймворки чаще всего используются на "серьёзных" "взрослых" проектах с большой посещаемостью, нагрузкой на сервер, аудиториями с миллионами посетителей. Однако, у многих до сих пор вызывает удивление то, что Joomla - это тоже PHP-фреймворк. Долгое время это был параллельный CMS проект, а начиная с Joomla 4 фреймворк вошёл в состав ядра Joomla CMS. Таким образом у вас под капотом CMS полноценный PHP фреймворк, который в умелых руках может стать мощным проектом.

PHPStorm с 2016 года имеет отличную поддержку Joomla, подсказывает методы работы ядра, аргументы функций, навигация по коду и всё-всё, что обычно является атрибутом "серьёзных" движков.

Бойлерплейты Joomla расширений для PHPStorm
Участник нашего сообщества, разработчик Игорь Бердичевский (@septdir) поделился на GitHub своими "плюшками" для работы с Joomla:
- codeStyle - Code formating style
- colors - цветовая схема для PHPStorm
- fileTemplates - шаблоны для расширений Joomla
- options - файл с названиями для шаблонов
- project - шаблон для пустого Joomla-проекта включая задания для сборщика проекта Phing
- templates - Live Templates for files
- watchers - Configuration for File Watcher
Этот инструментарий позволяет разработчику в PHPStorm быстро создать каркас нового модуля, плагина, компонента и не тратить время на ручное создание структуры файлов и папок.

Репозиторий JetBrains-PhpStorm на GitHub

Также полезные ссылки:
- официальная документация PHPStorm по работе с Joomla
- Настройка IDE (PhpStorm) для работы с Joomla - большая подробная статья, инструкция как всё правильно настроить и работать. Автор - участник нашего сообщества Дмитрий Рекун (@drekun)

#joomla #php #phpstorm #ide #cms #framework #boilerplate #github #laravel #symfony #yii
👍2
👩‍💻 Совет по Joomla: как получать данные из суперглобальных массивов $_POST, $_GET и других?
На основе данных из $_GET, $_POST порой строится логика работы кода начиная от шаблона Joomla и кончая модулями и плагинами. Для работы с этими данными используется объект Input, который мы получаем из Приложения Joomla.

Приведу пример, часто использующийся при разработке шаблонов Joomla
/** @var \Joomla\CMS\Application\CMSApplication $app */
$app = Factory::getApplication();
/** @var \Joomla\Input\Input $input */
$input = $app->getInput();

// Detecting Active Variables
$option = $input->get('option', '','');
$view = $input->get('view', '','');
$layout = $input->getCmd('layout', '');
$task = $input->getString('task', '');
$itemid = $input->getInt('Itemid', '');

В методе $input->get() 2-й аргумент - это значение по умолчанию на случай, если данных не обнаружено. 3-й аргумент - параметры фильтрации данных - будьте с ним внимательны.
Например, вы хотите получить данные, отправленные на ендпоинт в виде JSON.stringify.
$input->json->get('title', '', 'RAW')
// ИЛИ
$data = $input->json->getArray();

Если вы уверены, что данные должны быть именно в $_POST и нигде более, то получайте их именно оттуда
$input->post->get('title', '', 'RAW')

Подробнее в файле libraries/vendor/joomla/input/src/Input.php

#development #joomla #php #api #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🙏1
Forwarded from Joomla Feed (Sergey Tolkachyov)
Видео сессий JoomlaDay USA теперь на Youtube в открытом доступе
JoomlaDay - конференция фанатов Joomla и Joomla-разработчиков как для тех, кто только начинает осваиваться с движком, так и для профессионалов, проходящая во многих странах. Как правило участие в конференции платное, участники получают эксклюзивный доступ к материалам конференции. Организаторы JoomlaDay USA решили выложить в открытый доступ видео выступлений 2024 года.

Канал Jday USA - Videos на Youtube
👍1
WT JoomShopping Bitrix24 PRO v.3.1.3
Плагин отправки заказов из интернет-магазина JoomShopping в CRM Битрикс24. Плагин передает лиды, сделки, создаёт контакты и повторные сделки. Обеспечивает смену статуса заказа в JoomShopping при изменении стадии сделки в Битрикс 24 (двухсторонняя интеграция).
Список изменений
- Улучшена поддержка Joomla 5. Проведен большой рефакторинг кода, подготавливающий плагин к повышению минимальных системных требований до Joomla 5 и PHP 8.1. Также удалены некоторые устаревшие методы.
- SubscriberInterface. Плагин полностью наследует SubscriberInterface
- Changelog url. Добавлен Changelog url, чтобы вы могли просмотреть список изменений в новой версии перед обновлением непосредственно в админ-панели Joomla....
Подробнее

#joomla #php #разработка #bitrix24 #битрикс24
👍2🙏1
👩‍💻 Совет по Joomla: методы и свойства объекта Input
В продолжение предыдущего поста шпаргалка по тому, что вообще объект Input в Joomla умеет.

Свойства объекта Input:
- get - суперглобальный массив $_GET
- post - суперглобальный массив $_POST
- request - суперглобальный массив $_REQUEST
- server - суперглобальный массив $_SERVER
- env - $_ENV, переменные окружения
- files - $_FILES, загруженные файлы
- cookie - здесь собственно печеньки 🍪
- json - свойство для удобной работы с json-данными

Методы объекта Input:

Получаем значения с нужным нам типом данных:
- getInt - применяет фильтр Int, целое число
- getUint - применяет фильтр Uint, целое положительное число (-1823 не получим)
- getFloat - применяет фильтр Float, число с плавающей точкой, десятичная дробь
- getBool - применяет фильтр Bool, логическое true / false
- getWord - применяет фильтр Word, в значении только латинские буквы и нижнее подчеркивание
- getAlnum - alphanumeric string, сочетание букв и цифр. Полезно для токенов.
- getCmd - применяет фильтр Cmd к значению. Только латинские буквы, нижнее подчеркивание, тире и точка. Убирает ведущие точки.
- getBase64 - применяет фильтр Base64 к значению. Только латинские буквы, косая черта, знак плюса и знак равно.
- getString - применяет фильтр String к значению. Конвертирует в чистую строку, убирает все теги и атрибуты.
- getHtml - применяет фильтр Html к значению. Конвертирует в строку, убирает все HTML теги и атрибуты, кроме тех, что находятся в белом списке разрешенных тегов Joomla (в общих настройках Joomla)
- getPath - применяет фильтр Path к значению. Конвертирует в строку и валидирует как путь до папки или файла (например path/to/file.png или path/to/dir). Не принимает абсолютный путь или путь, который заканчивается косой чертой.
- getUsername - применяет фильтр Username к значению. Удаляет все невалидные для имени пользователя символы (\x00, -, \x1F, \x7F, <, >, ", ', %, &)
- getRaw - возвращает нефильтрованные данные. Небезопасно!

Получить несколько значений сразу
/** @var \Joomla\CMS\Application\CMSApplication $app */
$app = Factory::getApplication();
/** @var \Joomla\Input\Input $input */
$input = $app->getInput();

$data = $input->getArray();


#development #joomla #php #api #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 Совет по Joomla: как выполнить произвольный, нужный нам PHP-код?
Лайфхак, который можно использовать, когда необходимо выполнить произвольный PHP-код в Joomla - это сделать свой макет для модуля HTML-код (mod_custom). Удалить в нём всё, что предлагает Joomla и поместить свой код. В панели администратора же создать модуль, выбрать для него свой макет и... оно работает, но ещё дополнено функциональностью Joomla (привязка к пунктам меню, уровням доступа и языкам).
И выводить можно где угодно: в модульной позиции или с помощью шорт-кодов {loadmoduleid XXX} или {loadposition position_name}.

#php #joomla #development #webdev #разработка #cookbook
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
👩‍💻 Совет по Joomla: использовать HTMLHelper для рендера ссылок, изображений и т.д.
При работе с кодом хорошим тоном разработки считается наглядность кода, которая обеспечивает лёгкость его восприятия. Обычно это называют "чистый, читаемый код". Согласитесь, понимать следующую запись не всегда бывает удобно:
echo '<a href="index.php?option='.$option.'&view='.$view.'&id='.$id.'" target="'.$target.'">'.$link_title.'</a>';

или пример из стандартного шаблона JoomShopping:
<a class="lightbox" id="main_image_full_<?php print $image->image_id?>" href="<?php print $this->image_product_path?>/<?php print $image->image_full;?>" <?php if ($k!=0){?>style="display:none"<?php }?> title="<?php print htmlspecialchars($image->img_title)?>">

Наглядностью и лёгкостью чтения, к сожалению, и не пахнет.

В API Joomla есть довольно богатый инструмент - класс HTMLHelper. В нём довольно много полезных фич, приведу пример для рендера ссылок как самого простого элемента. Метод HTMLHelper::link() принимает 3 аргумента:
- $url - формируем его программно заранее и передаем как параметр
- $text - собственно текст ссылки. Это может быть любое HTML-содержимое: картинка, код и т.д. - как в вёрстке.
- $attribs - самые разные атрибуты ссылки: class, target, onclick, кастомные data-атрибуты и т.д.
Согласитесь, так гораздо нагляднее. И порядок в коде.
use Joomla\CMS\HTML\HTMLHelper;

$url = 'index.php?option=' . $option . '&view=' . $view . '&id=' . $id;
$link_title = HTMLHelper::image('images/headers/raindrops.jpg', 'Alt attrib for image');
$target = '_blank';
$linkAttribs = [
'target' => $target,
'class' => 'btn btn-primary',
'onclick' => 'alert(123);',
'data-link-id' => '4a5d7f6a455sf8',
];

echo HTMLHelper::link($url, $link_title, $linkAttribs);

Частично ознакомиться с методами класса HTMLHelper можно в файле libraries/src/HTML/HTMLHelper.php.

#joomla #php #development #разработка #html #cookbook
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🙏1
👩‍💻 Совет по Joomla: вардампер от Symfony
В состав Joomla Framework, вошедшего под капот Joomla 4+, входят некоторые компоненты Symfony, среди которых и VarDumper.

Соответственно в Joomla 4 / Joomla 5 можно использовать вместо var_dump() следующее:
use Webtolk\Cdekapi\Cdek;

$cdek = new Cdek();
$cities = $cdek->getLocationCities(['page'=>'1']);
dump($cities);
dd($cities);

dump() может показывать структуру массива/объекта сворачиваемыми уровнями.
dd() - это dump & die. После дампа дальнейшее выполнение кода остановится с помощью exit().

#joomla #development #php #разработка #symfony #cookbook
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🙏1