Eugen Nichikov


Eugen Nichikov

Партнер-разработчик: https://www.webasyst.ru/store/developer/972539/ Партнер-разработчик

  • Eugen Nichikov Eugen Nichikov 25 октября 2021 12:30 #

    Согласен про "понимание", но хуки, имхо должны вызываться отдельно для каждого действия.

    Либо должен быть инструмент, который в явном виде даст возможность вызвать один хук вместо другого. И тут тоже важно, чтобы у админа магазина было "понимание".

    Категорически против вызова order_action.pay вместо order_action.tipa-oplachen как поведение по умолчанию.

    P.S. Для себя взял за практику, что если плагин делает что-то по определённому действию, в настройки такого плагина выношу GROUPBOX с выбором нескольких действий.

    в ответ на В кастомных действиях не срабатывают хуки из настройки "Поведение"

  • Eugen Nichikov Eugen Nichikov 4 августа 2021 12:27 #

    Для работы с заказами используются коллекции. В них есть 3 удобных хука:

    Но вот автокомплит не использует коллекций ¯\_(ツ)_/¯

    Думаю, что правильным решением было бы не добавление нового хука, а интеграция коллекций в автокомплит.

    Вроде обсуждалась такая доработка с кем-то из WA. Но, увы, не помню с кем и где.

    в ответ на Хук в поиске заказов

  • Eugen Nichikov Eugen Nichikov 2 августа 2021 22:36 #

    1) Коллекции

    Да, активно пользуюсь как коллекциями (1), так и действиями с ними (2)

    Не совсем относится к коллекциям, но к разделу товаров: в табличном режиме отдельные колонки (3) или дополняю существующие (4) 

    в режиме эскизов обычно иконками ограничиваюсь.



    Было бы удобно, если бы пункты можно было бы сортировать перетаскиванием, и сортировка бы сохранялась для каждого пользователя отдельно.

    в ответ на Использование коллекций товаров в плагинах для Shop-Script

  • Eugen Nichikov Eugen Nichikov 28 июня 2021 17:32 #
  • Eugen Nichikov Eugen Nichikov 24 июня 2021 08:49 #

    Время в секундах задаётся. Эта опция устанавливает значение CURLOPT_TIMEOUT при запросе.

    Поэтому вероятно, что дробное значение обрезается до 0, а это вовсе отключает ограничение.

    в ответ на не работает настройка "Время ожидания ответа от плагинов доставки"?

  • Eugen Nichikov Eugen Nichikov 24 июня 2021 07:32 #

    Что-то, коллеги, вы ночью решили поспорить о шкуре неубитого медведя. Пока никакой вариант не реализован.

    Но почему должен быть только один правильный?

    Сейчас тоже можно поставить "неадекватную цену" на всё тот же "снег" (да что к нему приколупались?!) в 49 999. Так делают? Так покупают?

    Если конечный клиент видит цену и понимает, как она будет меняться со временем, он сам сможет принять решение о покупке того или иного плагина. А ценовая политика обновлений может стать дополнительным инструментом в конкурентной борьбе аналогов.

    Также недурно было бы вывести публично лог изменения цены/политики обновлений. Но это уже другая история.

    в ответ на Фреймворк Webasyst 2.2.0 и «Фото» для Webasyst 2

  • Eugen Nichikov Eugen Nichikov 23 июня 2021 12:00 #

    Плата за конкретные обновления может выглядеть странной

    А кому-то покажется странным платить за месяц подписки без обновлений :)

    Но, имхо, больше различных вариантов монетизации - лучше. Вероятно и разработчики и их клиенты в конечном итоге нашли бы баланс.

    Например, опции, различные комбинации которых, позволили настроить ценовую политику по своему усмотрению:

    1) выбор что будет с продуктом без подписки: будет отключён, ограничена функциональность или просто нельзя обновиться?

    2) срок подписки: месяц, год или произвольный (по сути плата за отдельные обновления)?

    Лично мне бы подошёл вариант с отсутствием обновлений и подпиской на год (ещё и с дисконтом на своевременное продление), либо с платой за отдельные обновления, которые я бы всё-равно не делал чаще. В таком случае я могу строить хоть какие-то прогнозы относительно затраченного на разработку времени.

    Но всё сводится к тому, что Webasyst "должны" придумать "идеальный" вариант, вместо того, чтобы дать возможность экспериментировать уже нам.

    в ответ на Фреймворк Webasyst 2.2.0 и «Фото» для Webasyst 2

  • Eugen Nichikov Eugen Nichikov 21 июня 2021 12:34 #

    Вот есть же вменяемый пример обновлений ШС: покупка возможности обновляться в течение года.

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

    И добавить в Инсталлере галочку "не учитывать в счётчике обновления продуктов с истёкшей лицензией".

    в ответ на Фреймворк Webasyst 2.2.0 и «Фото» для Webasyst 2

  • Eugen Nichikov Eugen Nichikov 21 июня 2021 12:20 #

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

    А откуда таким появиться, если нет смысла пилить плагины, которым модель подписки дала бы хороший результат?

    По опыту своего последнего крупного обновления получил кучу негатива от тех, кто обновился бесплатно, а вот у тех, кто за эту разработку по сути заплатил (последующие новые продажи) всё было в порядке.

    И вот что действительно логично: зачем что-то менять тогда в плагине, если всё работает?

    в ответ на Фреймворк Webasyst 2.2.0 и «Фото» для Webasyst 2

  • Eugen Nichikov Eugen Nichikov 21 июня 2021 11:59 #

    это будет иметь обратный эффект

    Логика сомнительная. Что мешает сейчас написать приложение "Жёлтый снег" и требовать подписку ¯\_(ツ)_/¯? Никто ж почему-то не сделал так.

    С одной стороны дали возможность не плодить сотни приложений, а подписываться на события прямо из плагинов куда-угодно, а с другой - нет, пилите приложения.

    Модель подписок применима и хорошо работает для сложных решений

    Да и много ли приложений действительно можно назвать "сложным решением", которое достойно быть приложением?

    в ответ на Фреймворк Webasyst 2.2.0 и «Фото» для Webasyst 2

  • Eugen Nichikov Eugen Nichikov 3 июня 2021 09:35 #

    FYI: порядок иконок можно поменять перетянув ненужные в конец списка.

    Спойлер "ещё" появляется в зависимости от ширины экрана (я иногда замечал баги с ним, но в основном вроде работает)

    в ответ на Возможность скрывать иконки-ссылки на определенные установленные приложения

  • Eugen Nichikov Eugen Nichikov 19 мая 2021 15:05 #

    а мой друг сервер уронил...
    он, что, такой крутой хакер? нет, он мудак, он его на пол уронил

    в ответ на shop_category left_key и right_key. Подскажите самый легкий способ выставить их.

  • Eugen Nichikov Eugen Nichikov 14 мая 2021 09:25 #

    Можно.

    Но стоит понимать, что метод payment() вызывается каждый раз, когда покупатель переходит на страницу /success или на страницу заказа в личном кабинете (для заказов, которые можно оплатить, ессно).

    Поэтому, если API платёжной системы предусматривает только сервер-сервер запросы, а я правильно понял суть проблемы, возможно, всё-таки стоит сделать форму, которая будет отправлять данные в сам магазин по ссылке

    $this->getRelayUrl()

    Пример бы привёл, но он ещё не опубликован)

    в ответ на Плагин оплаты без html формы?

  • Eugen Nichikov Eugen Nichikov 12 февраля 2021 11:33 #

    Немного абстрагируясь нужна возможность штучно запретить просматривать И/ИЛИ редактировать отдельные поля.

    Кому-то надо, чтобы менеджеры не видели закуп.

    Кому-то надо, чтобы редактировали контент, а не цены.

    Кому-то надо, чтобы цены редактировали, а остатки выгружаются из 1С.

    Кому-то надо, чтобы и цены, и остатки только из 1С обновлялись, но при этом в админке они тоже отображаются.

    в ответ на Задачи, которые вы решаете с помощью плагинов в редакторе товара Shop-Script

  • Eugen Nichikov Eugen Nichikov 10 февраля 2021 17:51 #

    В основном добавляю разные дополнительные поля на разных вкладках, но об этом писали.

    Вот несколько неочевидные примеры:

    1) опция для удаления превью вне зависимости от того, какая вкладка выбрана сейчас

    2) блокировка различных полей (по разным причинам, но самая очевидная - права доступа, но далеко не всегда!)

    Обе задачи приходится решать обходными путями через JS.

    в ответ на Задачи, которые вы решаете с помощью плагинов в редакторе товара Shop-Script

  • Eugen Nichikov Eugen Nichikov 4 ноября 2020 21:50 #

    ¯\_(ツ)_/¯

    Чем возможность настраивать - "не масштабируемо"?

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

    Но теоретически пользователь может подменить обработчик действия "В обработку", и тогда оно тоже перестанет работать.

    в ответ на Хук order_action.process не передает данные в плагины

  • Eugen Nichikov Eugen Nichikov 4 ноября 2020 21:13 #

    Можно оставить только

    'order_action.*'        => 'orderActionProcess',

    Потом не забыть почистить кэш!

    А сам метод уже выглядит так

        public function orderActionHandler($data, $event_id = null)
        {
            if(!empty($data) && !empty($data['action_id'])) {
                $event_id = $data['action_id'];
            }
    
            if(empty($data['order_id']) || !$event_id) {
                return;
            }
    
            if(in_array($event_id, [ 'process', 'nalozhennyy-platezh'])) {
                // обработка
            }
        }

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

    в ответ на Хук order_action.process не передает данные в плагины

  • Eugen Nichikov Eugen Nichikov 1 октября 2020 10:40 #

    в ответ на Регулярка

  • Eugen Nichikov Eugen Nichikov 26 августа 2020 09:00 #

    P.S.

    потихоньку и начинаю вникать

    Начинать вникать лучше в новой теме на форуме, а не поднимать темы прошлого десятилетия ;)

    в ответ на Не запускается waCliController на сервере.

  • Eugen Nichikov Eugen Nichikov 26 августа 2020 08:59 #

    Плагин писал я) Да, это отладочная информация по импорту сотни товаров. Номер сотни, время и потребляемая память.

    в ответ на Не запускается waCliController на сервере.

  • Eugen Nichikov Eugen Nichikov 21 августа 2020 10:10 #
  • Eugen Nichikov Eugen Nichikov 3 августа 2020 16:51 #


    {$items = $wa->shop->cart->items()}

    в ответ на API корзины Shop Script

  • Eugen Nichikov Eugen Nichikov 15 июля 2020 17:25 #

    $view = wa()->getView();
    $wa = new waViewHelper($view);
    $test = $wa->block("some_block", ['item' => 'some_param']);

    в ответ на Как вызвать "блок сайта" в плагине для приложения "Магазин"?

  • Eugen Nichikov Eugen Nichikov 9 июля 2020 19:20 #

    странный подход к вырезанию пробелов...

    Внутри блока всё завернуть в {strip} ... {/strip} и всё

    в ответ на Использование метода плагина "Магазин" в шаблоне приложения "Рассылки"

  • Eugen Nichikov Eugen Nichikov 3 июля 2020 12:05 #

    Файл routing.php лежит в папке lib/config соответствующего плагина или приложения (там же, где и plugin.php/app.php). Вот есть более детальная статья по этой теме 

    https://developers.webasyst.ru/docs/cookbook/basics/routing/ (фронтенд)

    В бекенде немного по-другому

    https://developers.webasyst.ru/docs/cookbook/backend-routing/

    в ответ на AJAX Frontend на примере доков

  • Eugen Nichikov Eugen Nichikov 3 июля 2020 11:34 #

    Блин, пропустил, что в приложении...

    plugin.php => app.php, 

    {$wa->getUrl('myapp/frontend/ajax', ['plugin' => 'myplugin'])}

    а в остальном только классы правильно назвать.

    в ответ на AJAX Frontend на примере доков

  • Eugen Nichikov Eugen Nichikov 3 июля 2020 11:30 #

    1) plugin.php:

    ...
    'frontend' => true,
    ...

    2) routing.php:

    <?php
    return [
      'myplugin/ajax' => 'frontend/ajax'
    ];

    3) shopMypluginPluginFrontendAjax.controller.php

    <?php
    
    class shopMypluginPluginFrontendAjaxController extends waJsonController {
    
      public function execute() {
        $this->response = 'It\'s alive!';
      }
    }

    4) js + Smarty

    $.get("{$wa->getUrl('shop/frontend/ajax', ['plugin' => 'myplugin'])}", function(r) {
      if(r.status == 'ok') {
        alert(r.data);
      } else {
        console.log(r.errors);
        alert('Some errors. See console');
      }
    }, 'json')

    Мож где-то опечатался, но в целом так.

    в ответ на AJAX Frontend на примере доков

  • Eugen Nichikov Eugen Nichikov 29 июня 2020 10:49 #

    Метод отрабатывает вот тут https://yadi.sk/i/cJDfqeNVXtCHVA но не отрабатывает потому, что там написано почему.

    Нужно в allowedCurrency() добавить доступные валюты.

    в ответ на waPayment переопределенный метод payment как-будто не отрабатывает