Drupal Commerce AdWords-module: verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
Regel 17: Regel 17:
 
|[[file:20151009-02.png|thumb]]
 
|[[file:20151009-02.png|thumb]]
 
|}
 
|}
 +
 +
== Toepassing op Drupal Commerce 1.x ==
  
 
== Appendix: Broncode ==
 
== Appendix: Broncode ==

Versie van 30 nov 2016 08:05

In 2013/2014 heb ik een custom-module laten ontwikkelen voor dynamische conversion-tracking voor Übercart 2/Drupal 6. Dit is geen 'complete' module en bevat zelfs geen grafische interface, maar hij doet precies waar-ie voor bedoeld is.

De module is vrijgegeven onder de GPL V2.

Hoe het werkt

De module declareert twee functies die dankzij de juiste hooks rondom de dankjewel-pagina hun ding doen. Je hoeft dus geen code in te voegen in blocks of pagina's.

In de code kun parameter PRODUCTS_ONLY gebruiken om te bepalen dat het orderbedrag in- of exclusief vervoerskosten overgenomen moet worden.

Welk bedrag precies?

Orderbedrag minus vrachtkosten minus BTW:

20151009-01.png
20151009-02.png

Toepassing op Drupal Commerce 1.x

Appendix: Broncode

uc_adwords.info

name = uc_adwords
description = Implements dynamic conversion tracking for adwords in ubercart
version = 6.x-0.1
core = 6.x
package = Custom
files[] = uc_adwords.module

uc_adwords.install

Er is geen installatie-procedure:

<?php

uc_adwords.module - 2014

Dit is vermoedelijk niet meer de originele code, maar een licht gewijzigde variant:

<?php

define('PRODUCTS_ONLY', FALSE); // If set to TRUE google_conversion_value will be products only (without shipping costs)

function uc_adwords_footer () {
  // Check to see if we are at the order completion page.
  if (arg(0) == 'cart' && arg(1) == 'checkout' && arg(2) == 'complete') {
    // If we can load the order...
    if ($order = uc_order_load($_SESSION['uc_adwords_order_id'])) {
      $output = add_adwords_js($order);
    }
    // Clean out the session variable.
    unset($_SESSION['uc_adwords_order_id']);
  }
  return $output;
}

/**
 * Implementation of hook_order().
 */
function uc_adwords_order($op, &$arg1, $arg2) {
  switch ($op) {
    case 'new':
      // Store the order ID for later use.
      $_SESSION['uc_adwords_order_id'] = $arg1->order_id;
      break;
  }
}

function add_adwords_js ($order) {
	//global $_google_adwords_footer_script;

	$script = '';

	// google adwords paramters
	$google_conversion_id = 986212345;
	$google_conversion_language = "en";
	$google_conversion_format = "2";
	$google_conversion_color = "ffffff";
	$google_conversion_label = "FM3zCM-12345qc2m1gM";
	$google_remarketing_only = false;

	// conversion value
	// ================
	//
	// Value PRODUCTS_ONLY (boolean)
	//
	// true : Only value of products incorporated, ex. transportation cost
	// false: Complete order amount incorporated
	//
	$PRODUCTS_ONLY = True;

	if (PRODUCTS_ONLY)
		$google_conversion_value = uc_order_get_total($order, TRUE);
	else {
		$google_conversion_value = $order->order_total;
	}
	$google_conversion_value = uc_currency_format($google_conversion_value, FALSE, TRUE, '.');

	// google adwords script
  $script = '';    
  $script .= "\n" . '<!-- Google Code for Order Complete scherm Conversion Page -->' . "\n";
  $script .= '<script type="text/javascript">' . "\n";
  //$script .= '<!--' . "\n";
  $script .= ' /* <![CDATA[ */' . "\n";
  $script .= '    var google_conversion_id = '. $google_conversion_id .';' . "\n";
  $script .= '    var google_conversion_language = "'. $google_conversion_language .'";' . "\n";
  $script .= '    var google_conversion_format = "'. $google_conversion_format .'";' . "\n";
  $script .= '    var google_conversion_color = "'. $google_conversion_color .'";' . "\n";
  $script .= '    var google_conversion_label = "'. $google_conversion_label .'";' . "\n";
  $script .= '    var google_conversion_value = "'. $google_conversion_value .'";' . "\n";
  $script .= '    var google_remarketing_only = "'. $google_remarketing_only .'";' . "\n";
  $script .= ' /* ]]> */ ' . "\n";
  $script .= '</script>' . "\n";
  $script .= '<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js">' . "\n";
  $script .= '</script>' . "\n";
  $script .= '<noscript>' . "\n";
  $script .= '<div style="display:inline;">' . "\n";
  $script .= '<img height="1" width="1" border="0" src="https://www.googleadservices.com/pagead/conversion/' . $google_conversion_id . '?value='. $google_conversion_value .'&label='. $google_conversion_label .'&guid=ON&script=0" alt=""/>' . "\n";
  $script .= '</div>' . "\n";
  $script .= '</noscript>' . "\n";

	return $script;  
}

uc_adwords.module - 2015

Wijzigingen:

  • Google Tag Assistant suggereerde dat geldbedragen numerieke waardes dienen te zijn, en geen strings
<?php

define('PRODUCTS_ONLY', FALSE); // If set to TRUE google_conversion_value will be products only (without shipping costs)

function uc_adwords_footer () {
  // Check to see if we are at the order completion page.
  if (arg(0) == 'cart' && arg(1) == 'checkout' && arg(2) == 'complete') {
    // If we can load the order...
    if ($order = uc_order_load($_SESSION['uc_adwords_order_id'])) {
      $output = add_adwords_js($order);
    }
    // Clean out the session variable.
    unset($_SESSION['uc_adwords_order_id']);
  }
  return $output;
}

/**
 * Implementation of hook_order().
 */
function uc_adwords_order($op, &$arg1, $arg2) {
  switch ($op) {
    case 'new':
      // Store the order ID for later use.
      $_SESSION['uc_adwords_order_id'] = $arg1->order_id;
      break;
  }
}

function add_adwords_js ($order) {
	//global $_google_adwords_footer_script;

	$script = '';

	// google adwords paramters
	$google_conversion_id = 986212345;
	$google_conversion_language = "en";
	$google_conversion_format = "2";
	$google_conversion_color = "ffffff";
	$google_conversion_label = "FM3zCM-12345qc2m1gM";
	$google_remarketing_only = false;

	// conversion value
	// ================
	//
	// Value PRODUCTS_ONLY (boolean)
	//
	// true : Only value of products incorporated, ex. transportation cost
	// false: Complete order amount incorporated
	//
	$PRODUCTS_ONLY = True;

	if (PRODUCTS_ONLY)
		$google_conversion_value = uc_order_get_total($order, TRUE);
	else {
		$google_conversion_value = $order->order_total;
	}
	$google_conversion_value = uc_currency_format($google_conversion_value, FALSE, TRUE, '.');

	// google adwords script
  $script = '';    
  $script .= "\n" . '<!-- Google Code for Order Complete scherm Conversion Page -->' . "\n";
  $script .= '<script type="text/javascript">' . "\n";
  //$script .= '<!--' . "\n";
  $script .= ' /* <![CDATA[ */' . "\n";
  $script .= '    var google_conversion_id = '. $google_conversion_id .';' . "\n";
  $script .= '    var google_conversion_language = "'. $google_conversion_language .'";' . "\n";
  $script .= '    var google_conversion_format = "'. $google_conversion_format .'";' . "\n";
  $script .= '    var google_conversion_color = "'. $google_conversion_color .'";' . "\n";
  $script .= '    var google_conversion_label = "'. $google_conversion_label .'";' . "\n";
  $script .= '    var google_conversion_value = '. $google_conversion_value .';' . "\n";
  $script .= '    var google_remarketing_only = "'. $google_remarketing_only .'";' . "\n";
  $script .= ' /* ]]> */ ' . "\n";
  $script .= '</script>' . "\n";
  $script .= '<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js">' . "\n";
  $script .= '</script>' . "\n";
  $script .= '<noscript>' . "\n";
  $script .= '<div style="display:inline;">' . "\n";
  $script .= '<img height="1" width="1" border="0" src="https://www.googleadservices.com/pagead/conversion/' . $google_conversion_id . '?value='. $google_conversion_value .'&label='. $google_conversion_label .'&guid=ON&script=0" alt=""/>' . "\n";
  $script .= '</div>' . "\n";
  $script .= '</noscript>' . "\n";

	return $script;  
}