Подскажите насколько это рабочее решение
Приветствую. Возникла необходимость настроить оффлайн конверсии на сайте и загружать их в яндекс директ. Нейронка от гугла предлагает такое решение: добавить невидимое поле в комментарий к заказу. Вот что предлагает:
Сначала учим сайт запоминать Client ID при оформлении заказа, а затем генерируем правильный файл для Директа. Самый простой и надежный способ без изменения базы данных — передавать Client ID в поле comment при отправке формы заказа.
1. Откройте ваш чанк формы оформления заказа (обычно msOrder).
2. Добавьте внутрь формы <form ...> скрытый input:
Как считаете, такое будет работать?
Потом предлагает создать новый сниппет с именем export_ms2_conversions и вставить в него код, который выбирает новые оплаченные (или выполненные) заказы, достает из комментария Client ID и формирует CSV-файл.
Стоит ли делать все вышеописанное или может какие то способы попроще есть?
Сначала учим сайт запоминать Client ID при оформлении заказа, а затем генерируем правильный файл для Директа. Самый простой и надежный способ без изменения базы данных — передавать Client ID в поле comment при отправке формы заказа.
1. Откройте ваш чанк формы оформления заказа (обычно msOrder).
2. Добавьте внутрь формы <form ...> скрытый input:
<input type="hidden" name="comment" id="ym_client_id" value="">3. Ниже на странице (после кода вызова счетчика Метрики) добавьте скрипт, который перехватит Client ID у Метрики и вставит его в этот input:<script>
document.addEventListener("DOMContentLoaded", function() {
// Замените 12345678 на ваш реальный номер счетчика Метрики
ym(12345678, 'getClientID', function(clientID) {
var input = document.getElementById('ym_client_id');
if (input) {
input.value = "ym_uid: " + clientID;
}
});
});
</script>Теперь при оформлении покупки в комментарий к заказу в панели управления miniShop2 будет автоматически дописываться ID пользователя (например, ym_uid: 1546789023456711).Как считаете, такое будет работать?
Потом предлагает создать новый сниппет с именем export_ms2_conversions и вставить в него код, который выбирает новые оплаченные (или выполненные) заказы, достает из комментария Client ID и формирует CSV-файл.
<?php
// Путь, куда сохранять файл на вашем FTP (сделайте папку доступной для чтения)
$filePath = MODX_BASE_PATH . 'assets/exports/conversions.csv';
// Подключаем miniShop2
$miniShop2 = $modx->getService('minishop2','miniShop2', $modx->getOption('minishop2.core_path',null,$modx->getOption('core_path').'components/minishop2/').'model/minishop2/');
if (!($miniShop2 instanceof miniShop2)) return 'Ошибка инициализации miniShop2';
// Выбираем заказы за последние 30 дней со статусом "Отправлен" или "Выполнен" (например, статус ID = 2 или 3)
// status IN (2,3) — подставьте ID ваших успешных статусов
$q = $modx->newQuery('msOrder');
$q->where(array(
'status:IN' => array(2, 3),
'createdon:>' => date('Y-m-data H:i:s', strtotime('-30 days'))
));
$orders = $modx->getCollection('msOrder', $q);
$fp = fopen($filePath, 'w');
// Заголовки, которые требует Яндекс Директ
fputcsv($fp, array('Target_id', 'Client_id', 'DateTime', 'Price', 'Currency'), ',');
foreach ($orders as $order) {
$comment = $order->get('comment');
// Ищем наш ym_uid в комментарии
if (preg_match('/ym_uid:\s*(\d+)/', $comment, $matches)) {
$clientId = $matches[1];
// ID цели «Покупка» в вашей Метрике (поменяйте на свой)
$targetId = '987654321';
$dateTime = strtotime($order->get('createdon')); // Время в Unix-формате
$price = $order->get('cost');
$currency = 'RUB';
fputcsv($fp, array($targetId, $clientId, $dateTime, $price, $currency), ',');
}
}
fclose($fp);
return 'Экспорт завершен. Файл создан: ' . $filePath;Ну и дальше настройка автоматизации через планировщик Cron, создание файла cron_export.php. и код:<?php
// Запускаем MODX в режиме API, чтобы не грузить весь визуальный шаблон сайта
define('MODX_API_MODE', true);
include_once('index.php');
// Включаем обработку ошибок на всякий случай
$modx->getService('error','error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
// Запускаем ваш ранее созданный сниппет
$modx->runSnippet('export_ms2_conversions');По итогу этот файл должен будет скачивать яндекс директ и сверять ID клиентов с заказами, и смотреть с каких источников был заказ. Там это называется загрузка конверсий по FTP. Стоит ли делать все вышеописанное или может какие то способы попроще есть?
Техническая поддержка MODX
Сайт лежит, тормозит или остался без разработчика?
Переезд с MODX 2 на 3, PHP 7 на 8, скорость и безопасность. Поддержка со сроками и ответственностью, а не совет в чате.
Подробнее
Реклама
0
Комментарии: 0