Можно ли плагином изменять правила маршрутизации приложения?

Есть потребность для правильной работы плагина изменить правила маршрутизации добавления в корзину приложения Shop-Script.

Можно ли это сделать? Как перезаписать правила через плагин или как установить приоритет правилам из плагина, что бы не было конфликтов?

С точки зрения размещения такого плагина в магазине - это будет пропущено к публикации?

2 ответа

  • 1

    Такой плагин не будет опубликован никогда, если вы на секундочку задумаетесь, что кроме вашего плагина, могут быть еще установлены и другие плагины, то даже поймёте почему...

    • +1

      А если клиент намеренно правит ссылки на корзину в шаблоне? Допустим этот плагин ему жизненно необходим т.к. он полностью меняет направление деятельности клиента? Таких плагинов по два штуки не ставится т.к. это совершенно бессмысленно. Вы же не запрещаете менять шаблоны.

    • +1

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

      • +1
        Алексей Алексей Webasyst 26 сентября 2015 05:55 #

        Это будет очень недальновидное решение, при котором N-ное количество плагинов, использующих стандартную маршрутизацию, будут работать некорректно. Unlisted это не бездна, куда будут безоговорочно отправляться всё сомнительно работающее и ломающее стандартный функционал продукты. С большим предупреждением "Вы ставите unlisted, это может привести к неработоспособности магазина". Не говоря уже о том, что это несколько затруднит диагностику работоспособности магазина при каких-то запросах в поддержку, не только нам, но и разработчикам других плагинов.

  • 1

    Сергей, приведу пример кода из моего еще неопубликованного плагина. Возможно это поможет в решении задачи.

    Создается класс хелпера, в нем прописывается что-то типа:


    public static function getCartAddUrl()
    {
        return wa()->getRouteUrl('shop/frontend') . 'opt/cartadd/';
    }
    
    public static function getCartUrl()
    {
        return wa()->getRouteUrl('shop/frontend') . 'opt/cart/';
    }
    
    public static function getCheckoutUrl()
    {
        return wa()->getRouteUrl('shop/frontend') . 'opt/checkout';
    }
    
    public static function getCartTotal()
    {
        $cart = new shopOptPluginCart();
        return $cart->total();
    }

    Потом пишется примерно вот такая инструкция.

    http://docs.itfrogs.ru/webasyst/plugins/shopscript...

    http://docs.itfrogs.ru/webasyst/plugins/shopscript...

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

    • +1

      У меня такие конструкции. Я их часто использую, что бы заменить путь к экшену добавления в корзину. достаточно в шаблоне просто вывести {$wa->getUrl('...')}

      Хотелось бы опубликоваться в магазине, где будет работать основной функционал с инструкцией по расширению.

      Дело в том что не хватает хука cart_update. Как еще можно проверить совпадение добавляемого товара в корзине?

      Можно принять item.id в ответе добавляемого товара и отправить еще один запрос в контроллер плагина, где проверить по нужным параметрам товары в корзине. Но такой вариант тоже могут не пропустить.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите