You are here

function hook_commerce_google_tag_manager_commerce_data_aggregated_alter in Commerce Google Tag Manager 7.2

Allow other modules to alter aggregated event-data just before pushing to the DataLayer.

This hook is called within page_build().

1 invocation of hook_commerce_google_tag_manager_commerce_data_aggregated_alter()
commerce_google_tag_manager_page_build in ./commerce_google_tag_manager.module
Implements hook_page_build().

File

./commerce_google_tag_manager.api.php, line 59
Documentation of Commerce GoogleTagManager hooks.

Code

function hook_commerce_google_tag_manager_commerce_data_aggregated_alter(&$data) {

  // Reorder the events by priority: most important events on top.
  $prio_events = array(
    '"event":"purchase"',
    '"event":"addToCart"',
    '"event":"removeFromCart"',
    '"event":"checkout"',
  );

  // Build a string representation of the data, to be able to match our events.
  $imploded_data = implode('', $data);

  // This double loop replaces multiple event-scripts with the script from the
  // most important event.
  foreach ($prio_events as $event) {

    // Find needle in scripts-array.
    if (strpos($imploded_data, $event) !== FALSE) {

      // Find specific script and select it.
      foreach ($data as $script) {
        if (strpos($script, $event) !== FALSE) {

          // Replace the array with multiple event-scripts by the prio-event.
          $data = array(
            $script,
          );

          // Exit inner loop.
          continue;
        }
      }

      // Exit outer loop.
      continue;
    }
  }
}