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

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

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" }'
]}
Артур Шевченко
Артур Шевченко
Поиск нет смысла пилить. Если делать в рамках Modx, то ничего лучше phpMorphy не появилось, а эту библиотеку использует mSearch2, вряд ли я сделаю лучше. А если использовать ElasticSearch, то это уже решение не для всех, а только для тех у кого VPS.
Сергей Карпович
Сергей Карпович
Вопрос возник, а как правильно подключить разные счетчики метрики для разных контекстов?
Первое что пришло на ум, это создать настройку в контексте — номер счетчика, и подставлять его в коде метрики.