Давайте представим, что у Вас есть общая посадочная страница, на которую Вы ведёте пользователей с рекламы в Яндекс.Директ или Google Adwords. И Вы хотите, чтобы для пользователей, пришедших на сайт с разных объявлений показывались разные заголовки. Например, клиент перешёл к Вам по объявлению: "Купить такой-то товар в Москве". При заходе на Ваш сайт клиенту будет показан заголовок: "Лучший товар такой-то в Москве". А если клиент переходит по объявлению "Купить такой-то товар в Люберцах", то его заголовок на этой же странице будет "Лучший товар такой-то в Люберцах". В общем, вариантов применения этой опции - уйма.
Как считать данные из файла CSV
Для начала нам нужно сформировать файл, в котором будет список меток и заголовков. Формируем обычный документ в программе Exel или любой аналогичной, сохраняем его в формате CSV. В документе должно быть 2 столбца:
- UTM-метка
- Заголовок
Пример файла:
tovar_v_moskve | Лучший товар такой-то в Москве |
tovar_v_lyubertsah | Лучший товар такой-то в Люберцах |
Важно учитывать разделитель, который будет стоять при сохранении в формат CSV. Некоторые программы (например Open Office) спросят Вас, какой Вы хотите использовать разделитель. Можете указать, к примеру этот ;
Если Вы работаете в Exel, то Вас не будут ничего спрашивать и просто поставят пробел или табуляцию. Этот момент мы учтём позже, при написании скрипта.
Теперь нам нужно убедиться, что данные в нашем файле находятся в кодировке UTF-8. Если мы имеем данные в другой кодировке, то при выводе на сайт будут кракозябры вместо русских букв. Чтобы сменить кодировку - открываем файл CSV через Notepad++. В меню программы, в разделе "Кодировки", выбираем "Преобразовать в UTF-8". Сохраняем документ.
Теперь будем разбирать PHP скрипт, который может считать данные из CSV файла и исходя из конкретной UTM-метки поменять заголовок на нашем сайте.
Как менять заголовки по UTM меткам
Представим, что в объявлении у нас следующий URL:
https://адрес_сайта/?utm_source=YandexDirect&utm_replace=tovar_v_moskve
Ниже привожу скрипт, он небольшой. Подробно разберём, что в нём происходит.
<?php $utmReplace = $_GET['utm_replace'] ?? false; // получаем из URL параметр utm_replace $utmStringRow = 1; $utmArray = []; if(($handle = fopen("имя_файла.csv", "r")) !== FALSE) { // Указываем корректное имя файла и открываем файл while(($utmData = fgetcsv($handle)) !== FALSE) { // Получаем данные из файла, в цикле $utmStringNum = count($utmData); $utmStringRow++; for($c = 0; $c < $utmStringNum; $c++) { $elementArr = explode(';', $utmData[$c]); // Здесь между одинарными кавычками должен // стоять корректный разделитель! В примере выше стоит точка с запятой, но у Вас это может быть // как запятая, так и точка с запятой, так и пробел, так и табуляция. Поэтому, // рекомендую открыть файл CSV через Notepad++ и скопировать разделитель между меткой и заголовком // и в ставить его выше. Вручную с клавиатуры его лучше не вводить, т.к. визуально Вы можете просто // не отличить пробел от табуляции. Поэтому, просто копируем и вставляем его выше. $utmArray []= $elementArr; } } fclose($handle); } function correctsEncoding($world) { // Функция для проверки корректности кодировки. Без неё может не работать! // В цикле проверяем, что каждый символ в нашей метке корректный. // Когда я запускал этот пример для себя, у некоторых слов из-за особенностей формирования CSV-файла // в качестве первых символов стояли знаки вопросов for($i = 0; $i < strlen($world); $i++) { if(mb_detect_encoding($world[$i]) == 'ASCII') $worldArr []= $world[$i]; } return implode($worldArr); } // в цикле перебираем все метки из файла и если метка совпадает с меткой в URL - берём заголовок, идущий в паре с меткой for($utm = 0; $utm < count($utmArray); $utm++) { if(correctsEncoding($utmArray[$utm][0]) == $utmReplace) { $utm_source = true; $h1 = $utmArray[$utm][1]; } } echo $h1; // выводим для проверки полученный заголовок ?>
Надеюсь, Вам пригодится данный скрипт и Вы сможете решить с его помощью поставленные задачи!
Подписывайтесь на группу в ВКонтакте, вступайте в сообщество на Facebook, чтобы всегда быть в курсе актуальных выпусков
Web development blog!