Fly
В веб-телеграме не видно лайков :( , только в мобильной апке
Fly
на рабочем компе десктоп телеграм сапортом удаляется как вредоностное по ))
Alexey
это их надо удалить, как деструктивный фактор)
Axenia
Grinyaha (3155.51) увеличил карму dvakotaby (831.74)
Konstantin
Подскажите, пожалуйста, есть мануал, как сниппет или плагин вообще полностью в файлы вынести? И можно ли к базе не привязывать?
Konstantin
Я тут чёто подумал, что если всё в файлы выносить, то и этот самопис тоже надо вынести в плагины) Сниппет тупо функцией в контроллере , получается, сделать?
Alexey
если ты их полностью вынесешь в файлы, то это будут не сниппеты/плагины, а куски кода, которые, кстати, еще и объект $modx получать не будут, если ты им, конечно, не передашь)) А так - стандартным инклудом
Pathologic
пакет с пакетами
Axenia
serious_t91 (1359.57) увеличил карму Pathologic93 (8361.84)
Aliaksandr
Паеет с пакетами это уже packagist
Aliaksandr
А нет в коммерсе метода чтоб перегрузить корзину сразу: все выкинуть и по новой вкинуть? Надо самому мутить?
Pathologic
Зачем
Alexey
и?
Andrey
Ну и var_dump($modx)
Andrey
Другое дело, что сама cms не отреагирует на runSnippet этого кода.
Alexey
ну а я о чем? И плагин по событию не вызовет. Так что это просто куски кода. Которые могут работать, но это не будет сниппетами/плагинами в понимании MODX
Andrey
Хотя пижжу. У Димы же было решение - пример пакета, где в сервис-провайдере это дело всё регистировалось. Но там прям другой подход.
Aliaksandr
Зачем
Для всяких случаев - гонять товары через плагин цены и т.п. авторизовался - обнаружилась скидочная карта - перегруз, вышел , остался без карты - перегруз, применил купон - перегруз и т.п.
Aliaksandr
Еще в 2018 написано
Aliaksandr
https://github.com/webber12/evocms-user/blob/master/plugins/EvoUser.php
Aliaksandr
Пример плагина в пакете мимо админки и базы данных
Pathologic
тебе нужно на два события OnWebPageInit и OnCartChanged приделать
Aliaksandr
нужно перегонять, потому что там могут быть разные условия типа "купон применятся только к товару не на акции" или "скидочная карта применяется только на определенные группы товаров". единственный прямой путь - это полностью перегнать корзину по-новой и плагин на расчет цены и прочей мути при добавлении
Aliaksandr
вот так я пока сделал
Aliaksandr
ну и где надо по кодам на выход
Aliaksandr
на вход
Aliaksandr
ну и т.п.
Aliaksandr
неплохо бы это встроить в сам коммерс а не тягать туда сюда
Pathologic
public function OnWebPageInit() { $this->OnCartChanged(); } public function OnOrderRawDataChanged() { $this->OnCartChanged(); } public function OnCartChanged() { $discount = ci()->discounts->getDiscount(); $cart = ci()->carts->getCart('products'); $items = $discount->apply($cart->getItems()); $cart->setItems($items); }
Pathologic
я вот так делал (:
Pathologic
там всякие скидки которые зависят от времени и еще от всякого
Pathologic
все нужное в мете хранится и там меняется
Aliaksandr
хз, мне под мои задачи больше мой вариант подходит - потому что хер угадаешь к какому товару какая скидка может примениться и в каком размере. проще по новой перегнать и на плагине OnBeforeCartItemAdding по каждому товару эти скидки поприменять
Aliaksandr
опять же когда есть целый набор скидок да еще и варианты товаров
Pathologic
это лишняя работа
Pathologic
проще оригинальную цену сохранять и обновлять текущую цену
Pathologic
interface DiscountInterface { public function enable() : bool; public function getValue() : int; public function getDescription() : array; public function apply(array $items) : array; }
Pathologic
каждая скидка в таком виде
Pathologic
и специальный класс определяет какую можно применить
Aliaksandr
так они у меня все разные эти скидки, в том и беда)
Pathologic
но действия по сути одинаковые - определить, можно ли применить скидку, и применить ее к товарам
Aliaksandr
так суть понятно что одна - взять товар и посчитать его новую цену с учетом скидки. просто вариант разный - ты берешь товар в корзине пересчитываешь ему параметры и сохраняешь назад. а я удаляю и добавляю его заново с учетом всех нужных мне параметров
Pathologic
ну ты при пересчете делаешь запросы на каждый товар
Pathologic
а я уже готовую корзину пересчитываю
Aliaksandr
просто у меня попутно с добавлением еще и другие действия происходят - типа "взять ценник и артикул нужного варианта товара" и т.п., там же и скидка считается сразу
Pathologic
не, я такое стараюсь разделять
Pathologic
выбор варианта отдельно, скидки отдельно
Aliaksandr
зачем, мне надо положить в корзину конкретный вариант товара (например банку 300мл определенного артикула по определенной цене) - я ее так и кладу
Pathologic
и тут начинает иметь значение порядок плагинов ((:
Aliaksandr
Тем более ))
Pathologic
для этого нужно получить название товара и цену, потом еще дополнительно получить варианты и выбрать нужный
Pathologic
зачем это делать каждый раз
Pathologic
но вообще с учетом того что можно делать свои корзины и хранилища, всякое можно придумать для красоты (:
Pathologic
вот что в коммерсе не доделано, так это редактирование заказов
Pathologic
но там и не понятно как лучше сделать
Alexander
Sasha
проще оригинальную цену сохранять и обновлять текущую цену
+ дельно. Чтобы тунда-сюнда каждый раз за ней не лазить, и все варианты скидок тоже
Axenia
sashabeep (1267.47) увеличил карму Pathologic93 (8397.44)
Aliaksandr
Этот вариант не подходит, когда к разным товарам может примениться разная скидка, насколько я понял
Pathologic
подходит
Sasha
Этот вариант не подходит, когда к разным товарам может примениться разная скидка, насколько я понял
Можно в мету засунуть и конструктор скидки, например. потом всё равно всю корзину проходить
Sasha
хотя тут уж каждому свое. Хранение оригинальной цены мне прям хорошо помогло в одном случае
Sasha
даж не в одном уже
Aliaksandr
Причем тут хранение цены. Я про принцип работы: я прохожу в цикле по товарам и для каждого применяю подходящую скидку. А в приведенном выше примере проходится сначала в цикле по скидкам, а потом какой-то подходящий класс (один) применяется уже ко всем товарам корзины в цикле
Pathologic
можно и несколько применять
Pathologic
просто для сайта, на котором делал, только одна скидка
Aliaksandr
Да понятно что можно. Если засунуть мою логику в класс скидки :)
Aliaksandr
а что, в списке модулей больше не показываются модули с русскими названиями?
Aliaksandr
или там двоеточие мешает и надо срочно переходить на твилл?))
Аляксандр
А у тебя модуль в файле?