Pathologic
Aliaksandr
Andrey
Можно. Сниппеты на изменение вывода цен в зависимости от группы пользователя или другого параметра.
Плагин на изменение цены на событие "OnSHKgetProductPrice".
Вот пример. Немного хардкодовый и перегруженный, но какой нашел у себя.
$e = &$modx->Event;
$output = "";
if ($e->name == 'OnSHKgetProductPrice') {
$id = $_POST['shk-id'];//получаем id товара
/*Получаем значение параметра "Без скидки (bool)"*/
$nodiscounts_arr = $modx->getTemplateVar('nodiscounts','*',$id);//Получаем значение параметра, отвечающего за вывод фиксированной цены
$nodiscounts = $nodiscounts_arr['value'];
/*Получаем id бренда (int)*/
$brands_arr = [52,1094,3233];//Список возможных id для бренда
$parents = $modx->getParentIds($id);
foreach($brands_arr as $brand){
if (in_array($brand, $parents)) {
$brand_id = $brand;//Бренд
break;
}
}
$user_id = $modx->getLoginUserID();
$user_info_arr = $modx->getWebUserInfo($user_id);
$discount_arr = [52 => $user_info_arr['discount_centro'], 1094 => $user_info_arr['discount_kapro'], 3233 => $user_info_arr['discount_truper']];
$discount = $discount_arr[$brand_id];
if(isset($price)){
if((isset($discount) && $discount > 0 && $discount < 100) && ($nodiscounts != 1)){
$output = round($price * (1-$discount/100), 2);
}else{
$output = round($price, 2);
}
}
$e->output($output);
}
Спасибо!
Ghostery
Oleg
Evgeniy
h k
но авторизацию через соц сети делал по статье:
http://modx.im/blog/addons/2214.html
Aliaksandr
Aliaksandr
он же по идее те же поля username/password из $_POST и чекает для авторизации
Ilya
а есть вообще новости по Evo 2.0 ?
Ilya
а, ну вполне норм, да
Anonymous
https://github.com/evolution-cms/evolution/commits/2.x
Ну а вообще почти каждый день что-либо дополняется.
Ilya
а насколько он щас вообще юзабельный?
Ilya
на какой стадии? ну там, альфа бета и все вот это вот
Anonymous
Как знаю готовится к Альфе.
Позавчера был более юзабельный чем сегодня.
Anonymous
Сегодня там сломаны чанки, сниппеты, шаблоны, тв и плагины. А позавчера ещё работали 😊
Ilya
🤔
Anonymous
Это называется в активной разработке. Вот немного сломалось, но это нормально, это же не релиз.
Volodymyr
Вопрос по FormLister и prepare,
мне нужно в таблицу manager_shopkeeper после отправки формы добавить новый заказ,
но проблема в том что в письме нужно указать id созданного заказа.
если создавать заказ в prepareProcess то запись будет создана даже если пользователь получил
Данные успешно отправлены. Нет нужды отправлять их еще раз.
если создавать запись в afterPrepareProcess то письмо уже будет отправлено, и туда уже id мы никак не сможем отправить,
Есть еще вариант, в prepareProcess проверять $FormLister->checkSubmitLimit(); и $FormLister->checkSubmitProtection();
но есть шанс что в prepare checkSubmitLimit не пройдет, а плюс одна секунда и в самом класе уже проверка будет гуд.
Шанс очень очень маленький, но есть.
Найболее правильный вариант как я понимаю вручную отправлять почту на afterPrepareProcess.
Верно я понимаю логику или туплю
@Pathologic93 @Dmi3yy
Dmytro
Так глянь пример из евошоп там же номер заказа в почту уходит ;)
Pathologic
Dmytro
http://modx.im/blog/evoshop/5188.html
Pathologic
а еще лучше сделай свой контроллер
Anonymous
А разве "prepareProcess - после прохождения валидации"?
Volodymyr
Pathologic
можешь опять же отключить эти проверки и выполнить их вручную
Сергей
а зачем с ШК ставить submitLimit?
Volodymyr
ну скорее всего отключу, а если будут на спам жаловаться
то тогда буду думать что делать
Сергей
Сергей
Volodymyr
это да
Volodymyr
думал что можна сделать правильно средствами FormLister вот и спросил
Сергей
что-то не помню, чтобы спамщики в корзину товары добавляли))
Pathologic
лучше $FormLister->setValid(false);
Сергей
Pathologic
хотя нет
Pathologic
если заказова нет, то и форма не нужна
Pathologic
так что нужно и то и то
Сергей
Volodymyr
лучше $FormLister->setValid(false);
setValid чотко, могу ли я както из prepare заполнить
formData['messages'], поле private а метода setFormData я не вижу, не критично но интересно
Pathologic
а метод addMessage ты почему не видишь
Am
что-то не помню, чтобы спамщики в корзину товары добавляли))
В некоторых CMS есть целое направление "брошенных" корзин от спамеров. Когда регаются по чуть-чуть, смотрят-лазят, а потом начинают создавать заказы и в БД пишутся "брошенные" корзины засирая и БД и желание менеджеров работать. (%
Сергей
Am
Am
Или заSHITа
Aliaksandr
а я отправляю заказы через eForm и вообще не парюсь :) ))
Сергей
Aliaksandr
и пыха 5.6)
да ладно, она и на 7.2 работает нормально
Сергей
ну так там правили немножко
Aliaksandr
иногда пару массивов объявить приходится и то не всегда почему-то :)
Aliaksandr
проще написать !is_array() array() чем делать на препаре, когда нет 100% варианта как сделать правильно - такое мое мнение
Сергей
Aliaksandr
не знаю, никто мне не заказывал магазина даже с тремя формами заказа, тем более с 28 :)
Aliaksandr
если б кто-то дописал или контроллер или какой-нибудь prepare, чтоб это было точно правильно - можно было бы и пользоваться. А так видишь - то одно отключить, то второе включить, то "письмо все равно уйдет", то "письмо уже ушло" - и никто не скажет, как оно правильно
Aliaksandr
а еформ фиганул и нет вопросов :)
Сергей
Сергей
Aliaksandr
так то ж какие-то калькуляторы, я конкретно про связку с шопкипером для магазина :)
Aliaksandr
Aliaksandr
вот почитал выше и так и не понял все-таки как надо сделать, чтоб вот железобетонно 100% правильно работало
Pathologic
Pathologic
в целом-то нет проблемы в базу записать
Aliaksandr
требуется как обычно - отправить письмо с номером заказа и его составом я так понял
Pathologic
и свою логику всунуть тоже проблем ноль
Pathologic
на самом деле странно, что никто не выложил готового решения ((:
Aliaksandr
вот и я говорю - все что-то мутят-крутят, а как до дела доходит, так ничего ни у кого и нет ))
Aliaksandr
ладно ты, как видишь магазин - ставишь рево+минишоп, тебе простительно ))
Aliaksandr
но есть же тут много любителей и эво+шопкипер ))
Сергей
Pathologic
нет, не я, кто-то другой
Aliaksandr
вот такое было помню - http://modx.im/blog/questions/4888.html#comment40634
Aliaksandr
а потом началось
Aliaksandr
Только у вызов FormLister'а добавлял такие 2 параметра:
&submitLimit=`0`
&protectSubmit=`0`