Drupal Commerce AdWords-module: verschil tussen versies
Regel 40: | Regel 40: | ||
"ON" : { "commerce_checkout_complete" : [] }, | "ON" : { "commerce_checkout_complete" : [] }, | ||
... | ... | ||
+ | </pre> | ||
+ | |||
+ | == Event-debugging == | ||
+ | |||
+ | <code>drush fn-hook</code> kan helpen met debuggen van hooks. Bv.: | ||
+ | |||
+ | <code> | ||
+ | drush fn-hook commerce_checkout_complete | ||
+ | |||
+ | Enter the number of the hook implementation you wish to view. | ||
+ | [0] : Cancel | ||
+ | [1] : commerce_adwords | ||
+ | [2] : commerce_cart | ||
+ | |||
+ | 1 | ||
+ | |||
+ | // file: /var/www/kbo215.dvb/sites/all/modules/commerce_adwords/commerce_adwords.module, lines 7-10 | ||
+ | function commerce_adwords_commerce_checkout_complete($order) | ||
+ | { | ||
+ | print phpinfo(); | ||
+ | } | ||
</pre> | </pre> | ||
Versie van 2 dec 2016 20:43
In 2013/2014 is module uc_adword
geímplementeerd: 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.
Eind 2016 was er geen ontkomen meer aan: De module moest omgezet worden naar Drupal 7/Drupal Commerce 1.x, onder de naam commerce_adwords
.
uc_adwords: 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 footeradd_adwords_js()
Genereer en retourneer AdWords-tag.
Welk bedrag precies?
Orderbedrag minus vrachtkosten minus BTW:
Drupal Commerce: Nieuwe order - Welk event?
- Een nieuwe order is een feit op het moment dat de order-email wordt verstuurd. Dat is waarschijnlijk het moment van checkout_completion, niet het moment waarop een order definitief is, want soms moet er nog betaald worden (bv. bij bankoverschrijving)
- Alternatief event: URL detecteren.
De eerste regels van de code-export van het checkout_completetion_email_send-event. Deze lijkt hook commerce_checkout_complete
te suggereren:
{ "commerce_checkout_order_email" : { "LABEL" : "Send an order notification e-mail", "PLUGIN" : "reaction rule", "WEIGHT" : "4", "OWNER" : "rules", "TAGS" : [ "Commerce Checkout" ], "REQUIRES" : [ "rules", "commerce_checkout" ], "ON" : { "commerce_checkout_complete" : [] }, ...
Event-debugging
drush fn-hook
kan helpen met debuggen van hooks. Bv.:
drush fn-hook commerce_checkout_complete
Enter the number of the hook implementation you wish to view.
[0] : Cancel
[1] : commerce_adwords
[2] : commerce_cart
1
// file: /var/www/kbo215.dvb/sites/all/modules/commerce_adwords/commerce_adwords.module, lines 7-10
function commerce_adwords_commerce_checkout_complete($order)
{
print phpinfo();
}
Appendix: Broncode uc_adwords
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;
}