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. В своём коде подключаем его с помощью
По умолчанию в комплекте с виджетом идёт файл
Страница расширения, примеры кода.
GitHub репозиторий WT CDEK Library
Документация API CDEK
Документация виджета карты с выбором ПВЗ CDEK
#joomla #cdek #php #library #sdk #api
Небольшая нативная PHP Joomla библиотека для работы с API службы доставки CDEK. Пакет состоит из плагина для хранения настроек, PHP-библиотеки и виджета карты для выбора пунктов выдачи заказа.
Поддерживается Joomla 4.2.7 и выше.
Библиотека представляет собой клиент для подключения и авторизации в API CDEK и несколько методов для работы с ним с предварительной проверкой структуры данных, а также обработку ошибок при запросе. Для работы с библиотекой под рукой необходимо иметь официальную документацию CDEK API.
Данное расширение предназначено для Joomla-разработчиков. Они могут использовать его в качестве зависимости при разработке своих расширений для Joomla.
Pull Requests welcome со стороны Joomla разработчиков!
В составе библиотеки методы для получения списка ПВЗ, регионов, городов, 2 метода для расчета стоимости доставки и другие.
В состав библиотеки включен виджет карты ПВЗ последней на данный момент версии: 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
На основе данных из
$_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
В продолжение предыдущего поста шпаргалка по тому, что вообще объект
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
Telegram
WebTolkRu
👩💻 Совет по Joomla: как получать данные из суперглобальных массивов $_POST, $_GET и других?
На основе данных из $_GET, $_POST порой строится логика работы кода начиная от шаблона Joomla и кончая модулями и плагинами. Для работы с этими данными используется…
На основе данных из $_GET, $_POST порой строится логика работы кода начиная от шаблона Joomla и кончая модулями и плагинами. Для работы с этими данными используется…
👍2
Forwarded from Joomla Feed (Sergey Tolkachyov)
Joomla 4 Rest API: создаем свои JSON-эндпоинты с нуля
По умолчанию Joomla отправляет ответы в формате JSON API, если запрос содержит
👩💻 Цели материала:
- Получить 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
По умолчанию 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 4 Rest API: создаем свои JSON-эндпоинты с нуля
По умолчанию Joomla отправляет ответы в формате JSON API, если запрос содержит Accept: application/json или специальный заголовок JSON API. Хотя ядро Joomla не поддерживает другие типы контента,...
Создание материалов 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 прост: нужно воссоздать структуру данных такую же, как в форме редактирования материала в админке.
Чтобы по REST API к материалу Joomla добавились ещё и поля, нужно создать элемент
@webtolkru
#joomla #разработка #php #restapi #api
Может я где проглядел, но те немногие источники, с которыми я бегло знаком, в основном рассказывают о том как в принципе создать материал в 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
Некоторые 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
Forwarded from Joomla Feed (Sergey Tolkachyov)
Joomla 5+ пакет для интеграции с API Почты России: нормализация данных, расчёт доставки, создание отправлений, партии, документы, возвраты, поиск отделений, справочники и SOAP-отслеживание.
v.3.0.0. Что нового?
Это дальнейшее развитие ранее закрытой Joomla-библиотеки для работы с API сервиса Отправка (для бизнеса) Почты России. Поэтому версия не 1.0.0, а 3.0.0.
Сейчас эта библиотека ушла от собственных реализаций и стала Joomla-обёрткой известного PHP SDK от
Lapay Group. Возможности библиотеки.
- получение настроек аккаунта, точек сдачи и текущего остатка запросов к API;
- нормализация адресов, ФИО и телефонов перед созданием отправления;
- расчёт тарифа и срока доставки;
- создание, поиск, изменение, удаление и возврат заказов в состояние «Новые»;
- проверка надёжности получателя;
- создание партий, просмотр партий и заказов внутри партии;
- генерация пакета печатных документов и формы Ф103;
- создание, изменение и удаление возвратных отправлений;
- поиск отделений по индексу, адресу и координатам, получение сервисов отделения;
- локальный список стран;
- SOAP-отслеживание операций по РПО и работа с билетами пакетного трекинга.
В пакете библиотеки
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
Небольшая нативная 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