WebTolkRu
99 subscribers
618 photos
72 videos
2 files
643 links
Joomla-разработчик. Контрибьютер ядра Joomla. https://web-tolk.ru. Разработка Joomla на заказ. Также пишу в @JoomlaFeed.
@sergeytolkachyov Хабр: https://habr.com/ru/users/sergeytolkachyov/posts/
Download Telegram
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
👩‍💻 Совет по 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
👩‍💻 Совет по 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
Forwarded from Joomla Feed (Sergey Tolkachyov)
Joomla 4 Rest API: создаем свои JSON-эндпоинты с нуля

По умолчанию Joomla отправляет ответы в формате JSON API, если запрос содержит Accept: application/json или специальный заголовок JSON API. Хотя ядро Joomla не поддерживает другие типы контента, система позволяет разработчикам добавлять дополнительные форматы для ответов.

👩‍💻 Цели материала:
- Получить JSON ответ от API Joomla;
- Создать необходимый плагин группы webservices и API-часть компонента;
- Использовать параметры модуля для моделирования данных, которые мы отправим в ответе API.

👩‍💻 Что не является целью?​
Обучение созданию расширений. Данное руководство предполагает, что вы уже умеете создавать расширения для Joomla. Для работы API потребуются плагин и компонент, но компонент может быть минимальным — без модели (Model), с простой административной частью.

Эта статья - перевод на русский язык раздела официальной документации Joomla для разработчиков Joomla! Programmers Documentation for Joomla 5.2. Статья пригодится разработчиком, работающим с реактивными frontend- фреймворками.

Перевод выполнил участник нашего сообщества Виталий Некрасов (@vitalik_a).

- Читать статью на Хабре
- Оригинал в документации

Подпишись на @joomlafeed

#webdev #разработка #joomla #api #restapi
Please open Telegram to view this post
VIEW IN TELEGRAM
Создание материалов Joomla с пользовательскими полями по REST API (webservice)

Может я где проглядел, но те немногие источники, с которыми я бегло знаком, в основном рассказывают о том как в принципе создать материал в Joomla 4 / Joomla 5 с помощью REST API. А про пользовательские поля ничего не сказано: как в Joomla REST API к материалу добавить ещё и пользовательские поля?

Контекст: переношу с одного сайта на другой материалы: из Joomla 3 в Joomla 5. Для этого пишу CLI-скрипт (командная строка). Скрипт создаёт материалы на сайте-приёмнике через REST API Joomla. Собственно, похожий пример был в статье французского разработчика Александра Элизе (Alexandre Elisé), где он приводил пример консольного плагина Jiji (статья в JCM, GitHub).

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

Секрет со структурой данных REST API Joomla прост: нужно воссоздать структуру данных такую же, как в форме редактирования материала в админке.

$this->apiUrl->setPath('/api/index.php/v1/content/articles');
$data = [
'title' => 'How to add an article to Joomla via the API?',
'alias' => 'how-to-add-article-via-joomla-api',
'articletext' => 'I have no idea...',
'catid' => 12,
'language' => '*',
'metadesc' => '',
'com_fields' => [
'multicategory' => 15,
'pole-wt-yandex-map' => '55.752502,37.623095',
],
];

$this->sendRequest($this->apiUrl->toString(), $data);

Чтобы по REST API к материалу Joomla добавились ещё и поля, нужно создать элемент com_fields, а в него уже положить массив вида системное имя поля => значение поля. В примере кода выше multicategory - это системное имя (как-бы алиас) пользовательского поля, а 15 - его значение.

@webtolkru

#joomla #разработка #php #restapi #api
👍4🔥1
👩‍💻 Что влияет на код ответа сервера в ajax-интерфейсе Joomla?

Некоторые API сторонних сервисов щепетильно относятся к коду ответа сервера, который возвращает Joomla. И если он не совпадает с допустимыми значениями - отключает вебхук. Логично.

Мой dev-сайт был выключен (система - общие настройки - сайт выключен: да). Я проверял работу вебхука для com_ajax, скопировав ссылку в браузер - всё работало хорошо, код ответа был 200. Когда же сервис делал запрос к сайту - получал код ответа 503. При этом, что удивительно - мой код работал при этом корректно.

Я перерыл всё, что только возможно, пока не решил поиграться со значением параметра format в запросе (index.php?option=com_ajax&plugin=myplugin&group=system&format=raw). И если format=raw или format=json возвращали то, что отдавал плагин, то format=html показал причину - сообщение Joomla о том, что сайт закрыт на техническое обслуживание. Стоило включить сайт обратно и код ответа на вебхук стал 200.

Несколько часов поисков...

@webtolkru

#joomla #api #webhook #webdev #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👏3💯3🥴1
Первую часть почти сделал.

#joomla #php #api #max #webdev
👏2
Forwarded from Joomla Feed (Sergey Tolkachyov)
👩‍💻 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

#joomla #api #почтароссии #расширения #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 WT CDEK library v.1.4.0 - библиотека интеграции Joomla со CDEK для разработчиков.

Небольшая нативная PHP Joomla библиотека для работы с API v.2 службы доставки CDEK. Пакет состоит из плагина для хранения настроек, PHP-библиотеки и виджета карты для выбора пунктов выдачи заказа. Библиотека представляет собой клиент для авторизации в CDEK API по OAuth, работы с некоторыми методами API: получения ряда данных и расчета стоимости доставки. Поддерживается Joomla 4.2.7 и выше.

v.1.4.0. Что нового?
- Поле Joomla Form Deliverypoints. Добавлено поле Joomla Form Deliverypoints для выбора ПВЗ и постаматов с select.fancy-select.
- Механизм watchfield. Переработан механизм watchfield для наблюдения за родительскими полями и обновления зависимых полей. Для поля вы можете указать изменения каких полей ему наблюдать.
- Документация. Обновлена документация по полям Joomla Form и механизму watchfield на GitHub.
- Данные AJAX-запросов. Исправлена ошибка передачи лишних данных из AJAX-запросов в API СДЭК.

На видео демо работы поля динамической подгрузки ПВЗ в поле выпадающего списка.

- Страница расширения
- GitHub
- Документация

@webtolkru

#joomla #cdek #api #разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1