Drupal Commerce AdWords-module
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. Iets meer in detail:
uc_adwords_order()
detecteert nieuwe orders, en slaat de order-id op in een custom sessie-variableeuc_adwords_footer()
detecteert de dankjewel-pagina. Haalt de sessie-variabele op, roept de tag-functie aan, en output de tag naar de footer
Welk bedrag precies?
Orderbedrag minus vrachtkosten minus BTW:
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
- Voorzien van commentaar
<?php
define('PRODUCTS_ONLY', FALSE); // If set to TRUE google_conversion_value will be products only (without shipping costs)
/////////////////////////////////////////////////////////////////////////
// uc_adwords_footer()
/////////////////////////////////////////////////////////////////////////
//
// Output the AdWords Conversion-tag at the checkout completion page
//
// * The hook is 'footer'
// * Additionally, check that we're on the checkout completion page
// * Additionally, check that we can load the current order
// * Call function add_adwords_js($order)
//
function uc_adwords_footer ()
{
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;
}
/////////////////////////////////
// uc_adwords_order()
/////////////////////////////////
//
// Intercept any new order and store in a session variable
//
// * Hook = "order": http://www.ubercart.nl/docs/api/hook_order
// * $op: De action that is being performed
// * $arg1: Order-object
// * $arg2: Eventueel additioneel argument bij $arg1
function uc_adwords_order($op, &$arg1, $arg2)
{
switch ($op)
{
case 'new':
// Store the order ID in a session variable for later use
//
$_SESSION['uc_adwords_order_id'] = $arg1->order_id;
break;
}
}
/////////////////////////////////
// add_adwords_js()
/////////////////////////////////
//
// Generate tag
//
function add_adwords_js ($order)
{
//global $_google_adwords_footer_script;
$script = '';
// google adwords parameters
//
$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, '.');
// Assemble Adwords tag
// ====================
//
$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;
}