Всего 123 801 комментарий

Павел Романов
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
+3
Честно говоря, судя по вопросам — переездом вы проблемы не решите, ибо они не в платформе.
На MODX можно сделать все. Многое сделать сильно проще чем на других платформах. Вопрос квалификации и платежеспособности.
В вашем единственном объявлении, которое я здесь вижу — вы предлагаете 30 тыс. Это оплата всего 15-20 человеко-часов. Боюсь маловато для описанной вами торговой площадки.
Дима Касаткин
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:08
0
Переехать можно куда угодно. Но неплохо было бы понять, какие именно проблемы вы за три года так и не решили?
Артур Шевченко
03 февраля 2023, 18:05
0
Ну сделайте тоже самое в чанке письма.

{set nadbavka = ((($order.cost  - $order.cart_cost - $order.delivery_cost) * 100) / 100) | round}
Сергей Карпович
03 февраля 2023, 17:55
0
присутствует:
<input type="hidden" name="room[]" value="" data-afl-required="room"/>
Артур Шевченко
03 февраля 2023, 17:53
0
Предположу, что разметка неверная. Не вижу контрольного поля и атрибута data-afl-required
Сергей Карпович
03 февраля 2023, 17:47
0
если использую просто room:required — то все равно ошибка в консоли вылетает, как только валидатор по этому полю убираю — форма работатет
Сергей Карпович
03 февраля 2023, 17:34
0
Подскажите как правильно прописать проверку заполненности множественного поля checkbox?
Вот мое поле из формы:
<div class="pole pole-checkbox">
            <div class="pole-label">Тип помещения <span class="error_floor">[[+fi.error.room]]</span></div>
            <input type="hidden" name="room[]" value="" data-afl-required="room"/>
            <div class="pole-checkbox-item">
                <input id="room_1" type="radio" name="room[]" value="Квартира" [[!+fi.room:FormItIsChecked=`Квартира`]] >
                <label for="room_1">Квартира</label>
            </div>
            <div class="pole-checkbox-item">
                <input id="room_2" type="radio" name="room[]" value="Частный дом" [[!+fi.room:FormItIsChecked=`Частный дом`]]>
                <label for="room_2">Частный дом</label>
            </div>
            <div class="pole-checkbox-item">
                <input id="room_3" type="radio" name="room[]" value="Гостиница" [[!+fi.room:FormItIsChecked=`Гостиница`]]>
                <label for="room_3">Гостиница</label>
            </div>
            <div class="pole-checkbox-item">
                <input id="room_4" type="radio" name="room[]" value="Коммерческое помещение" [[!+fi.room:FormItIsChecked=`Коммерческое помещение`]]>
                <label for="room_4">Коммерческое помещение</label>
            </div>
        </div>
в стиппете указываю валидатор:
'validate' => 'room:minValue=^1^',
'room.vTextMinValue' => 'Выберите значение.'
На выходе валидация не работает, при отправке формы ошибки в консоли
Alexey
03 февраля 2023, 17:20
0
Привет!

Я не разбирался в сессиях компонента, если честно. Но у mSync есть событие mSyncAfterImport, по которому принимается массив выгруженных товаров: новых и обновленных. На мой взгляд, проще написать плагин на это событие, в котором будут прилетать выгруженные товары. И потом их сравнить с существующими на сайте.

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

if ($modx->event->name == 'mSyncAfterImport') {
    $good_ids = $importResources['product']['updated'];
    $good_ids = array_unique(array_merge($good_ids, $importResources['product']['created']));
    $query = $modx->newQuery('modResource');
    $query->command('update');
    $query->where(array('class_key' => 'msProduct', 'published' => 0, 'id:IN' => $good_ids));
    $query->set(array(
        'published' => 1
    ));
    $query->prepare();
    $query->stmt->execute(); 
    $modx->cacheManager->refresh();
}

Чутка доработать его и всё норм будет)
Артур Шевченко
03 февраля 2023, 16:30
0
Да, там ещё кое-что надо изменить. После
$.post(config['connectorUrl'], params, function (response) {
вставить
if(response.page != response.pages){
            $(config['more']).find('button').attr('disabled', false);
        }else{
            $(config['more']).find('button').attr('disabled', true);
        }
И закомментировать или удалить
if (config['mode'] == 'button') {
                    if (response['pages'] == response['page']) {
                        $(config['more']).hide();
                    }
                    else {
                        $(config['more']).show();
                    }
                }
kudesia
03 февраля 2023, 15:40
0
и вот

joxi.ru/1A5qe74uwwPg9A

из поля не убрались лишние

preg_replace("/[^0-9\/+]/"
или
preg_replace("/[^0-9+]/"

может надо?
Константин Ильин
03 февраля 2023, 14:06
0
а, у вас с другого сайта берется все… понял. Я то полагал, что контекст создан в одной и той же админке и к тому же «сайту» обращаетесь, только домены разные.
Тогда Вам выше подсказали, или гугл. Тут даже дело не в модх.