gruzoveek

gruzoveek

Был в сети 13 октября 2021, 18:50
Заказы принимаю
Прямых решений что-то на ум не приходит, но можно сделать на событие ввода ajax-запрос, чтоб он передал введенное значение и получил ответ, совпадает оно с параметром сниппета или нет. Если параметр сниппета генерируется каждый раз заново, то его можно запоминать в сессионную переменную. Как-то так.
видимо структура $res не так проста чтобы делать вложенные циклы foreach без проверки на тип переменной. Попробуйте вставить логирование в начале каждого цикла, чтоб увидеть который цикл падает и с какими аргументами.
полей username и fullname в заказе нет, как я помню. fullname это поле таблицы профиля а username поле таблицы юзера. проверьте отдельно скрипт создания пользователя, а заказу достаточно скормить user_id от него.
Приветствую!
Я в прошлом году делал подобное. Я написал сниппет, который выставил на страницу, которая открывается после авторизации. В том сниппете сделал проверку на то в какой группе состоит наш юзер, и в зависимости от этого производил редирект на ту или иную страницу.
Тебе проще написать свой модификатор. Это короче берешь пишешь обычный сниппет, назовешь его replace. В его коде тебе доступны переменные $input (там будет значение твоего [[+pagetitle]]) и $options (там будет то что ты напишешь внутри кавычек после модификатора). Ну и дальше разбираешь свое условие и на php меняешь что тебе надо. И возвращаешь то значение которое надо подставить вместо исходного.
Судя по описанию это немного не то, там админ формирует корзина и затем юзер сам должен пройти по ссылке на нее и заказать. Мне же надо возможность сформировать и отправить заказ на любого юзера.
В общем принцип такой:
шаг 1. создаю каталог с товарами, товары в нем — это упаковки, задаю им цены.
шаг 2. создаю дополнительные поля товара, как это делается — тут неоднократно писалось на сайте. поля такие: ID коробки и Кол-во данного товара на единицу упаковки, т.е. вместимость. У всех товаров, у которых предполагается упаковка, заполняю эти поля.
шаг 3. создается плагин на события
'msOnAddToCart': // получает $key и $cart
'msOnChangeInCart': // получает $key, $count и $cart
'msOnRemoveFromCart': // получает $key и $cart
в плагине получаю массив коробок из известного мне каталога.

Потом из переменной $cart методом get() получаю содержимое корзины $tmp = $cart->get();, пробегаю по товарам в цикле и там смотрю, каков id коробки и параметр вместимости товара и сколько этого товара в заказе, таким образом высчитываю сколько и каких коробок надо для такого количества товара.

Тут есть нюанс: если до этого момента коробок в заказе не было (например при событии msOnAddToCart) то нужно напрямую добавлять в заказ коробки методом $cart->add($box_id); а если коробка уже была в заказе, например при изменении количества товара в корзине (msOnChangeInCart и msOnRemoveFromCart) то тут уже работаем с $tmp, меняя только count для коробок, и по итогу перезаписываем корзину его содержимым: $cart->set($tmp);
в общем. решил так: добавил товарам поле ИД коробки и поле Количество в 1 ед. тары.
Потом сделал плагин на добавление товара в корзину, там идет перерасчет и добавление в корзину нужного количества тары. Если кому будет надо, могу расшифровать подробнее.
В общем, это возвращался уникальный код платежа Сбербанка, а не ид заказа. Я прописал в классе в реквест нужное поле, а в файле платежа его считывание для переменной переадресации, и все стало отображаться как надо.
в общем, переадресацию я наладил, я там в настройках неверный адрес сбербанка указал просто. но вот в чем беда, после оплаты идет редирект на корзину, но в адресной строке параметр msorder — не число, а длинный набор символов, msGetOrder естественно такой заказ не находит… В чем может быть причина?