Вы здесь

Динамический ремаркетинг и электронная торговля от Google

1

У кого нибудь был опыт внедрения?
Насколько это сложно? Сколько примерно времени требует?
Интересует минимальная настройка: чтобы работало.

Версия Drupal: 
7.x
Связанные проекты: 
Drupal Commerce
Вопрос задан 14.06.2016 - 20:42

Ответы

1

Приходилось прикручивать динамический ремаркетинг. Создал кастомный хук темизации с выводом через шаблон. В шаблоне весь нужный js. Теги в js передаются как переменные в хук темизации. Js код добавляется на страницу в hook_page_build. Все значения для тегов берутся из контекста. Ниже примерный код. ft_marketing_get_adwords_custom_params отвечает за генерацию значений для тегов. Можно сделать кастомизируемым, если вынести настройки в админку на отдельную страницу, на страницу редактирования типа ноды или если интегрировать с модулем Context или Rules.

/**
 * Implements hook_page_build().
 */
function ft_marketing_page_build(&$page) {
  if (!variable_get('development_mode', 0)) {
    // Need to match clean URLs as well as Drupal paths.
    $path = drupal_strtolower(drupal_get_path_alias($_GET['q']));
    $pages = variable_get('ft_marketing_google_adwords_excluded_pages', array());
    $page_match = drupal_match_path($path, $pages);
    if ($path != $_GET['q']) {
      $page_match = $page_match || drupal_match_path($_GET['q'], $pages);
    }

    if (!$page_match) {
      $custom_params = ft_marketing_get_adwords_custom_params();

      $page['page_bottom']['ft_marketing_adwords'] = array(
        '#theme' => 'ft_marketing_google_adwords',
        '#custom_params' => $custom_params,
      );
    }
  }
}

// Gets tag values for dynamic remarketing for the current page.
function ft_marketing_get_adwords_custom_params() {
  $params = array();

  // get travel_pagetype from context
  $travel_pagetype = ft_marketing_get_pagetype();
  if (!empty($travel_pagetype)) {
    $params['travel_destid'] = '';
    $params['travel_pagetype'] = $travel_pagetype;
    $params['travel_totalvalue'] = '';
  }

  // Get lower price if current node has products
  $node = menu_get_object();
  if ($node && $node->type === 'my_node') {
    $wrapper = entity_metadata_wrapper('node', $node);
    $totalvalue = PHP_INT_MAX;
    foreach ($wrapper->field_product as $rate) {
      if (!$totalvalue || $totalvalue > $rate->commerce_price->amount_decimal->value()) {
        $totalvalue = $rate->commerce_price->amount_decimal->value();
      }
    }

    $params['travel_destid'] = $node->nid;
    $params['travel_totalvalue'] = $totalvalue;
  }

  return $params;
}

/**
 * Implements hook_theme().
 */
function ft_marketing_theme($existing, $type, $theme, $path) {
  return array(
    'ft_marketing_google_adwords' => array(
      'variables' => array(
        'conversion_id' => NULL,
        'custom_params' => array(),
      ),
      'template' => 'templates/ft-marketing-google-adwords'
    ),
  );
}

function template_preprocess_ft_marketing_google_adwords(&$variables, $hook) {
  $variables['conversion_id'] = variable_get('ft_marketing_google_conversion_id', '');
  $variables['custom_params_rendered'] = '';
  if (!empty($variables['custom_params'])) {
    $variables['custom_params_rendered'] = '{';
    foreach ($variables['custom_params'] as $key => $value) {
      $variables['custom_params_rendered'] .= $key . ':\'' . $value . '\',';
    }
    $variables['custom_params_rendered'] = trim($variables['custom_params_rendered'], ',') . '}';
  }
}

Шаблон

<?php

<div style="display:none">
  <?php if(!empty($custom_params) > 0): ?>
  <script type="text/javascript">
    var google_tag_params = <?php print $custom_params_rendered; ?>;
  </script>
  <?php endif; ?>
  <script type="text/javascript">
    /* <![CDATA[ */
    var google_conversion_id = <?php print $conversion_id; ?>;
    <?php if(!empty($custom_params) > 0): ?>
      var google_custom_params = window.google_tag_params;
    <?php endif; ?>
    var google_remarketing_only = true;
    /* ]]> */
  </script>
  <script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js">
  </script>
  <noscript>
    <div style="display:inline;">
      <img
        height="1"
        width="1"
        style="border-style:none;"
        alt=""
        src="//googleads.g.doubleclick.net/pagead/viewthroughconversion/<?php print $conversion_id; ?>/?value=0&amp;guid=ON&amp;script=0"/>
    </div>
  </noscript>
</div>

С помощью https://www.drupal.org/project/views_data_export настроил экспорт данных в csv файл, сделал URL вьюхи с экспортом доступным анонимам, так что гугл сам может забирать обновленные данные когда нужно

Ответ дан 15.06.2016 - 00:03