Новости Joomla

👩‍💻 WT CDEK library v.1.3.0 - обновление PHP SDK для Joomla + CDEK.

👩‍💻 WT CDEK library v.1.3.0 - обновление PHP SDK для Joomla + CDEK.

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

В пакет входят:
- библиотека Webtolk/Cdekapi
- системный плагин System - WT Cdek для хранения настроек и AJAX-интеграций
- task-плагин Task - Update WT Cdek data для обновления локальных копий справочников CDEK по расписанию
- web asset с официальным JavaScript-виджетом СДЭК

👉 v.1.3.0. Что нового?
- Полный рефакторинг библиотеки. Библиотека переработана в entity-based API с фасадом Cdek и отдельным слоем запросов. Обратная совместимость не нарушена, поэтому версия библиотеки - 1.3.0.
- Добавлена поддержка новых разделов API СДЭК. Добавлена поддержка новых разделов API СДЭК: webhooks, prealert, печатные формы, payment, passport, reverse, intakes и других сущностей.
- Улучшена интеграция с Joomla.
Улучшена интеграция с Joomla: installer script для layouts, новые поля Joomla Form для тарифов и обновлённые js виджета CDEK.
- документация библиотеки. Все методы библиотеки подробно описаны, а так же текст документации собран в отдельной папке в git репозитории и будет опубликован на сайте.

Библиотека эта нужна для разработчиков, создающих свои расширения для интеграции Joomla и курьерской службы CDEK.

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

@joomlafeed

0 Пользователей и 1 Гость просматривают эту тему.
  • 35 Ответов
  • 3928 Просмотров
*

john.deff

  • Захожу иногда
  • 115
  • 0 / 0
что подразумевается под "Роутер не работает"? фатальная ошибка? или не получает управление?
ошибок не выдаёт, просто не переходит на страницу
site.ru/index.php?view=object_list&id_category=kakaya-to-kategoryya

а вот если раскомментировать строку:
if( isset($query['id_category']) ){$segments[] = $query['id_category']; unset($query['id_category']); }
Код
function AbreadBuildRoute( &$query )
{
    $segments = array();
    if( isset($query['view']) ){       unset($query['view']); }
    if( isset($query['task']) ){       $segments[] = $query['task'];        unset($query['task']); }
    if( isset($query['id_category']) ){$segments[] = $query['id_category']; unset($query['id_category']); }
    if( isset($query['id']) ){         $segments[] = $query['id'];          unset($query['id']); }
    if( isset($query['limitstart']) ){ unset($query['limitstart']); }

    //echo "<pre>"; print_r($segments); echo "</pre>";
    return $segments;

}
function AbreadParseRoute( $segments )
{
    $vars  = array();
    $count = count($segments);
    $menu  = JMenu::getInstance('site')->getActive();
    $view  = isset($menu->query['view'])? $menu->query['view'] : '';

    if( $view === 'object_list' && $count == 1 ){
        $vars['view'] = 'object_view';
        //$vars['id_category'] = $segments[0];
        $vars['id'] = $segments[0];
        return $vars;
        //echo "<pre>"; print_r($vars); echo "</pre>";
    }

}
то выходит ошибка:

Warning: array_merge(): Argument #2 is not an array in site.ru/libraries/cms/router/router.php on line 350
Fatal error: Unsupported operand types in site.ru/libraries/cms/router/router.php on line 234

ошибка-то понятна, но вот как её отловить, не понятно...
ведь посмотреть что в массиве невозможно!
« Последнее редактирование: 25.05.2016, 09:55:19 от john.deff »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
ошибка-то понятна, но вот как её отловить, не понятно...
Мне кажется, что вам непонятна ошибка, поскольку отловить как раз можно - известны все данные: функция, файл, строка... В данном случае ваша функция AbreadParseRoute() ничего не возвращает, отсюда и ошибка.
ведь посмотреть что в массиве невозможно!
Сделайте
Код: php-brief
exit();
Не будь паразитом, сделай что-нибудь самостоятельно!
*

john.deff

  • Захожу иногда
  • 115
  • 0 / 0
Мне кажется, что вам непонятна ошибка, поскольку отловить как раз можно - известны все данные: функция, файл, строка... В данном случае ваша функция AbreadParseRoute() ничего не возвращает, отсюда и ошибка.Сделайте
Код: php-brief
exit();

как этим пользоваться?
покажите примерами! компонент написал проблем нет, но не могу совладать с роутингом!
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
как этим пользоваться?
Так и пользоваться: вызывайте ее после prin_r(), чтобы прервать работу скрипта.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

john.deff

  • Захожу иногда
  • 115
  • 0 / 0
Так и пользоваться: вызывайте ее после prin_r(), чтобы прервать работу скрипта.

если в роутер ставить exit(); то выводятся кракозябры и даже главная страница падает!
ссылки вывожу через модуль!
как реально сделать отладку методов роутера? покажите на примере
« Последнее редактирование: 25.05.2016, 15:26:15 от john.deff »
*

john.deff

  • Захожу иногда
  • 115
  • 0 / 0
 ^-^ Ура! разобрался! мой код с комментариями и возможностью просмотра данных в массивах

Надеюсь кому нибудь будет полезно! всем спасибо! *DRINK*
код файна "router.php" который должен лежать в корне Вашего компонента
Код: php
<? defined('_JEXEC') or die;

function AbreadBuildRoute( &$query )
{
    $segments = array();
    if( isset($query['view']) ){       unset($query['view']);}
    if( isset($query['task']) ){       $segments[] = $query['task'];        unset($query['task']); }
    if( isset($query['id_category']) ){$segments[] = $query['id_category']; unset($query['id_category']); }
    if( isset($query['id']) ){         $segments[] = $query['id'];          unset($query['id']); }
    if( isset($query['limitstart']) ){ unset($query['limitstart']); }
    return $segments;
}

function AbreadParseRoute( $segments )
{
    $vars  = array();
    $count = count($segments);
    $menu  = JMenu::getInstance('site')->getActive();
    $view  = isset($menu->query['view'])? $menu->query['view'] : '';

    //echo "<pre>"; print_r($count); echo "</pre>";
    //echo "<pre>"; print_r($menu); echo "</pre>";
    //echo "<pre>"; print_r($view); echo "</pre>";
    //echo "<pre>"; print_r($segments); echo "</pre>";

    # Этот блок орабатывает ссылки, типа:
    # index.php?option=com_macomp&view=home&Itemid=106
    # index.php?option=com_macomp&view=object_list&id_category=moya-kategoriya&Itemid=106
    # Главная страница где модуль отображает список ссылок на категории
    # это вид нашего компонента "MycompViewHome"
    if( $view === 'home' && $count == 1){// && $count == 1
        $vars['view'] = 'object_list';
        # так как нам надо отображать только alias категории без id,
        # то убираем из строки ":", так как Joomla сама автоматически проставляет это двоеточие ":"
        $vars['id_category'] = str_replace( ':', '-', $segments[0] );

        //echo "<hr />1<pre>"; print_r($view); echo "</pre>";
        //echo "<pre>"; print_r($vars); echo "</pre>";
        return $vars;
    }

    # Этот блок орабатывает ссылки, типа:
    # index.php?option=com_macomp&view=object_view&id_category=moya-kategoriya&id=29:moya-statya&Itemid=106
    # Так как эта страница выводит конечный объект в категории, то
    # в массиве у нас первей идет имя категории, второй id статьи и имя статьи (alias)
    if( $view === 'home' && $count == 2 ){// && $count == 2
        $vars['view'] = 'object_view';
        # так как нам надо отображать только alias категории без id,
        # то убираем из строки ":", так как Joomla сама автоматически проставляет это двоеточие ":"
        $vars['id_category'] = str_replace( ':', '-', $segments[0] );
        # Здесь отдаём: 29:moya-statya
        $vars['id'] = $segments[1];

        //echo "<hr />2<pre>"; print_r($view); echo "</pre>";
        //echo "<pre>"; print_r($vars); echo "</pre>";
        return $vars;
    }
}

Прошу модератора перевести тему в статус: РЕШЕНО
« Последнее редактирование: 25.05.2016, 17:25:36 от john.deff »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться