Всего 125 335 комментариев

Андрей Шевяков
04 февраля 2023, 10:09
0
Добрый день!

В минишопе появилась возможность создавать заказы из под панели администратора.
Но немного не хватает тогда функционала.

Нажал «Создать заказ», выбрал товар, заполнил поля клиента и адреса. Выбрал способ доставки и оплаты.

Но как мне поставить стоимость Доставки? Поле не редактируется. Вес почему тоже не передался из товара в итоговый параметр.


Как правильно оформлять заказы из под админки?
Сергей Карпович
04 февраля 2023, 10:06
0
Валидация полей заработала. Все супер-пупер =)
Andrew
04 февраля 2023, 09:40
0
Сорри, вопрос снят, прописываем в единицу измерения например такую конструкцию — {'t_ch' | lexicon}, а в лексиконы — $_lang[«t_ch»] = «т/час» и т.д. соответственно языку перевода.
Andrew
04 февраля 2023, 09:26
0
Не хочу создавать новую тему, спрошу здесь.
А есть ли возможность перевода единиц измерения опций, например в английском контексте у опций выводится — км/ч, л, или об/мин — что совсем не комильфо.
Любовь
03 февраля 2023, 20:20
0
А всё, поняла вас. Тут 90% для минишопа компоненты. Всё тогда, вопрос снят.
Спасибо!
Любовь
03 февраля 2023, 20:17
0
modstore.pro/packages/payment-system
Вот тут много вариантов появилось. Разве тут нет подходящего?
Артур Шевченко
03 февраля 2023, 20:12
0
Собственно, если вы собираетесь делать сайт на Modx Revolution выбора у вас нет, во всяком случае если ничего сильно эксклюзивного не требуется, minishop2 это лучший выбор, а значит всё сказанное до этого актуально для вас.
Любовь
03 февраля 2023, 20:07
0
У меня ничего нет на сайте. Пока ищу варианты.
Артур Шевченко
03 февраля 2023, 19:50
+1
Если у вас в качестве основы интернет-магазина используется minishop2, то все компоненты оплаты для него умеют генерировать ссылку на оплату, но проблема в том, что отдельно от создания заказа из коробки её сгенерировать нельзя и компонент для оплаты тут не причём.
Павел Романов
03 февраля 2023, 19:47
0
Вы не пишете ничего в поле, потому что пропустили:
$user->set('username', $phone);

Полный код:
foreach ($modx->getIterator('modUser') as $user) {
    $profile = $user->getOne('Profile');
    $arr = array('(', ')', '-');
    $phone = str_replace($arr, '', $profile->get('phone'));
    $user->set('username', $phone);
    $user->save();
}
kudesia
03 февраля 2023, 19:44
0
Так-то работает
joxi.ru/5mdlpP8CJJ705m
<?php
$phones = array(
   '+7(123)456-78-91'
   );
foreach($phones as $phone) {
   echo preg_replace("/[^0-9+]/", '', $phone);
}
А так нет
<?php
foreach ($modx->getIterator('modUser') as $user) {
    $profile = $user->getOne('Profile');
    $phone = preg_replace("/[^0-9+]/", '', $profile->get('phone'));
    $user->set('username', $phone);
    $user->save();
}
kudesia
03 февраля 2023, 19:33
0
<?php

foreach ($modx->getIterator('modUser') as $user) {
    $profile = $user->getOne('Profile');
    $arr = array('(', ')', '-');
    $phone = str_replace($arr, '', $profile->get('phone'));
    $user->save();
}
отчет
<pre>
SQL time: 0,7248 s
SQL queries: 3780
PHP time: 5,8171 s
Total time: 6,5420 s
Memory: 12 MB
</pre>
результат joxi.ru/823NelZCww7KYm

ничего не изменилось
Павел Романов
03 февраля 2023, 18:52
0
//....
$arr = array('(', ')', '-', '—', '–', ' ');
$phone = str_replace($arr, '', $profile->get('phone'));
//....
kudesia
03 февраля 2023, 18:47
0
Так надо убрать только скобки () и тире — между цифрами

+7 должно остаться
Разве не такое выражение для этого
/[^0-9+]/
?
Дима Касаткин
03 февраля 2023, 18:42
+1
Чуть не забыл, за пример интеграции @Иван Бочкарев респект конечно!
Дима Касаткин
03 февраля 2023, 18:41
+2
По их промо-сайту еле-еле можно разобрать что такое это enKod вообще, но кажется я смог:

Короче enKod это сервис работы с клиентской базой для сайтов и магазинов из двух частей:
1. Подписчики и рассылки
1.1 Функционал Email и Push/SMS сообщений (типа SendPulse и аналогов) для рассылок.
1.2 Ну и инструментарий для пополнения и сегментации баз, включая JS-трекер активности вроде Яндекс.Метрики

2. Виджеты для сайта
2.1 Всплывающие окна подпишись и получи нечто, для пополнения базы клиентов из п.1.1
2.2 Товарные рекомендации типа расстановка ссылок для блока «вам также может быть интересно» в корзине интернет-магазина или где-то ещё на сайте, видимо на основе данных, собираемых функционалом из п.1.2

P.S. Я там не работаю, просто сам недолюбливаю мутные лендинго-подобные сайты (как у enKod) где вместо подробностей вам предлагают записаться на демонстрацию к продажнику от которого наверняка потом придется телефон в реку выбрасывать чтобы не доставал ;-)

Так-то в кейсах у них вся инфа есть, но чтобы её добыть надо прям изучать их несколько… Прямо чувствуешь на этом сайте себя тунцом каким-то, который заглатывает наживку, маркетологи сказали бы что очень такой «цепкий сайтец» с хорошей грубиной просмотра… но мне от пребывания на таких как-то не по себе ¯\_(ツ)_/¯ Хоть сервис по итогу для своей ЦА интересный… но какие тарифы вам на сайте даже примерно не намекнут, запишитесь на демо… ага...
Павел Романов
03 февраля 2023, 18:26
0
Не знаю, выражение работает для всех вариантов:
Артур Шевченко
03 февраля 2023, 18:14
0
Понятно. Смысл в том, что пустое поле типа checkbox не передается на сервер, поэтому нужно создать другое поле типа hidden и проверять именно его, а чтобы значение в поле типа hidden менялось нужно в атрибуте data-afl-required указать имя проверяемого поля. Т.е. должно быть так
<div class="pole pole-checkbox">
            <div class="pole-label">Тип помещения <span class="error_floor">[[+fi.error.room]]</span></div>
            <input type="hidden" name="room-control" value=""/>
            <div class="pole-checkbox-item">
                <input id="room_1" type="radio" name="room[]" value="Квартира" data-afl-required="oom-control" [[!+fi.room:FormItIsChecked=`Квартира`]] >
                <label for="room_1">Квартира</label>
            </div>
            <div class="pole-checkbox-item">
                <input id="room_2" type="radio" name="room[]" value="Частный дом" data-afl-required="oom-control" [[!+fi.room:FormItIsChecked=`Частный дом`]]>
                <label for="room_2">Частный дом</label>
            </div>
            <div class="pole-checkbox-item">
                <input id="room_3" type="radio" name="room[]" value="Гостиница" data-afl-required="oom-control" [[!+fi.room:FormItIsChecked=`Гостиница`]]>
                <label for="room_3">Гостиница</label>
            </div>
            <div class="pole-checkbox-item">
                <input id="room_4" type="radio" name="room[]" value="Коммерческое помещение" data-afl-required="oom-control" [[!+fi.room:FormItIsChecked=`Коммерческое помещение`]]>
                <label for="room_4">Коммерческое помещение</label>
            </div>
        </div>
А в вызове
'validate' => 'room-control:minValue=^1^',
'room-control.vTextMinValue' => 'Выберите значение.'
Артур Шевченко
03 февраля 2023, 18:05
0
Ну сделайте тоже самое в чанке письма.

{set nadbavka = ((($order.cost  - $order.cart_cost - $order.delivery_cost) * 100) / 100) | round}