Всего 123 810 комментариев

Артур Шевченко
23 июня 2024, 18:38
0
Примерно так
switch ($modx->event->name) {
    case 'OnDocFormSave':
        if ($resource->get('class_key') === 'msProduct' && $price = $resource->get('price')) {
            $q = $modx->newQuery('modTemplateVarResource');
            $q->where(['tmplvarid' => 1, 'contentid' => 1]); // получаем значения TV типа migx где записаны диапазоны
            $q->select('value');
            $ranges = $modx->getIterator('modTemplateVarResource', $q);
            if ($q->prepare() && $q->stmt->execute()) {
                $ranges = json_decode($q->stmt->fetch(PDO::FETCH_COLUMN), true);
                foreach ($ranges as $range) {
                    if ($range['min'] <= $price && $range['max'] > $price) { // проверяем входит ли цена в диапазон
                        $resource->set('range', "{$range['min']}-{$range['max']}"); // если да, то записываем диапазон в свойство товара созданное при помощи msAddFields
                        break;
                    }
                }
            }
        }
        break;
}
Дмитрий Вершинин
23 июня 2024, 17:35
0
Артур, а можешь выложить-показать этот плагин — «который при создании ресурса сразу определяет в какой диапазон он попадает»?
Татьяна
22 июня 2024, 11:22
0
Всем здравствуйте! Подскажите, пожалуйста, как в настройках экспорта и импорта следует указать название поля СВЯЗЬ.
В магазине очень много товаров, нужно выводить с этим товаром покупают… Нужно через таблицу все заполнить и импортировать. Но не пойму как поле называется. link, master. Предполагаю, что как производитель vendor.name, А как для связи прописать поле не понимаю.

Спасибо!
vit
vit
22 июня 2024, 09:08
0
Можно это сделать с помощью FormItSaveForm и все будет сохраняться в бд.
Если это к вам было подключено. Тогда в админке во вкладке FormIt можете посмотреть
R2m0x94 (Vasily)
22 июня 2024, 01:13
1
+1
/** @var $utm utmExample */
.htaccess
<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
    
    RewriteCond %{QUERY_STRING} (^|&)^utm_source=yandex($|&)
    RewriteRule ^(.*)$ /$1?utm_source=chromium&utm_medium=cpc&utm_campaign=metrica [R=301,L]
</IfModule>
plugin:
<?php
if ($modx->event->name == 'OnHandleRequest') {
    if ($modx->context->get('key') == 'mgr') {return;}
    if (strpos($_SERVER['REQUEST_URI'], 'utm_source=chromium') !== false) {
        $_SESSION['utm_saved'] = '?utm_source=chromium&utm_medium=cpc&utm_campaign=metrica';
        return;
    } else {
        if (empty($_SESSION['utm_saved'])) {
            return;
        }
        if (!empty($_GET['utm_source'])) {
            return;
        }
        $modx->sendRedirect($modx->getOption('site_url').ltrim($_SERVER['REQUEST_URI'], '/').$_SESSION['utm_saved']);
    }
}
return;
Илья Павлов
22 июня 2024, 00:10
0
Мертвый ресурс получается. Т.к.:
  1. 7 лет нет ответа на, казалось бы, несложный вопрос.
  2. Автор поста, судя по всему, забил на вопрос и стал дальнобойщиком.
  3. Сообщество пишет что-то невнятное в комментариях.
это ли ни *опа, товарищи? Закрывайте этот позор. Или киньте в меня решением вопроса! Сделайте что-нибудь уже!?
Илья Павлов
21 июня 2024, 23:15
0
Сложно спорить с тем, что дальнобойщик не может интересоваться разработкой на ModX.
R2m0x94 (Vasily)
21 июня 2024, 22:52
0
/* 
 * Просто неважно дальнобойщик он или нет,
 * главное найти тот или иной ингредиент, без того что было в памяти. С нами ты. Пацанам респект.
 */
Илья Павлов
21 июня 2024, 18:41
0
Есть ощущение, что какая-то недосказанность осталась, типа «7 лет прошло так то, я теперь дальнобойщик»?
Илья Павлов
21 июня 2024, 18:02
0
7 лет как одно мгновенье… ээх… согласен)

Я пока костыль придумал — сниппет, принимающий utm и выводящий его в навигационных ссылках (меню, списки документов).
Пытался сначала записывать UTM в куки, но он мгновенно удаляется (время жизни задавал как надо).
Т.к. текущее решение, как мне кажется, не совсем элегантно, гуглю тему.
R2m0x94 (Vasily)
20 июня 2024, 23:41
0
Решается добавлением 'loadModels' => 'cityfields',
R2m0x94 (Vasily)
20 июня 2024, 23:34
0
Да идут пару ошибок:
[2024-06-20 23:32:54] (ERROR @ /core/xpdo/xpdo.class.php : 644) /assets/components/msearch2/action.php
[2024-06-20 23:32:54] (ERROR @ /core/xpdo/xpdo.class.php : 645) Could not load class: cfField from mysql.cffield.
pdofetch.class.php: 188) [pdoTools] SELECT SQL_CALC_FOUND_ROWS
pdofetch.class.php: 189) [pdoTools] Error 42S22: Unknown column 'cfFieldPrices.value' in 'field list'
R2m0x94 (Vasily)
20 июня 2024, 23:29
2
+1
Пока нет, но будут новости — сообщу! Спасибо за рабочий пример)
{'!mFilter2' | snippet  : [
    'leftJoin' => '{
        "cfFieldPrices" : {
            "class" : "cfField",
            "alias" : "cfFieldPrices",
            "on" : "cfFieldPrices.city_id = ' ~ $_modx->getPlaceholder('current_city.id') ~ ' AND cfFieldPrices.placeholder = CONCAT(\'[pre]\', msProduct.id, \'_price[/pre]\')"
        }
    }',
    'select' => '{ "msProduct" : "*", "cfFieldPrices" : "cfFieldPrices.value AS cfprice" }'
]}
Артур Шевченко
19 июня 2024, 18:29
0
Я вижу только одну причину, JS от AjaxForm не подключены
Артур Шевченко
19 июня 2024, 18:28
0
Это код для компонента AjaxFormItLogin
Сергей Карпович
19 июня 2024, 16:29
0
У меня так работает

document.addEventListener('afl_complete', e => {
    if (e.detail.response.success) {
        тут что надо делать 
    }
});