Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 118 комментариев

Артур Шевченко
Артур Шевченко
Примерно так
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;
}
Татьяна
Татьяна
Всем здравствуйте! Подскажите, пожалуйста, как в настройках экспорта и импорта следует указать название поля СВЯЗЬ.
В магазине очень много товаров, нужно выводить с этим товаром покупают… Нужно через таблицу все заполнить и импортировать. Но не пойму как поле называется. link, master. Предполагаю, что как производитель vendor.name, А как для связи прописать поле не понимаю.

Спасибо!
R2m0x94 (Vasily)
R2m0x94 (Vasily)
/** @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;
Илья Павлов
Илья Павлов
Мертвый ресурс получается. Т.к.:
  1. 7 лет нет ответа на, казалось бы, несложный вопрос.
  2. Автор поста, судя по всему, забил на вопрос и стал дальнобойщиком.
  3. Сообщество пишет что-то невнятное в комментариях.
это ли ни *опа, товарищи? Закрывайте этот позор. Или киньте в меня решением вопроса! Сделайте что-нибудь уже!?
Илья Павлов
Илья Павлов
7 лет как одно мгновенье… ээх… согласен)

Я пока костыль придумал — сниппет, принимающий utm и выводящий его в навигационных ссылках (меню, списки документов).
Пытался сначала записывать UTM в куки, но он мгновенно удаляется (время жизни задавал как надо).
Т.к. текущее решение, как мне кажется, не совсем элегантно, гуглю тему.
R2m0x94 (Vasily)
R2m0x94 (Vasily)
Да идут пару ошибок:
[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)
R2m0x94 (Vasily)
Пока нет, но будут новости — сообщу! Спасибо за рабочий пример)
{'!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" }'
]}