utmHeaders - Замена заголовков в зависимости от  utm Меток (или других GET параметров)

Разработка для клиента. Выкладываю по принципу, чего без дела лежать, может кому пригодится.

Основная идея:
Замена заголовка h1 или любого другого контента, хоть вообще всей страницы, на основе совпадения по указанному GET параметру адресной строки.


Хороший пример замена заголовков, в зависимости от utm параметров рекламной кампании

Работает по точному совпадению в заранее заполненной таблице.


Вариант использование:

1. Заполняем таблицу возможными вариантами UTM меток. Для каждого варианта UTM метки задаем свой отдельный заголовок h1.
2. Вместо заголовка вызваем сниппет utmHeaders и указываем какой GET параметр адресной строки смотреть. По умолчанию это utm_term.
3. Сниппет проверяет есть ли в адресной строке указанный параметр. При входе на сайт без UTM метки посетителю предлагается стандартный вариант заголовка. Если указанный параметр присутствует — его значение проверяется по базе и если такой был предусмотрен — подставляется уникальный заголовок.

Не обязательно оперировать одним лишь заголовком. Можно под каждый вариант указать отдельный чанк с блоком разметки любого размера.

У компонента один единственный чанк вывода
{if $header}
    {$header}
{else}
    <h1>Стандартный
                <strongЗаголовок/strong></h1>
{/if}
Как видите все просто — если найдено совпадение в базе подставляется оно, если нет — выводим стандартный заголовок. Чанк написан на феном — это означает обязательное использование на сайте pdoTools, как зависимости. Компонент устанавливается автоматически, в случае его отсутствия.

UPD 13.12.18
Добавлена возможность задать правило только для конкретной страницы. Если совпала метка в адресной строке и указанная страница — правило отработает и заголовок заменится. Сделано это для того, чтобы по одной и той же метке на разных страницах генерировать разные заголовки.
Николай Савин
24 сентября 2018, 08:20
9
1 224
+14
Поблагодарить автора Отправить деньги

Комментарии: 10

Кудашев Сергей
24 сентября 2018, 10:34
+2
Рекомендовал бы заменить конструкцию в сниппете:
if (!$utmHeaders) {
    return 'Could not load utmHeaders class!';
}
на что-то подобное
if (!$utmHeaders) {
    $modx->log(modX::LOG_LEVEL_ERROR, 'Could not load utmHeaders class!');
    return '';
}
Смысла выводить текст с ошибкой посетителю нет, к тому же это может поломать верстку в зависимости от места, где мы будем вызывать сниппет. А о том, что что-то пошло не так, мы бы никогда не узнали в Вашем варианте :)
srs
srs
25 сентября 2018, 16:40
0
Думаю должна прокатить и такая конструкция на чистом феном:
{if $.get.utm_source == 'utmElement'}
    вывод 1
{else}
    вывод 2
{/if}
    Николай Савин
    25 сентября 2018, 17:12
    0
    Скорее тогда уж switch case. Я же предлагаю таблицу на десятки разных вариантов
      srs
      srs
      25 сентября 2018, 17:25
      0
      Можно и свич кейс, просто я привел в пример аналог того, что указан в посте:
      {if $header}
          {$header}
      {else}
          <h1>Стандартный
          <strongЗаголовок/strong></h1>
      {/if}
      P.S. Я не в коем случае не утверждаю, что компонент бесполезный, мой пример — скорее вариант быстрого и очевидного решения. В то врем как ваше решение может управляться из админки всякими сеошниками прочими людьми и это очевидный плюс.
        Николай Савин
        26 сентября 2018, 05:59
        0
        Это нефига не верный пример. В плейсхолдер header попадает не get параметр, а значение из таблицы вариантов.
          srs
          srs
          01 октября 2018, 19:26
          0
          Я понимаю, что прошло много времени, просто не часто тут бываю и почту особо не чекаю, но…
          Господи этож очевидно, но механизм-то по сути один и тот же. Проверка варианта и вставка нужного результата. У тебя из таблицы (а перед этим обработка get, а иначе как она поймет что прилетело), в моем примере сразу проверка get и выдача результата.
Григорий
27 сентября 2018, 12:45
0
Отлично. То, что надо…
Иван Кизименко
28 сентября 2018, 13:39
0
Дальше под это дело можно развить в замену не только текста, но и изображений, а возможно и вывод других чанков.
    Николай Савин
    28 сентября 2018, 13:44
    0
    Уже Сейчас никто не мешает вставить вместо текста код вызова чанка или сниппета.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.