Всего 125 672 комментария

Артур Шевченко
08 декабря 2020, 13:20
0
Переписал. Теперь если нужно много полей пользователя, можно одним запросом получить массив и его как плейсхолдеры раскидать по странице.
Роман
08 декабря 2020, 13:12
0
Да, я уже понял. Спасибо.
Pavel Zarubin
08 декабря 2020, 13:01
0
Я уже не помню, с modx давненько не работаю, но скорее всего как и везде, пользователь содержится в запросе, т.е. modx и так делает каждый раз запрос на получение пользователя, а этот модификатор берет уже полученную модель, твой же скрипт мало того что делает дополнительные запросы, так еще и делает их ТРИ штуки) Т.е. на 600 одновременно зашедших пользователей уйдет 1800 запросов в БД, а учитывая что свой сниппет ты используешь наверное для каждого поля отдельным вызовом, то на каждый вызов сниппета делается по три запроса в бд, 20 полей надо получить, 60 запросов в бд ушло)))
Артур Шевченко
08 декабря 2020, 13:01
0
хотя бы кэширование к этому коду по времени добавить надо
Вот тут не понял, это как?
Артур Шевченко
08 декабря 2020, 12:43
0
Во-первых, до этой минуты мне не приходила в голову мысль, что можно сделать так
{24 | user: 'extended'}
Теперь чувствую себя идиотом))) НО следом пришла другая мысль, код выше не делает запрос в БД? Как тогда он работает?
Артур Шевченко
08 декабря 2020, 12:33
0
Ок, поправлю. По крайней мере постараюсь.
Pavel Zarubin
08 декабря 2020, 12:12
0
а что делать если у меня десяток полей в extended плюс данные в profile и в user
Как и подразумевалось самим MODX'ом запрашивать их отдельно))
Да, унификация это удобно, удобно когда ты в один и тот же инпут атрибут можешь запихнуть любые данные а твой скрипт уже сам разберется что ты запихнул, но как правило, что в жизни, что в программировании — чем более универсальный инструмент — тем более он бесполезен в применении.
Pavel Zarubin
08 декабря 2020, 12:03
0
В идеале вообще обычно через локальную базу — дубликант делают, т.е. зашел пользователь, проверяем его IP в локальной базе, если нет сопоставлений, создаем новую запись и в следующий раз его местоположение уже будет тянуться с локальной базы, это если просто

А если нужно совсем просто, то хотя бы кэширование к этому коду по времени добавить надо, и добавить проверки как по доступности DaData так и по времени ответа, а лучше вообще запрашивать отдельно отдельным Ajax запросом после того как у пользователя отрендерилась страница, чтобы это не влияло на скорость генерации страницы
Артур Шевченко
08 декабря 2020, 11:56
0
Отлично, что ты мне всё это пишешь. Твои замечания помогут мне исправить недочёты. Так что спасибо. Я полагаю в этом случае надо проверку добавить или как?
Артур Шевченко
08 декабря 2020, 11:53
0
Вы правы, ради одного юзернейма такой огород городить не стоит, его можно получить гораздо проще, а что делать если у меня десяток полей в extended плюс данные в profile и в user? И да, я перепишу, сделаю один запрос в БД.
Кефирка
08 декабря 2020, 11:12
0
Это слишком дорого, у меня нет 3 тыс на этот модуль. Нужен вариант бесплатный.
Михаил
08 декабря 2020, 11:11
0
Используй вот это и не заморачивайся
Михаил
08 декабря 2020, 11:09
0
сделать экспорт через msImportExport и сделать импорт через него же
Роман
08 декабря 2020, 10:20
0
[[!pdoPage?
    &element=`msProducts`
    &parents=`0`
    &where=`{"Data.price:>":1000}`
]]
[[!+page.nav]]
Иван Бочкарев
08 декабря 2020, 10:14
0
Он так всегда пишет. Даже ошибки орфографические, пунктуационные никогда не исправляет =(
Роман
08 декабря 2020, 10:12
0
Очень сумбурно написали. У вас что-то выводится или ничего нет? В настройках(ms2_product_extra_fields) добавили поле?
Наумов Алексей
08 декабря 2020, 09:50
0
Image+ попробуйте, вроде там есть alt
Иван Бочкарев
08 декабря 2020, 09:05
2
+1
Вариант, когда нужно предоставить возможность указать минимальную сумму для клиента в ClientConfig:

<?php
$cart_status = $order->ms2->cart->status();
$order_status = $order->get();
$min_price_order = $modx->getOption('min_price_order');

if ($modx->event->name == 'msOnSubmitOrder'){
    if ($cart_status['total_cost'] < $min_price_order && $order_status['delivery'] == 2) {
        $modx->event->output('Минимальная сумма заказа для выбранного способа доставки ' . $min_price_order . ' рублей!');
    } 
}