Tealium_Tags - Version 2.0.1

Version Notes

2.0.1 - Fix for extended UDO rendering blank page
2.0.0 - Added external script support and refactored
1.2.0 - Added UI admin toggle for onePage Checkout
1.1.1 - Fixed pages not rendering
1.1.0 - Added support for alternate checkout pages
1.0.2 - Added html/text help to admin config
1.0.1 - Fixed arrays that were rendering as strings
1.0.0 - refactored based on Tealium class
* added support for external UDO definition
* added support for diagnostic pixel
0.4.4d - added output of diagnostic pixel
0.4.4 - strip commas from all dollar values
0.4.3 - fix for bad array on order page
0.4.2 - added simple discount array
0.4.0 - fix for individual discounts and number formats
0.3.1 - fix for configurable product arrays
0.3.0 - fix for missing support message
0.2.0 - fix for product page tag syntax
0.1.0 - initial release

Download this release

Release Info

Developer Tealium Inc.
Extension Tealium_Tags
Version 2.0.1
Comparing to
See all releases


Code changes from version 1.1.0 to 2.0.1

Files changed (33) hide show
  1. app/code/local/Tealium/Tags/Helper/Data.php +97 -57
  2. app/code/local/Tealium/Tags/Helper/Observer.php +22 -0
  3. app/code/local/Tealium/Tags/etc/adminhtml.xml +0 -0
  4. app/code/local/Tealium/Tags/etc/config.xml +34 -21
  5. app/code/local/Tealium/Tags/etc/system.xml +163 -37
  6. app/design/frontend/base/default/layout/tealium_tags.xml +0 -0
  7. app/design/frontend/base/default/template/tealium_tags/.checkout_success.phtml.swp +0 -0
  8. app/design/frontend/base/default/template/tealium_tags/base.phtml +5 -2
  9. app/design/frontend/base/default/template/tealium_tags/catalog_product_compare_index.phtml +23 -11
  10. app/design/frontend/base/default/template/tealium_tags/catalogsearch_advanced_result_index.phtml +23 -11
  11. app/design/frontend/base/default/template/tealium_tags/catalogsearch_result_index.phtml +16 -3
  12. app/design/frontend/base/default/template/tealium_tags/catalogsearch_term_popular.phtml +21 -6
  13. app/design/frontend/base/default/template/tealium_tags/category.phtml +16 -3
  14. app/design/frontend/base/default/template/tealium_tags/checkout_cart_index.phtml +16 -3
  15. app/design/frontend/base/default/template/tealium_tags/checkout_onepage.phtml +48 -13
  16. app/design/frontend/base/default/template/tealium_tags/checkout_success.phtml +11 -3
  17. app/design/frontend/base/default/template/tealium_tags/cms.phtml +16 -3
  18. app/design/frontend/base/default/template/tealium_tags/customer.phtml +15 -3
  19. app/design/frontend/base/default/template/tealium_tags/generic.phtml +23 -4
  20. app/design/frontend/base/default/template/tealium_tags/guest_sales.phtml +19 -4
  21. app/design/frontend/base/default/template/tealium_tags/product.phtml +14 -5
  22. app/design/frontend/base/default/template/tealium_tags/product_send.phtml +26 -16
  23. app/design/frontend/base/default/template/tealium_tags/seo.phtml +16 -3
  24. app/design/frontend/base/default/template/tealium_tags/tag_list_index.phtml +22 -6
  25. app/design/frontend/base/default/template/tealium_tags/tag_product_list.phtml +21 -5
  26. app/etc/modules/Tealium_Tags.xml +0 -0
  27. lib/Tealium/.Tealium.php.swp +0 -0
  28. lib/Tealium/Errors.log.txt +0 -0
  29. lib/Tealium/Tealium.php +185 -225
  30. lib/Tealium/TealiumAPI.php +0 -70
  31. lib/Tealium/TealiumCustomData.php +127 -0
  32. lib/Tealium/TealiumInit.php +286 -226
  33. package.xml +10 -7
app/code/local/Tealium/Tags/Helper/Data.php CHANGED
@@ -1,74 +1,114 @@
1
  <?php
 
2
 
3
  class Tealium_Tags_Helper_Data extends Mage_Core_Helper_Abstract {
4
-
5
- private $tealium;
6
-
7
- public function init($store, $page = array()) {
8
- require_once(Mage::getBaseDir('lib') . '/Tealium/Tealium.php');
9
- $account = $this->getAccount($store);
10
- $profile = $this->getProfile($store);
11
- $env = $this->getEnv($store);
12
 
13
- $data = array("store" => $store, "page" => $page);
14
- $this->tealium = new Tealium($account,$profile,$env,"Home",$data);
15
- if (Mage::getStoreConfig('tealium_tags/general/udo_enable', $store)){
16
- @include_once(Mage::getStoreConfig('tealium_tags/general/udo', $store));
17
- foreach (($udoElements?:array()) as $page => $vars){
18
- if (is_array($vars)){
19
- foreach ($vars as $pageKey => $pageValue){
20
- $this->tealium->updateUdo($pageKey, $pageValue, $page);
21
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  }
23
  }
 
 
 
 
 
 
 
 
24
  }
25
- $this->tealium->pageType("Home");
26
 
27
- }
28
-
29
- public function isEnabled($store) {
30
- return Mage::getStoreConfig('tealium_tags/general/enable', $store);
31
- }
32
 
33
- public function externalUdoEnabled($store) {
34
- return Mage::getStoreConfig('tealium_tags/general/udo_enable', $store);
35
- }
36
-
37
- function getTealiumBaseUrl($store){
38
- $account = $this->getAccount($store);
39
- $profile = $this->getProfile($store);
40
- $env = $this->getEnv($store);
41
- return "//tags.tiqcdn.com/utag/$account/$profile/$env/utag.js";
42
- }
43
-
44
- function getTealiumObject($store, $page = array()){
45
- $this->init($store, $page);
46
- return $this->tealium;
47
- }
48
-
49
- public function getAccount($store) {
50
- return Mage::getStoreConfig('tealium_tags/general/account', $store);
51
- }
52
-
53
- public function getProfile($store) {
54
- return Mage::getStoreConfig('tealium_tags/general/profile', $store);
55
- }
56
 
57
- public function getEnv($store) {
58
- return Mage::getStoreConfig('tealium_tags/general/env', $store);
59
- }
 
60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  public function getUDOPath($store) {
62
- return Mage::getStoreConfig('tealium_tags/general/udo', $store);
63
- }
64
-
 
 
 
 
 
 
 
 
 
 
65
  public function getDiagnosticTag($store) {
66
- if (Mage::getStoreConfig('tealium_tags/general/diagnostic_enable', $store)){
67
- $utag_data= urlencode($this->tealium->render("json"));
68
- $url = Mage::getStoreConfig('tealium_tags/general/diagnostic_tag', $store) . '?origin=server&user_agent='.$_SERVER['HTTP_USER_AGENT'].'&data='.$utag_data;
69
  return '<img src="' . $url . '" style="display:none"/>';
70
  }
71
  return "";
72
- }
73
  }
74
-
1
  <?php
2
+ require_once (Mage::getBaseDir ( 'lib' ) . '/Tealium/Tealium.php');
3
 
4
  class Tealium_Tags_Helper_Data extends Mage_Core_Helper_Abstract {
5
+ protected $tealium;
6
+ protected $store;
7
+ protected $page;
8
+ public function init(&$store, &$page = array(), $pageType) {
9
+
10
+ $account = $this->getAccount ( $store );
11
+ $profile = $this->getProfile ( $store );
12
+ $env = $this->getEnv ( $store );
13
 
14
+ $data = array (
15
+ "store" => $store,
16
+ "page" => $page
17
+ );
18
+ $this->store = $store;
19
+ $this->page = $page;
20
+ $this->tealium = new Tealium( $account, $profile, $env, $pageType, $data );
21
+
22
+ return $this;
23
+ }
24
+
25
+ public function addCustomDataFromSetup(&$store, $pageType){
26
+ $data = array (
27
+ "store" => $this->store,
28
+ "page" => $this->page
29
+ );
30
+ if (Mage::getStoreConfig ( 'tealium_tags/general/udo_enable', $store )) {
31
+ include_once (Mage::getStoreConfig ( 'tealium_tags/general/udo', $store ));
32
+
33
+ if ( method_exists($this, "getCustomUdo") ){
34
+ $customUdoElements = getCustomUdo();
35
+ if ( is_array($customUdoElements) && self::isAssocArray($customUdoElements) ){
36
+ $udoElements = $customUdoElements;
37
  }
38
  }
39
+ elseif (!isset($udoElements) || ( isset($udoElements) && !self::isAssocArray($udoElements) )){
40
+ $udoElements = array();
41
+ }
42
+
43
+ if ( isset($udoElements[$pageType]) ){
44
+ $this->tealium->setCustomUdo($udoElements[$pageType]);
45
+ }
46
+
47
  }
 
48
 
49
+ return $this;
50
+ }
 
 
 
51
 
52
+ public function addCustomDataFromObject($udoObject){
53
+ if ( is_array($udoObject) && self::isAssocArray($udoObject) ){
54
+ $this->tealium->updateUdo($udoObject);
55
+ }
56
+ return $this;
57
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
+ protected static function isAssocArray( $array) {
60
+ $keys = array_keys($array);
61
+ return array_keys($keys) !== $keys;
62
+ }
63
 
64
+ public function isEnabled($store) {
65
+ return Mage::getStoreConfig ( 'tealium_tags/general/enable', $store );
66
+ }
67
+ public function enableOnePageCheckout($store) {
68
+ return Mage::getStoreConfig ( 'tealium_tags/general/onepage', $store );
69
+ }
70
+ public function externalUdoEnabled($store) {
71
+ return Mage::getStoreConfig ( 'tealium_tags/general/udo_enable', $store );
72
+ }
73
+ public function getTealiumBaseUrl($store) {
74
+ $account = $this->getAccount ( $store );
75
+ $profile = $this->getProfile ( $store );
76
+ $env = $this->getEnv ( $store );
77
+ return "//tags.tiqcdn.com/utag/$account/$profile/$env/utag.js";
78
+ }
79
+ public function getTealiumObject() {
80
+ return $this->tealium;
81
+ }
82
+ public function getAccount($store) {
83
+ return Mage::getStoreConfig ( 'tealium_tags/general/account', $store );
84
+ }
85
+ public function getProfile($store) {
86
+ return Mage::getStoreConfig ( 'tealium_tags/general/profile', $store );
87
+ }
88
+ public function getEnv($store) {
89
+ return Mage::getStoreConfig ( 'tealium_tags/general/env', $store );
90
+ }
91
  public function getUDOPath($store) {
92
+ return Mage::getStoreConfig ( 'tealium_tags/general/udo', $store );
93
+ }
94
+ public function getAPIEnabled($store) {
95
+ return Mage::getStoreConfig ( 'tealium_tags/general/api_enable', $store );
96
+ }
97
+ public function getIsExternalScript($store) {
98
+ return Mage::getStoreConfig ( 'tealium_tags/general/external_script', $store );
99
+ }
100
+ public function getExternalScriptType($store) {
101
+ $async = Mage::getStoreConfig ( 'tealium_tags/general/external_script_type', $store );
102
+ $scriptType = $async ? "async" : "sync";
103
+ return $scriptType;
104
+ }
105
  public function getDiagnosticTag($store) {
106
+ if (Mage::getStoreConfig ( 'tealium_tags/general/diagnostic_enable', $store )) {
107
+ $utag_data = urlencode ( $this->tealium->render ( "json" ) );
108
+ $url = Mage::getStoreConfig ( 'tealium_tags/general/diagnostic_tag', $store ) . '?origin=server&user_agent=' . $_SERVER ['HTTP_USER_AGENT'] . '&data=' . $utag_data;
109
  return '<img src="' . $url . '" style="display:none"/>';
110
  }
111
  return "";
112
+ }
113
  }
114
+
app/code/local/Tealium/Tags/Helper/Observer.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Tealium_Tags_Helper_Observer extends Mage_Core_Helper_Abstract
3
+ {
4
+ public function __construct()
5
+ {
6
+ }
7
+
8
+ public function apiHandler($observer)
9
+ {
10
+ if (isset($_REQUEST["tealium_api"]) && $_REQUEST["tealium_api"] == "true"){
11
+ $response = $observer->getEvent()->getFront()->getResponse();
12
+ $html = $response->getBody();
13
+ preg_match('/\/\/TEALIUM_START(.*)\/\/TEALIUM_END/is', $html, $matches);
14
+ $javaScript = "// Tealium Magento Callback API";
15
+ $javaScript .= $matches[1];
16
+ $response->setBody($javaScript);
17
+ }
18
+
19
+ return $this;
20
+ }
21
+ }
22
+ ?>
app/code/local/Tealium/Tags/etc/adminhtml.xml CHANGED
File without changes
app/code/local/Tealium/Tags/etc/config.xml CHANGED
@@ -1,24 +1,37 @@
1
  <?xml version="1.0"?>
2
  <config>
3
- <modules>
4
- <Tealium_Tags>
5
- <version>0.3.0</version>
6
- </Tealium_Tags>
7
- </modules>
8
- <global>
9
- <helpers>
10
- <tealium_tags>
11
- <class>Tealium_Tags_Helper</class>
12
- </tealium_tags>
13
- </helpers>
14
- </global>
15
- <frontend>
16
- <layout>
17
- <updates>
18
- <tealium_tags>
19
- <file>tealium_tags.xml</file>
20
- </tealium_tags>
21
- </updates>
22
- </layout>
23
- </frontend>
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  </config>
1
  <?xml version="1.0"?>
2
  <config>
3
+ <modules>
4
+ <Tealium_Tags>
5
+ <version>0.3.0</version>
6
+ </Tealium_Tags>
7
+ </modules>
8
+ <global>
9
+ <helpers>
10
+ <tealium_tags>
11
+ <class>Tealium_Tags_Helper</class>
12
+ </tealium_tags>
13
+ </helpers>
14
+ <events>
15
+ <controller_front_send_response_before>
16
+ <observers>
17
+ <tealium_tags>
18
+ <type>singleton</type>
19
+ <class>
20
+ Tealium_Tags_Helper_Observer
21
+ </class>
22
+ <method>apiHandler</method>
23
+ </tealium_tags>
24
+ </observers>
25
+ </controller_front_send_response_before>
26
+ </events>
27
+ </global>
28
+ <frontend>
29
+ <layout>
30
+ <updates>
31
+ <tealium_tags>
32
+ <file>tealium_tags.xml</file>
33
+ </tealium_tags>
34
+ </updates>
35
+ </layout>
36
+ </frontend>
37
  </config>
app/code/local/Tealium/Tags/etc/system.xml CHANGED
@@ -40,6 +40,18 @@
40
  <show_in_website>1</show_in_website>
41
  <show_in_store>1</show_in_store>
42
  </enable>
 
 
 
 
 
 
 
 
 
 
 
 
43
  <account translate="label">
44
  <label>Account</label>
45
  <comment>
@@ -100,33 +112,131 @@
100
  <div style="display:none; background-color:#000; color:#0F0" id="code_example">
101
  <pre>
102
  &lt;?php
103
- // TealiumInit.php var definition file
104
- // Replace $STRING or $ARRAY with your server side variable reference unique to that key
105
- $store = $data[&quot;store&quot;];
106
- $page = $data[&quot;page&quot;];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
 
108
 
109
  $udoElements = array(
110
- Home =&gt; array(
111
- foo =&gt; &quot;bar&quot;,
112
- test =&gt; &quot;var&quot;,
113
- site_region =&gt; &quot;modified: &quot; . Mage::app()-&gt;getLocale()-&gt;getLocaleCode() ?:
114
- &quot;&quot;, //&quot;uk&quot;,
115
- ),
116
- Search =&gt; array(
117
- ),
118
- Category =&gt; array(
119
- ),
120
- ProductPage =&gt; array(
121
- ),
122
- Cart =&gt; array(
123
- ),
124
- Confirmation =&gt; array(
125
- ),
126
- Customer =&gt; array(
127
- )
 
 
 
 
 
 
 
 
 
 
128
  );
129
 
 
130
  ?&gt;
131
  </pre>
132
  <br /><a href="javascript:false;" onclick="javascript: document.getElementById('code_example').style.display='none'">Hide</a>
@@ -140,38 +250,54 @@ $udoElements = array(
140
  <show_in_website>1</show_in_website>
141
  <show_in_store>1</show_in_store>
142
  </udo>
143
- <diagnostic_enable translate="label">
144
- <label>Enable Diagnostic Tag</label>
 
 
 
 
 
145
  <frontend_type>select</frontend_type>
146
  <source_model>adminhtml/system_config_source_yesno</source_model>
147
  <sort_order>17</sort_order>
148
  <show_in_default>1</show_in_default>
149
  <show_in_website>1</show_in_website>
150
  <show_in_store>1</show_in_store>
151
- </diagnostic_enable>
152
- <diagnostic_tag translate="label">
153
- <label>Custom diagnostic tag URI path</label>
154
  <comment>
155
- <![CDATA[<span class="notice">Please contact your Account Manager for information about this feature</span>]]>
 
 
156
  </comment>
157
- <frontend_type>text</frontend_type>
 
158
  <sort_order>18</sort_order>
159
  <show_in_default>1</show_in_default>
160
  <show_in_website>1</show_in_website>
161
  <show_in_store>1</show_in_store>
162
- </diagnostic_tag>
163
- <api_enable translate="label">
164
- <label>Enable API support</label>
165
- <comment>
166
- <![CDATA[<span class="notice">Please contact your Account Manager for information about this feature</span>]]>
167
- </comment>
168
  <frontend_type>select</frontend_type>
169
  <source_model>adminhtml/system_config_source_yesno</source_model>
170
  <sort_order>19</sort_order>
171
  <show_in_default>1</show_in_default>
172
  <show_in_website>1</show_in_website>
173
  <show_in_store>1</show_in_store>
174
- </api_enable>
 
 
 
 
 
 
 
 
 
 
 
175
  <help translate="label">
176
  <label>Help Section</label>
177
  <comment>
@@ -670,7 +796,7 @@ Copyright © 2014 Tealium, Inc. All rights reserved.</p></article>
670
  ]]>
671
  </comment>
672
  <frontend_type>label</frontend_type>
673
- <sort_order>20</sort_order>
674
  <show_in_default>1</show_in_default>
675
  <show_in_website>1</show_in_website>
676
  <show_in_store>1</show_in_store>
40
  <show_in_website>1</show_in_website>
41
  <show_in_store>1</show_in_store>
42
  </enable>
43
+ <onepage translate="label">
44
+ <label>Enable OnePage Checkout</label>
45
+ <comment>
46
+ <![CDATA[<span class="notice">Enable/Disable OnePage Checkout Support</span>]]>
47
+ </comment>
48
+ <frontend_type>select</frontend_type>
49
+ <source_model>adminhtml/system_config_source_yesno</source_model>
50
+ <sort_order>2</sort_order>
51
+ <show_in_default>1</show_in_default>
52
+ <show_in_website>1</show_in_website>
53
+ <show_in_store>1</show_in_store>
54
+ </onepage>
55
  <account translate="label">
56
  <label>Account</label>
57
  <comment>
112
  <div style="display:none; background-color:#000; color:#0F0" id="code_example">
113
  <pre>
114
  &lt;?php
115
+ // TealiumExtendData use this to override or extend default values proivided by the Tealium module
116
+
117
+ class TealiumExtendData {
118
+ private static $store;
119
+ private static $page;
120
+
121
+ public static function setStore($store){
122
+ TealiumExtendData::$store = $store;
123
+ }
124
+
125
+ public static function setPage($page){
126
+ TealiumExtendData::$page = $page;
127
+ }
128
+
129
+ public function getHome(){
130
+ $store = TealiumExtendData::$store;
131
+ $page = TealiumExtendData::$page;
132
+
133
+ $outputArray = array();
134
+ //$outputArray[&quot;custom_key&quot;] = "value";
135
+
136
+ return $outputArray;
137
+ }
138
+
139
+ public function getSearch(){
140
+ $store = TealiumExtendData::$store;
141
+ $page = TealiumExtendData::$page;
142
+
143
+ $outputArray = array();
144
+ //$outputArray[&quot;custom_key&quot;] = "value";
145
+
146
+ return $outputArray;
147
+ }
148
+
149
+ public function getCategory(){
150
+ $store = TealiumExtendData::$store;
151
+ $page = TealiumExtendData::$page;
152
+
153
+ $outputArray = array();
154
+ //$outputArray[&quot;custom_key&quot;] = "value";
155
+
156
+ return $outputArray;
157
+ }
158
+
159
+ public function getProductPage(){
160
+ $store = TealiumExtendData::$store;
161
+ $page = TealiumExtendData::$page;
162
+
163
+ $outputArray = array();
164
+ //$outputArray[&quot;custom_key&quot;] = "value";
165
+ // make sure any product values are in an array
166
+
167
+ return $outputArray;
168
+ }
169
+
170
+ public function getCartPage() {
171
+ $store = TealiumExtendData::$store;
172
+ $page = TealiumExtendData::$page;
173
+
174
+ $outputArray = array();
175
+ //$outputArray[&quot;custom_key&quot;] = "value";
176
+ // make sure any product values are in an array
177
+
178
+ return $outputArray;
179
+ }
180
+
181
+ public function getOrderConfirmation(){
182
+ $store = TealiumExtendData::$store;
183
+ $page = TealiumExtendData::$page;
184
+
185
+ $outputArray = array();
186
+ //$outputArray[&quot;custom_key&quot;] = "value";
187
+ // make sure any product values are in an array
188
+
189
+ return $outputArray;
190
+ }
191
+
192
+ public function getCustomerData(){
193
+ $store = TealiumExtendData::$store;
194
+ $page = TealiumExtendData::$page;
195
+
196
+ $outputArray = array();
197
+ //$outputArray[&quot;custom_key&quot;] = "value";
198
+
199
+ return $outputArray;
200
+ }
201
+ }
202
+
203
+
204
+ TealiumExtendData::setStore($data["store"]);
205
+ TealiumExtendData::setPage($data["page"]);
206
 
207
 
208
  $udoElements = array(
209
+ &quot;Home&quot; =&gt; function(){
210
+ $tealiumData = new TealiumExtendData();
211
+ return $tealiumData-&gt;getHome();
212
+ },
213
+ &quot;Search&quot; =&gt; function(){
214
+ $tealiumData = new TealiumExtendData();
215
+ return $tealiumData-&gt;getSearch();
216
+ },
217
+ &quot;Category&quot; =&gt; function(){
218
+ $tealiumData = new TealiumExtendData();
219
+ return $tealiumData-&gt;getCategory();
220
+ },
221
+ &quot;ProductPage&quot; =&gt; function(){
222
+ $tealiumData = new TealiumExtendData();
223
+ return $tealiumData-&gt;getProductPage();
224
+ },
225
+ &quot;Cart&quot; =&gt; function(){
226
+ $tealiumData = new TealiumExtendData();
227
+ return $tealiumData-&gt;getCartPage();
228
+ },
229
+ &quot;Confirmation&quot; =&gt; function(){
230
+ $tealiumData = new TealiumExtendData();
231
+ return $tealiumData-&gt;getOrderConfirmation();
232
+ },
233
+ &quot;Customer&quot; =&gt; function(){
234
+ $tealiumData = new TealiumExtendData();
235
+ return $tealiumData-&gt;getCustomerData();
236
+ }
237
  );
238
 
239
+
240
  ?&gt;
241
  </pre>
242
  <br /><a href="javascript:false;" onclick="javascript: document.getElementById('code_example').style.display='none'">Hide</a>
250
  <show_in_website>1</show_in_website>
251
  <show_in_store>1</show_in_store>
252
  </udo>
253
+ <external_script translate="label">
254
+ <label>Enable External Script Support</label>
255
+ <comment>
256
+ <![CDATA[<span class="notice">Place Tealium code in external javaScript file<br/>
257
+ *NOTE Order confirmation page will always load script on page
258
+ </span>]]>
259
+ </comment>
260
  <frontend_type>select</frontend_type>
261
  <source_model>adminhtml/system_config_source_yesno</source_model>
262
  <sort_order>17</sort_order>
263
  <show_in_default>1</show_in_default>
264
  <show_in_website>1</show_in_website>
265
  <show_in_store>1</show_in_store>
266
+ </external_script>
267
+ <external_script_type translate="label">
268
+ <label>External Script Async</label>
269
  <comment>
270
+ <![CDATA[<span class="notice">Enable async loading of the external script<br />
271
+ !WARNING! By enabling, we can't gaurantee all of your tags will fire before the user navigates away
272
+ </span>]]>
273
  </comment>
274
+ <frontend_type>select</frontend_type>
275
+ <source_model>adminhtml/system_config_source_yesno</source_model>
276
  <sort_order>18</sort_order>
277
  <show_in_default>1</show_in_default>
278
  <show_in_website>1</show_in_website>
279
  <show_in_store>1</show_in_store>
280
+ </external_script_type>
281
+ <diagnostic_enable translate="label">
282
+ <label>Enable Diagnostic Tag</label>
 
 
 
283
  <frontend_type>select</frontend_type>
284
  <source_model>adminhtml/system_config_source_yesno</source_model>
285
  <sort_order>19</sort_order>
286
  <show_in_default>1</show_in_default>
287
  <show_in_website>1</show_in_website>
288
  <show_in_store>1</show_in_store>
289
+ </diagnostic_enable>
290
+ <diagnostic_tag translate="label">
291
+ <label>Custom diagnostic tag URI path</label>
292
+ <comment>
293
+ <![CDATA[<span class="notice">Please contact your Account Manager for information about this feature</span>]]>
294
+ </comment>
295
+ <frontend_type>text</frontend_type>
296
+ <sort_order>20</sort_order>
297
+ <show_in_default>1</show_in_default>
298
+ <show_in_website>1</show_in_website>
299
+ <show_in_store>1</show_in_store>
300
+ </diagnostic_tag>
301
  <help translate="label">
302
  <label>Help Section</label>
303
  <comment>
796
  ]]>
797
  </comment>
798
  <frontend_type>label</frontend_type>
799
+ <sort_order>30</sort_order>
800
  <show_in_default>1</show_in_default>
801
  <show_in_website>1</show_in_website>
802
  <show_in_store>1</show_in_store>
app/design/frontend/base/default/layout/tealium_tags.xml CHANGED
File without changes
app/design/frontend/base/default/template/tealium_tags/.checkout_success.phtml.swp DELETED
Binary file
app/design/frontend/base/default/template/tealium_tags/base.phtml CHANGED
@@ -6,6 +6,9 @@ $store = Mage::app()->getStore();
6
  if (!$helper->isEnabled($store)) {
7
  return; // not enabled, no javascript inserted
8
  }
9
- $tealium = $helper->getTealiumObject($store, $this);
10
- echo $tealium->render("tag");
 
 
 
11
  ?>
6
  if (!$helper->isEnabled($store)) {
7
  return; // not enabled, no javascript inserted
8
  }
9
+ if (!$helper->getIsExternalScript($store)){
10
+ $tealium = $helper->getTealiumObject($store, $this);
11
+ echo $tealium->render("tag");
12
+ }
13
+
14
  ?>
app/design/frontend/base/default/template/tealium_tags/catalog_product_compare_index.phtml CHANGED
@@ -16,18 +16,30 @@ foreach($this->getItems() as $item) {
16
  $skus[] = $item->getSku();
17
  $names[] = $item->getName();
18
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
- $udo = array(
21
- page_type => "product compare",
22
- product_id => implode('","', $ids),
23
- product_sku => implode('","', $skus),
24
- product_name => implode('","', $names)
25
- );
26
 
27
-
28
- $tealium = $helper->getTealiumObject($store, $this);
29
- $tealium->pageType("Home");
30
- $tealium->updateUdo($udo);
31
- echo $tealium->render("udo");
32
  echo $helper->getDiagnosticTag($store);
33
  ?>
16
  $skus[] = $item->getSku();
17
  $names[] = $item->getName();
18
  }
19
+
20
+ $customData = array();
21
+ $customData["page_type"] = "product compare";
22
+ $customData["product_id"] = implode('","', $ids);
23
+ $customData["product_sku"] = implode('","', $skus);
24
+ $customData["product_name"] = implode('","', $names);
25
+
26
+ $tealium = $helper->init($store, $this, "Home")->
27
+ addCustomDataFromSetup($store, "Home")->
28
+ addCustomDataFromObject($customData)->
29
+ getTealiumObject();
30
+
31
+ if ($helper->getIsExternalScript($store)){
32
+ $syncType = "sync";
33
+ $externalScriptType = $helper->getExternalScriptType($store);
34
+ if ($externalScriptType == "sync" || $externalScriptType == "async"){
35
+ $syncType = $externalScriptType;
36
+ }
37
+ echo $tealium->render("full", true, $syncType);
38
+ }
39
+ else {
40
+ echo $tealium->render("udo");
41
+ }
42
 
 
 
 
 
 
 
43
 
 
 
 
 
 
44
  echo $helper->getDiagnosticTag($store);
45
  ?>
app/design/frontend/base/default/template/tealium_tags/catalogsearch_advanced_result_index.phtml CHANGED
@@ -23,16 +23,28 @@ if (empty($terms)) {
23
  $terms[] = "no-criteria";
24
  }
25
 
26
- $udo = array(
27
- page_name => "advanced search results",
28
- page_type => "advanced search",
29
- search_results => $this->getResultCount(),
30
- search_keyword => implode('","', $terms)
31
- );
32
-
33
- $tealium = $helper->getTealiumObject($store, $this);
34
- $tealium->pageType("Search");
35
- $tealium->updateUdo($udo);
36
- echo $tealium->render("udo");
 
 
 
 
 
 
 
 
 
 
 
 
37
  echo $helper->getDiagnosticTag($store);
38
  ?>
23
  $terms[] = "no-criteria";
24
  }
25
 
26
+ $customData = array();
27
+ $customData["page_type"] = "advanced search results";
28
+ $customData["page_type"] = "advanced search";
29
+ $customData["search_results"] = $this->getResultCount();
30
+ $customData["search_keyword"] = implode('","', $terms);
31
+
32
+ $tealium = $helper->init($store, $this, "Search")->
33
+ addCustomDataFromSetup($store, "Search")->
34
+ addCustomDataFromObject($customData)->
35
+ getTealiumObject();
36
+
37
+ if ($helper->getIsExternalScript($store)){
38
+ $syncType = "sync";
39
+ $externalScriptType = $helper->getExternalScriptType($store);
40
+ if ($externalScriptType == "sync" || $externalScriptType == "async"){
41
+ $syncType = $externalScriptType;
42
+ }
43
+ echo $tealium->render("full", true, $syncType);
44
+ }
45
+ else {
46
+ echo $tealium->render("udo");
47
+ }
48
+
49
  echo $helper->getDiagnosticTag($store);
50
  ?>
app/design/frontend/base/default/template/tealium_tags/catalogsearch_result_index.phtml CHANGED
@@ -7,8 +7,21 @@ if (!$helper->isEnabled($store)) {
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
- $tealium = $helper->getTealiumObject($store, $this);
11
- $tealium->pageType("Search");
12
- echo $tealium->render("udo");
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  echo $helper->getDiagnosticTag($store);
14
  ?>
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
+ $tealium = $helper->init($store, $this, "Search")->
11
+ addCustomDataFromSetup($store, "Search")->
12
+ getTealiumObject();
13
+
14
+ if ($helper->getIsExternalScript($store)){
15
+ $syncType = "sync";
16
+ $externalScriptType = $helper->getExternalScriptType($store);
17
+ if ($externalScriptType == "sync" || $externalScriptType == "async"){
18
+ $syncType = $externalScriptType;
19
+ }
20
+ echo $tealium->render("full", true, $syncType);
21
+ }
22
+ else {
23
+ echo $tealium->render("udo");
24
+ }
25
+
26
  echo $helper->getDiagnosticTag($store);
27
  ?>
app/design/frontend/base/default/template/tealium_tags/catalogsearch_term_popular.phtml CHANGED
@@ -17,12 +17,27 @@ if( sizeof($this->getTerms()) > 0 ) {
17
  $terms[] = "no-terms";
18
  }
19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
 
21
- $tealium = $helper->getTealiumObject($store, $this);
22
- $tealium->pageType("Search");
23
- $tealium->updateUdo("page_type", "popular search terms");
24
- $tealium->updateUdo("page_name", $this->getLayout()->getBlock('head')->getTitle());
25
- $tealium->updateUdo("search_keyword", $implode('","', $terms));
26
- echo $tealium->render("udo");
27
  echo $helper->getDiagnosticTag($store);
28
  ?>
17
  $terms[] = "no-terms";
18
  }
19
 
20
+ $customData = array();
21
+ $customData["page_type"] = "popular search terms";
22
+ $customData["page_name"] = $this->getLayout()->getBlock('head')->getTitle();
23
+ $customData["search_keyword"] = implode('","', $terms);
24
+
25
+ $tealium = $helper->init($store, $this, "Search")->
26
+ addCustomDataFromSetup($store, "Search")->
27
+ addCustomDataFromObject($customData)->
28
+ getTealiumObject();
29
+
30
+ if ($helper->getIsExternalScript($store)){
31
+ $syncType = "sync";
32
+ $externalScriptType = $helper->getExternalScriptType($store);
33
+ if ($externalScriptType == "sync" || $externalScriptType == "async"){
34
+ $syncType = $externalScriptType;
35
+ }
36
+ echo $tealium->render("full", true, $syncType);
37
+ }
38
+ else {
39
+ echo $tealium->render("udo");
40
+ }
41
 
 
 
 
 
 
 
42
  echo $helper->getDiagnosticTag($store);
43
  ?>
app/design/frontend/base/default/template/tealium_tags/category.phtml CHANGED
@@ -7,8 +7,21 @@ if (!$helper->isEnabled($store)) {
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
- $tealium = $helper->getTealiumObject($store, $this);
11
- $tealium->pageType("Category");
12
- echo $tealium->render("udo");
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  echo $helper->getDiagnosticTag($store);
14
  ?>
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
+ $tealium = $helper->init($store, $this, "Category")->
11
+ addCustomDataFromSetup($store, "Category")->
12
+ getTealiumObject();
13
+
14
+ if ($helper->getIsExternalScript($store)){
15
+ $syncType = "sync";
16
+ $externalScriptType = $helper->getExternalScriptType($store);
17
+ if ($externalScriptType == "sync" || $externalScriptType == "async"){
18
+ $syncType = $externalScriptType;
19
+ }
20
+ echo $tealium->render("full", true, $syncType);
21
+ }
22
+ else {
23
+ echo $tealium->render("udo");
24
+ }
25
+
26
  echo $helper->getDiagnosticTag($store);
27
  ?>
app/design/frontend/base/default/template/tealium_tags/checkout_cart_index.phtml CHANGED
@@ -7,8 +7,21 @@ if (!$helper->isEnabled($store)) {
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
- $tealium = $helper->getTealiumObject($store, $this);
11
- $tealium->pageType("Cart");
12
- echo $tealium->render("udo");
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  echo $helper->getDiagnosticTag($store);
14
  ?>
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
+ $tealium = $helper->init($store, $this, "Cart")->
11
+ addCustomDataFromSetup($store, "Cart")->
12
+ getTealiumObject();
13
+
14
+ if ($helper->getIsExternalScript($store)){
15
+ $syncType = "sync";
16
+ $externalScriptType = $helper->getExternalScriptType($store);
17
+ if ($externalScriptType == "sync" || $externalScriptType == "async"){
18
+ $syncType = $externalScriptType;
19
+ }
20
+ echo $tealium->render("full", true, $syncType);
21
+ }
22
+ else {
23
+ echo $tealium->render("udo");
24
+ }
25
+
26
  echo $helper->getDiagnosticTag($store);
27
  ?>
app/design/frontend/base/default/template/tealium_tags/checkout_onepage.phtml CHANGED
@@ -7,31 +7,66 @@ if (!$helper->isEnabled($store)) {
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
- $tealium = $helper->getTealiumObject($store, $this);
11
- $tealium->pageType("Cart");
12
- echo $tealium->render("udo");
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  echo $helper->getDiagnosticTag($store);
14
  $jsonUDO = $tealium->render("json");
15
 
 
 
 
 
16
  echo <<<EOD
17
  <script type="text/javascript">
18
  document.addEventListener('DOMContentLoaded',function(){
19
- Checkout.prototype.gotoSection = function(section) {
20
- utag.data=$jsonUDO;
21
- utag.data["page_name"] = section;
22
- utag.view(utag.data);
23
- section = $('opc-'+section);
24
- section.addClassName('allow');
25
- this.accordion.openSection(section)
 
 
26
  }
 
27
  });
28
  </script>
29
 
30
  EOD
31
- ?>
32
 
 
 
 
 
33
  <script type="text/javascript">
34
  document.addEventListener('DOMContentLoaded',function(){
35
- review = new Review('<?php echo $this->getUrl('checkout/onepage/saveOrder', array('form_key' => Mage::getSingleton('core/session')->getFormKey())) ?>', '<?php echo $this->getUrl('checkout/onepage/success') ?>', $('checkout-agreements'));
 
 
 
 
 
 
 
 
 
36
  });
37
- </script>
 
 
 
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
+ $tealium = $helper->init($store, $this, "Cart")->
11
+ addCustomDataFromSetup($store, "Cart")->
12
+ getTealiumObject();
13
+
14
+ if ($helper->getIsExternalScript($store)){
15
+ $syncType = "sync";
16
+ $externalScriptType = $helper->getExternalScriptType($store);
17
+ if ($externalScriptType == "sync" || $externalScriptType == "async"){
18
+ $syncType = $externalScriptType;
19
+ }
20
+ echo $tealium->render("full", true, $syncType);
21
+ }
22
+ else {
23
+ echo $tealium->render("udo");
24
+ }
25
+
26
  echo $helper->getDiagnosticTag($store);
27
  $jsonUDO = $tealium->render("json");
28
 
29
+ if (!$helper->enableOnePageCheckout($store)) {
30
+ return; // not enabled, no javascript inserted
31
+ }
32
+
33
  echo <<<EOD
34
  <script type="text/javascript">
35
  document.addEventListener('DOMContentLoaded',function(){
36
+ if(!!window.Checkout){
37
+ Checkout.prototype.gotoSection = function(section) {
38
+ utag.data=$jsonUDO;
39
+ utag.data["page_name"] = section;
40
+ utag.view(utag.data);
41
+ section = $('opc-'+section);
42
+ section.addClassName('allow');
43
+ this.accordion.openSection(section)
44
+ }
45
  }
46
+
47
  });
48
  </script>
49
 
50
  EOD
 
51
 
52
+
53
+ ?>
54
+ <?php
55
+ echo <<<EOD
56
  <script type="text/javascript">
57
  document.addEventListener('DOMContentLoaded',function(){
58
+ if (!!window.Review){
59
+ EOD
60
+ ?>
61
+ <?php
62
+ echo "review = new Review('".$this->getUrl('checkout/onepage/saveOrder', array('form_key' => Mage::getSingleton('core/session')->getFormKey()))."', '".$this->getUrl('checkout/onepage/success')."', $('checkout-agreements'));";
63
+ ?>
64
+
65
+ <?php
66
+ echo <<<EOD
67
+ }
68
  });
69
+ </script>
70
+ EOD
71
+ ?>
72
+
app/design/frontend/base/default/template/tealium_tags/checkout_success.phtml CHANGED
@@ -7,8 +7,16 @@ if (!$helper->isEnabled($store)) {
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
- $tealium = $helper->getTealiumObject($store, $this);
11
- $tealium->pageType("Confirmation");
12
- echo $tealium->render("udo");
 
 
 
 
 
 
 
 
13
  echo $helper->getDiagnosticTag($store);
14
  ?>
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
+ $tealium = $helper->init($store, $this, "Confirmation")->
11
+ addCustomDataFromSetup($store, "Confirmation")->
12
+ getTealiumObject();
13
+
14
+ if ($helper->getIsExternalScript($store)){
15
+ echo $tealium->render("full", false);
16
+ }
17
+ else {
18
+ echo $tealium->render("udo");
19
+ }
20
+
21
  echo $helper->getDiagnosticTag($store);
22
  ?>
app/design/frontend/base/default/template/tealium_tags/cms.phtml CHANGED
@@ -7,8 +7,21 @@ if (!$helper->isEnabled($store)) {
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
- $tealium = $helper->getTealiumObject($store, $this);
11
- $tealium->pageType("Home");
12
- echo $tealium->render("udo");
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  echo $helper->getDiagnosticTag($store);
14
  ?>
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
+ $tealium = $helper->init($store, $this, "Home")->
11
+ addCustomDataFromSetup($store, "Home")->
12
+ getTealiumObject();
13
+
14
+ if ($helper->getIsExternalScript($store)){
15
+ $syncType = "sync";
16
+ $externalScriptType = $helper->getExternalScriptType($store);
17
+ if ($externalScriptType == "sync" || $externalScriptType == "async"){
18
+ $syncType = $externalScriptType;
19
+ }
20
+ echo $tealium->render("full", true, $syncType);
21
+ }
22
+ else {
23
+ echo $tealium->render("udo");
24
+ }
25
+
26
  echo $helper->getDiagnosticTag($store);
27
  ?>
app/design/frontend/base/default/template/tealium_tags/customer.phtml CHANGED
@@ -7,9 +7,21 @@ if (!$helper->isEnabled($store)) {
7
  return; // not enabled, no javascript inserted
8
  }
9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
11
- $tealium = $helper->getTealiumObject($store, $this);
12
- $tealium->pageType("Customer");
13
- echo $tealium->render("udo");
14
  echo $helper->getDiagnosticTag($store);
15
  ?>
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
+ $tealium = $helper->init($store, $this, "Customer")->
11
+ addCustomDataFromSetup($store, "Customer")->
12
+ getTealiumObject();
13
+
14
+ if ($helper->getIsExternalScript($store)){
15
+ $syncType = "sync";
16
+ $externalScriptType = $helper->getExternalScriptType($store);
17
+ if ($externalScriptType == "sync" || $externalScriptType == "async"){
18
+ $syncType = $externalScriptType;
19
+ }
20
+ echo $tealium->render("full", true, $syncType);
21
+ }
22
+ else {
23
+ echo $tealium->render("udo");
24
+ }
25
 
 
 
 
26
  echo $helper->getDiagnosticTag($store);
27
  ?>
app/design/frontend/base/default/template/tealium_tags/generic.phtml CHANGED
@@ -9,12 +9,31 @@ if (!$helper->isEnabled($store)) {
9
 
10
  $tealium = $helper->getTealiumObject($store, $this);
11
  if(preg_match('/checkout.+success|success.+checkout/i',$_SERVER['PHP_SELF'])){
12
- $tealium->pageType("Confirmation");
 
 
13
  }
14
  else{
15
- $tealium->pageType("Home");
16
- $tealium->updateUdo("page_type","generic");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  }
18
- echo $tealium->render("udo");
 
 
 
19
  echo $helper->getDiagnosticTag($store);
20
  ?>
9
 
10
  $tealium = $helper->getTealiumObject($store, $this);
11
  if(preg_match('/checkout.+success|success.+checkout/i',$_SERVER['PHP_SELF'])){
12
+ $tealium = $helper->init($store, $this, "Confirmation")->
13
+ addCustomDataFromSetup($store, "Confirmation")->
14
+ getTealiumObject();
15
  }
16
  else{
17
+ $customData = array();
18
+ $customData["page_type"] = "generic";
19
+ $tealium = $helper->init($store, $this, "Home")->
20
+ addCustomDataFromSetup($store, "Home")->
21
+ addCustomDataFromObject($customData)->
22
+ getTealiumObject();
23
+
24
+ }
25
+
26
+ if ($helper->getIsExternalScript($store)){
27
+ $syncType = "sync";
28
+ $externalScriptType = $helper->getExternalScriptType($store);
29
+ if ($externalScriptType == "sync" || $externalScriptType == "async"){
30
+ $syncType = $externalScriptType;
31
+ }
32
+ echo $tealium->render("full", true, $syncType);
33
  }
34
+ else {
35
+ echo $tealium->render("udo");
36
+ }
37
+
38
  echo $helper->getDiagnosticTag($store);
39
  ?>
app/design/frontend/base/default/template/tealium_tags/guest_sales.phtml CHANGED
@@ -7,9 +7,24 @@ if (!$helper->isEnabled($store)) {
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
- $tealium = $helper->getTealiumObject($store, $this);
11
- $tealium->pageType("Home");
12
- $tealium->updateUdo("page_name", $this->getTealiumName());
13
- echo $tealium->render("udo");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  echo $helper->getDiagnosticTag($store);
15
  ?>
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
+ $customData = array();
11
+ $customData["page_name"] = $this->getTealiumName();
12
+ $tealium = $helper->init($store, $this, "Home")->
13
+ addCustomDataFromSetup($store, "Home")->
14
+ addCustomDataFromObject($customData)->
15
+ getTealiumObject();
16
+
17
+ if ($helper->getIsExternalScript($store)){
18
+ $syncType = "sync";
19
+ $externalScriptType = $helper->getExternalScriptType($store);
20
+ if ($externalScriptType == "sync" || $externalScriptType == "async"){
21
+ $syncType = $externalScriptType;
22
+ }
23
+ echo $tealium->render("full", true, $syncType);
24
+ }
25
+ else {
26
+ echo $tealium->render("udo");
27
+ }
28
+
29
  echo $helper->getDiagnosticTag($store);
30
  ?>
app/design/frontend/base/default/template/tealium_tags/product.phtml CHANGED
@@ -7,12 +7,21 @@ if (!$helper->isEnabled($store)) {
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
- $_product = $this->getProduct();
11
- $_category = Mage::registry('current_category');
 
12
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
- $tealium = $helper->getTealiumObject($store, $this);
15
- $tealium->pageType("ProductPage");
16
- echo $tealium->render("udo");
17
  echo $helper->getDiagnosticTag($store);
18
  ?>
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
+ $tealium = $helper->init($store, $this, "ProductPage")->
11
+ addCustomDataFromSetup($store, "ProductPage")->
12
+ getTealiumObject();
13
 
14
+ if ($helper->getIsExternalScript($store)){
15
+ $syncType = "sync";
16
+ $externalScriptType = $helper->getExternalScriptType($store);
17
+ if ($externalScriptType == "sync" || $externalScriptType == "async"){
18
+ $syncType = $externalScriptType;
19
+ }
20
+ echo $tealium->render("full", true, $syncType);
21
+ }
22
+ else {
23
+ echo $tealium->render("udo");
24
+ }
25
 
 
 
 
26
  echo $helper->getDiagnosticTag($store);
27
  ?>
app/design/frontend/base/default/template/tealium_tags/product_send.phtml CHANGED
@@ -9,26 +9,36 @@ if (!$helper->isEnabled($store)) {
9
 
10
  $_product_id = $this->getProductId();
11
  $_category_id = $this->getCategoryId();
12
-
13
  $_product = Mage::getModel('catalog/product')->load($_product_id);
14
  $_category = Mage::getModel('catalog/category')->load($_category_id);
15
 
16
- $udo = array(
17
- page_name => $_product->getName(),
18
- page_type => "product send",
19
- product_id => $_product->getId(),
20
- product_sku => $_product->getSku(),
21
- product_name => $_product->getName(),
22
- product_brand => $_product->getBrand(),
23
- product_category => $_category ? $_category->getName() : 'no_category',
24
- product_unit_price => number_format($_product->getSpecialPrice()?:"",2,""),
25
- product_list_price => number_format($_product->getPrice()?:"",2,"")
26
- );
 
 
 
 
27
 
 
 
 
 
 
 
 
 
 
 
 
28
 
29
- $tealium = $helper->getTealiumObject($store, $this);
30
- $tealium->pageType("ProductPage");
31
- $tealium->updateUdo($udo);
32
- echo $tealium->render("udo");
33
  echo $helper->getDiagnosticTag($store);
34
  ?>
9
 
10
  $_product_id = $this->getProductId();
11
  $_category_id = $this->getCategoryId();
 
12
  $_product = Mage::getModel('catalog/product')->load($_product_id);
13
  $_category = Mage::getModel('catalog/category')->load($_category_id);
14
 
15
+ $customData = array();
16
+ $customData["page_name"] = $_product->getName();
17
+ $customData["page_type"] = "product send";
18
+ $customData["product_id"] = $_product->getId();
19
+ $customData["product_sku"] = $_product->getSku();
20
+ $customData["product_name"] = $_product->getName();
21
+ $customData["product_brand"] = $_product->getBrand();
22
+ $customData["product_category"] = $_category ? $_category->getName() : 'no_category';
23
+ $customData["product_unit_price"] = number_format($_product->getSpecialPrice()?:"",2,"");
24
+ $customData["product_list_price"] = number_format($_product->getPrice()?:"",2,"");
25
+
26
+ $tealium = $helper->init($store, $this, "ProductPage")->
27
+ addCustomDataFromSetup($store, "Home")->
28
+ addCustomDataFromObject($customData)->
29
+ getTealiumObject();
30
 
31
+ if ($helper->getIsExternalScript($store)){
32
+ $syncType = "sync";
33
+ $externalScriptType = $helper->getExternalScriptType($store);
34
+ if ($externalScriptType == "sync" || $externalScriptType == "async"){
35
+ $syncType = $externalScriptType;
36
+ }
37
+ echo $tealium->render("full", true, $syncType);
38
+ }
39
+ else {
40
+ echo $tealium->render("udo");
41
+ }
42
 
 
 
 
 
43
  echo $helper->getDiagnosticTag($store);
44
  ?>
app/design/frontend/base/default/template/tealium_tags/seo.phtml CHANGED
@@ -7,8 +7,21 @@ if (!$helper->isEnabled($store)) {
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
- $tealium = $helper->getTealiumObject($store, $this);
11
- $tealium->pageType("Home");
12
- echo $tealium->render("udo");
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  echo $helper->getDiagnosticTag($store);
14
  ?>
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
+ $tealium = $helper->init($store, $this, "Home")->
11
+ addCustomDataFromSetup($store, "Home")->
12
+ getTealiumObject();
13
+
14
+ if ($helper->getIsExternalScript($store)){
15
+ $syncType = "sync";
16
+ $externalScriptType = $helper->getExternalScriptType($store);
17
+ if ($externalScriptType == "sync" || $externalScriptType == "async"){
18
+ $syncType = $externalScriptType;
19
+ }
20
+ echo $tealium->render("full", true, $syncType);
21
+ }
22
+ else {
23
+ echo $tealium->render("udo");
24
+ }
25
+
26
  echo $helper->getDiagnosticTag($store);
27
  ?>
app/design/frontend/base/default/template/tealium_tags/tag_list_index.phtml CHANGED
@@ -17,11 +17,27 @@ if( sizeof($this->getTags()) > 0 ) {
17
  $tags[] = "no-tags";
18
  }
19
 
20
- $tealium = $helper->getTealiumObject($store, $this);
21
- $tealium->pageType("Search");
22
- $tealium->updateUdo("page_type", "tag list");
23
- $tealium->updateUdo("page_name", $this->getLayout()->getBlock('head')->getTitle());
24
- $tealium->updateUdo("search_keyword", $implode('","', $tags));
25
- echo $tealium->render("udo");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  echo $helper->getDiagnosticTag($store);
27
  ?>
17
  $tags[] = "no-tags";
18
  }
19
 
20
+ $customData = array();
21
+ $customData["page_type"] = "tag list";
22
+ $customData["page_name"] = $this->getLayout()->getBlock('head')->getTitle();
23
+ $customData["search_keyword"] = implode('","', $tags);
24
+
25
+ $tealium = $helper->init($store, $this, "Search")->
26
+ addCustomDataFromSetup($store, "Search")->
27
+ addCustomDataFromObject($customData)->
28
+ getTealiumObject();
29
+
30
+ if ($helper->getIsExternalScript($store)){
31
+ $syncType = "sync";
32
+ $externalScriptType = $helper->getExternalScriptType($store);
33
+ if ($externalScriptType == "sync" || $externalScriptType == "async"){
34
+ $syncType = $externalScriptType;
35
+ }
36
+ echo $tealium->render("full", true, $syncType);
37
+ }
38
+ else {
39
+ echo $tealium->render("udo");
40
+ }
41
+
42
  echo $helper->getDiagnosticTag($store);
43
  ?>
app/design/frontend/base/default/template/tealium_tags/tag_product_list.phtml CHANGED
@@ -7,10 +7,26 @@ if (!$helper->isEnabled($store)) {
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
- $tealium = $helper->getTealiumObject($store, $this);
11
- $tealium->pageType("Search");
12
- $tealium->updateUdo("page_type", "tag product list");
13
- $tealium->updateUdo("page_name", $this->getLayout()->getBlock('head')->getTitle());
14
- echo $tealium->render("udo");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  echo $helper->getDiagnosticTag($store);
16
  ?>
7
  return; // not enabled, no javascript inserted
8
  }
9
 
10
+ $customData = array();
11
+ $customData["page_type"] = "tag product list";
12
+ $customData["page_name"] = $this->getLayout()->getBlock('head')->getTitle();
13
+
14
+ $tealium = $helper->init($store, $this, "Search")->
15
+ addCustomDataFromSetup($store, "Search")->
16
+ addCustomDataFromObject($customData)->
17
+ getTealiumObject();
18
+
19
+ if ($helper->getIsExternalScript($store)){
20
+ $syncType = "sync";
21
+ $externalScriptType = $helper->getExternalScriptType($store);
22
+ if ($externalScriptType == "sync" || $externalScriptType == "async"){
23
+ $syncType = $externalScriptType;
24
+ }
25
+ echo $tealium->render("full", true, $syncType);
26
+ }
27
+ else {
28
+ echo $tealium->render("udo");
29
+ }
30
+
31
  echo $helper->getDiagnosticTag($store);
32
  ?>
app/etc/modules/Tealium_Tags.xml CHANGED
File without changes
lib/Tealium/.Tealium.php.swp DELETED
Binary file
lib/Tealium/Errors.log.txt DELETED
File without changes
lib/Tealium/Tealium.php CHANGED
@@ -1,258 +1,218 @@
1
- <?php // Tealium.php Class file
2
 
3
-
4
- // This interface describes the methods available for the class object and usage
5
- interface TealiumInterface {
6
- public function updateUdo($objectOrKey, $value);
7
- // update only part of the UDO currently set in object
8
- // $tealium->updateUdo($objectOrKey, $value)
9
- // to update multiple values: $tealium->updateUDO(array(key1=>"value1", key2=>"value2",...))
10
- // to update one value: $tealium->updateUDO("key", "value")
11
- //
12
- // to update a specific page in the UDO object: $tealium->updateUDO("key", "value", PAGE_TYPE);
13
- // to update a specific page in the UDO object: $tealium->updateUDO(array(key1=>"value1", key2=>"value2",...), null, PAGE_TYPE);
14
-
15
- public function pageType($pageType);
16
- // Set page type for udo to render: $tealium->pageType("Home")
17
 
18
- public function render();
19
- // return UDO and async utag.js call in HTML format
20
- // print $tealium->render();
21
- // alernate: print $tealium;
22
- //
23
- // to print only tag: print $tealium->render("tag");
24
- // to print only UDO: print $tealium->render("udo");
25
- // to print only json object: print $tealium->render("json");
26
-
27
- }
28
- class Tealium implements TealiumInterface
29
 
30
- {
31
-
32
- private $account, $profile, $target, $udo, $access, $udoElements;
33
- public function __construct($accountInit = false, $profileInit = false, $targetInit = false, $pageType = "Home", $data = array(
34
- )) {
35
- $this->access = array(
36
- 'account' => array(
37
- 'type' => "string",
38
- 'read' => true,
39
- 'write' => false
40
- ) ,
41
- 'profile' => array(
42
- 'type' => "string",
43
- 'read' => true,
44
- 'write' => false
45
- ) ,
46
- 'target' => array(
47
- 'type' => "string",
48
- 'read' => true,
49
- 'write' => false
50
- ) ,
51
- 'udo' => array(
52
- 'type' => "array",
53
- 'read' => true,
54
- 'write' => false
55
- ) ,
56
- 'access' => array(
57
- 'type' => "array",
58
- 'read' => false,
59
- 'write' => false
60
- )
61
- );
62
- require 'TealiumInit.php';
63
-
64
- $this->udoElements = $udoElements;
65
- $this->account = $accountInit;
66
- $this->profile = $profileInit;
67
- $this->target = $targetInit;
68
- $this->udo = $this->udoElements[$pageType] ? : ($pageType == null ? $pageType : array(
69
- 'page_type' => $pageType
70
- ));
71
- }
72
- public function __toString() {
73
- return $this->render();
74
  }
75
- public function __call($name, $arguments) {
76
- if ($this->{$name}){
77
- return false;
78
- }
79
- if ($udoElements[$name]) {
80
- $newUdo = array_shift($arguments);
81
- $this->$udo = ($newUdo) ? : $udoElements[$name];
82
- }
83
- else {
84
- $newUdo = array_shift($arguments);
85
- $this->$udo = ($newUdo) ? : array();
86
- }
87
- return $this->render();
88
- }
89
- public function __set($name, $value){
90
- if(!$this->{$name}){
91
- $this->{$name} = $value;
92
- }
93
- elseif($this->{$name} && $this->access[$name]){
94
- if($this->access[$name]['write']){
95
- settype($value, $this->access[$name]['type']);
96
- $this->{$name} = $value;
97
- }
98
- }
99
- elseif($this->{$name}) {
100
- $this->{$name} = $value;
101
- }
102
  }
103
- public function __get($name) {
104
- if ($this->{$name} && $this->access[$name]) {
105
- if ($this->access[$name]['read']){
106
- return (gettype($this->{$name}) == "array") ? json_encode($this->udo, JSON_PRETTY_PRINT) : $this->{$name};
107
- }
108
- else {
109
- return "[private]";
110
- }
111
- }
112
- elseif($this->{$name}) {
113
- return $this->{$name};
114
- }
115
- elseif(!$this->{$name}) {
116
- return "no value set for property: $name";
117
- }
118
  }
119
- public function updateUdo($objectOrKey = "", $value = "", $pageType = null) {
120
- if (is_array($objectOrKey)) {
121
- foreach($objectOrKey as $key => $value) {
122
- if (!$pageType) {
123
- $this->udo[$key] = $value;
124
- }
125
- else {
126
- $this->udoElements[$pageType][$key] = $value;
127
- }
128
- }
129
- }
130
- elseif ($objectOrKey != "") {
131
- if (!$pageType) {
132
- $this->udo[$objectOrKey] = $value;
133
- }
134
- else {
135
- $this->udoElements[$pageType][$objectOrKey] = $value;
136
- }
137
- }
138
- return $this->udo;
139
  }
140
- public function pageType($pageType = "Home") {
141
- $this->udo = $this->udoElements[$pageType] ? : array(
142
- 'page_type' => $pageType
143
- );
 
 
 
 
 
 
 
 
 
144
  }
145
- public function render($type = null) {
146
- // Basic JSON object of all variables in the default data layer`
147
- $udoString = json_encode($this->udo);
148
- // Render UDO object in javaScript
149
- $udo = <<<EOD
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
  <!-- Tealium Universal Data Object / Data Layer -->
151
  <script type="text/javascript">
152
- utag_data = $udoString;
153
  </script>
154
  <!-- ****************************************** -->
155
  EOD;
156
- // Render Tealium tag in javaScript
157
- $tag = <<<EOD
158
- <!-- Async Load of Tealium utag.js library -->
159
- <script type="text/javascript">
160
  (function(a,b,c,d){
161
  a='//tags.tiqcdn.com/utag/$this->account/$this->profile/$this->target/utag.js';
162
  b=document;c='script';d=b.createElement(c);d.src=a;d.type='text/java'+c;d.
163
  async=true;
164
  a=b.getElementsByTagName(c)[0];a.parentNode.insertBefore(d,a);
165
  })();
 
 
 
 
 
166
  </script>
167
  <!-- ************************************* -->
168
  EOD;
169
- // Determine what code to return
170
- if ($this->account && $this->profile && $this->target) {
171
- if ($type == "tag") {
172
- $renderedCode = $tag;
173
- }
174
- elseif ($type == "udo") {
175
- $renderedCode = $udo;
176
- }
177
- elseif ($type == "json") {
178
- $renderedCode = $udoString;
179
- }
180
- else {
181
- $renderedCode = $udo . "\n" . $tag;
182
- }
183
- }
184
- else {
185
- if ($this->udo != null) {
186
- $renderedCode = $udo;
187
- }
188
- else {
189
- // Render instructions if Tealium Object was not used correctly
190
- $renderedCode = <<<EOD
191
  <!-- Tealium Universal Data Object / Data Layer -->
192
  <!-- Account, profile, or environment was not declared in
193
  object Tealium(\$account, \$profile, \$target, \$pageType) -->
194
  EOD;
195
- }
196
- }
197
- return $renderedCode;
198
  }
 
 
 
199
  }
 
200
  // Open source alternative for json_encode for PHP < 5.4 ***********************************************
201
- if (!function_exists('json_encode')) {
202
- function json_encode($a = false)
203
- {
204
- if (is_null($a)) return 'null';
205
- if ($a === false) return 'false';
206
- if ($a === true) return 'true';
207
- if (is_scalar($a)) {
208
- if (is_float($a)) {
209
- // Always use "." for floats.
210
- return floatval(str_replace(",", ".", strval($a)));
211
- }
212
- if (is_string($a)) {
213
- static $jsonReplaces = array(
214
- array(
215
- "\\",
216
- "/",
217
- "\n",
218
- "\t",
219
- "\r",
220
- "\b",
221
- "\f",
222
- '"'
223
- ) ,
224
- array(
225
- '\\\\',
226
- '\\/',
227
- '\\n',
228
- '\\t',
229
- '\\r',
230
- '\\b',
231
- '\\f',
232
- '\"'
233
- )
234
- );
235
- return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';
236
- }
237
- else return $a;
238
- }
239
- $isList = true;
240
- for ($i = 0, reset($a); $i < count($a); $i++, next($a)) {
241
- if (key($a) !== $i) {
242
- $isList = false;
243
- break;
244
- }
245
- }
246
- $result = array();
247
- if ($isList) {
248
- foreach($a as $v) $result[] = json_encode($v);
249
- return '[' . join(',', $result) . ']';
250
- }
251
- else {
252
- foreach($a as $k => $v) $result[] = json_encode($k) . ':' . json_encode($v);
253
- return '{' . join(',', $result) . '}';
254
- }
 
 
255
  }
 
256
  }
257
  // ***********************************************************************************************************
258
 
1
+ <?php
2
 
3
+ class Tealium {
4
+
5
+ private $account;
6
+ private $profile;
7
+ private $target;
8
+ private $udo;
9
+ private $udoElements;
10
+ private $customUdo;
11
+
12
+ public function __construct( $accountInit = false,
13
+ $profileInit = false,
14
+ $targetInit = false,
15
+ $pageType = "Home",
16
+ &$data = array()) {
17
 
18
+ require_once 'TealiumInit.php';
 
 
 
 
 
 
 
 
 
 
19
 
20
+ $this->udoElements = $udoElements;
21
+ $this->account = $accountInit;
22
+ $this->profile = $profileInit;
23
+ $this->target = $targetInit;
24
+ if( !($this->udo = $this->udoElements[$pageType]) && $pageType != null ){
25
+ $this->udo = array( 'page_type' => $pageType );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  }
27
+ }
28
+
29
+ public function updateUdo($objectOrKey = "", $value = "") {
30
+
31
+ $udoObject = $this->udo;
32
+ if ($udoObject instanceof Closure) {
33
+ $udo = $udoObject();
34
+ } elseif (is_array ( $udoObject )) {
35
+ $udo = $udoObject;
36
+ } else {
37
+ $udo = "{}";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  }
39
+
40
+ if ($objectOrKey instanceof Closure) {
41
+ $updatedUdo = $objectOrKey();
42
+ } elseif (is_array ( $objectOrKey )) {
43
+ $updatedUdo = $objectOrKey();
44
+ } else {
45
+ $updatedUdo = "{}";
 
 
 
 
 
 
 
 
46
  }
47
+
48
+ if ( is_array( $updatedUdo ) ) {
49
+ foreach ( $updatedUdo as $objectKey => $objectValue ) {
50
+ $udo[$objectKey] = $objectValue;
51
+ }
52
+ } elseif ($objectOrKey != "") {
53
+ $udo[$objectOrKey] = $value;
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  }
55
+
56
+ $this->udo = $udo;
57
+
58
+ return $this->udo;
59
+ }
60
+
61
+ public function setCustomUdo($udo){
62
+ $this->customUdo = $udo;
63
+ }
64
+
65
+ public function pageType($pageType = "Home") {
66
+ if( !($this->udo = $this->udoElements[$pageType]) && $pageType != null ){
67
+ $this->udo = array( 'page_type' => $pageType );
68
  }
69
+ }
70
+ public function render($type = null, $external = false, $sync = "sync") {
71
+
72
+ if ( !($_REQUEST ["tealium_api"] && $_REQUEST ["tealium_api"] == "true") && $external) {
73
+ $type = "udo";
74
+ $is_async = ($sync == "sync") ? "" : "async";
75
+ $udo = "<script type=\"text/javascript\" src=\"";
76
+ $udo .= $_SERVER["REQUEST_URI"];
77
+ if ($_SERVER["QUERY_STRING"]){
78
+ $udo .= "&";
79
+ }
80
+ else {
81
+ $udo .= "?";
82
+ }
83
+ $udo .= "tealium_api=true\" $is_async></script>";
84
+ }
85
+ else {
86
+ if (isset($this->customUdo)){
87
+ $this->updateUdo($this->customUdo);
88
+ }
89
+ $udoObject = $this->udo;
90
+ if ($udoObject instanceof Closure) {
91
+ $udoJson = json_encode ( $udoObject() );
92
+ } elseif (is_array ( $udoObject )) {
93
+ $udoJson = json_encode ( $udoObject );
94
+ } else {
95
+ $udoJson = "{}";
96
+ }
97
+ $udoJs = "utag_data = $udoJson;";
98
+
99
+ $udo = <<<EOD
100
  <!-- Tealium Universal Data Object / Data Layer -->
101
  <script type="text/javascript">
102
+ $udoJs
103
  </script>
104
  <!-- ****************************************** -->
105
  EOD;
106
+ }
107
+
108
+ // Render Tealium tag in javaScript
109
+ $insert_tag = <<<EOD
110
  (function(a,b,c,d){
111
  a='//tags.tiqcdn.com/utag/$this->account/$this->profile/$this->target/utag.js';
112
  b=document;c='script';d=b.createElement(c);d.src=a;d.type='text/java'+c;d.
113
  async=true;
114
  a=b.getElementsByTagName(c)[0];a.parentNode.insertBefore(d,a);
115
  })();
116
+ EOD;
117
+ $tag = <<<EOD
118
+ <!-- Async Load of Tealium utag.js library -->
119
+ <script type="text/javascript">
120
+ $insert_tag
121
  </script>
122
  <!-- ************************************* -->
123
  EOD;
124
+ if ($_REQUEST["tealium_api"] && $_REQUEST["tealium_api"] == "true") {
125
+ $tag = $insert_tag . "\n//TEALIUM_END\n";
126
+ $udo = "//TEALIUM_START\n" . $udoJs;
127
+ }
128
+
129
+ // Determine what code to return
130
+ if ($this->account && $this->profile && $this->target) {
131
+ if ($type == "tag") {
132
+ $renderedCode = $tag;
133
+ } elseif ($type == "udo") {
134
+ $renderedCode = $udo;
135
+ } elseif ($type == "json") {
136
+ $renderedCode = $udoJson;
137
+ } else {
138
+ $renderedCode = $udo . "\n" . $tag;
139
+ }
140
+ } else {
141
+ if ($this->udo != null) {
142
+ $renderedCode = $udo;
143
+ } else {
144
+ // Render instructions if Tealium Object was not used correctly
145
+ $renderedCode = <<<EOD
146
  <!-- Tealium Universal Data Object / Data Layer -->
147
  <!-- Account, profile, or environment was not declared in
148
  object Tealium(\$account, \$profile, \$target, \$pageType) -->
149
  EOD;
150
+ }
 
 
151
  }
152
+
153
+ return $renderedCode;
154
+ }
155
  }
156
+
157
  // Open source alternative for json_encode for PHP < 5.4 ***********************************************
158
+ if (! function_exists ( 'json_encode' )) {
159
+ function json_encode($a = false) {
160
+ if (is_null ( $a ))
161
+ return 'null';
162
+ if ($a === false)
163
+ return 'false';
164
+ if ($a === true)
165
+ return 'true';
166
+ if (is_scalar ( $a )) {
167
+ if (is_float ( $a )) {
168
+ // Always use "." for floats.
169
+ return floatval ( str_replace ( ",", ".", strval ( $a ) ) );
170
+ }
171
+ if (is_string ( $a )) {
172
+ static $jsonReplaces = array (
173
+ array (
174
+ "\\",
175
+ "/",
176
+ "\n",
177
+ "\t",
178
+ "\r",
179
+ "\b",
180
+ "\f",
181
+ '"'
182
+ ),
183
+ array (
184
+ '\\\\',
185
+ '\\/',
186
+ '\\n',
187
+ '\\t',
188
+ '\\r',
189
+ '\\b',
190
+ '\\f',
191
+ '\"'
192
+ )
193
+ );
194
+ return '"' . str_replace ( $jsonReplaces [0], $jsonReplaces [1], $a ) . '"';
195
+ } else
196
+ return $a;
197
+ }
198
+ $isList = true;
199
+ for($i = 0, reset ( $a ); $i < count ( $a ); $i ++, next ( $a )) {
200
+ if (key ( $a ) !== $i) {
201
+ $isList = false;
202
+ break;
203
+ }
204
+ }
205
+ $result = array ();
206
+ if ($isList) {
207
+ foreach ( $a as $v )
208
+ $result [] = json_encode ( $v );
209
+ return '[' . join ( ',', $result ) . ']';
210
+ } else {
211
+ foreach ( $a as $k => $v )
212
+ $result [] = json_encode ( $k ) . ':' . json_encode ( $v );
213
+ return '{' . join ( ',', $result ) . '}';
214
  }
215
+ }
216
  }
217
  // ***********************************************************************************************************
218
 
lib/Tealium/TealiumAPI.php DELETED
@@ -1,70 +0,0 @@
1
- <?php
2
- include 'Tealium.php';
3
-
4
- // Each action corresponds to a method and renders accordingly.
5
- // if attempting to use an action not defined in this array it will display the help output
6
- // as long as "help => true" is set, "help => false" will only return "action not found"
7
-
8
- $actions = array(
9
- 'render' => true,
10
- 'tag' => true,
11
- 'udo' => true,
12
- 'help' => true
13
- ); // setting any of these to false will disable that action
14
-
15
- $action = ($_REQUEST['action'] && preg_match('/[.\-\w\d]+/',$_REQUEST['action'])) ? $_REQUEST['action'] : "help";
16
- $account = ($_REQUEST['account'] && preg_match('/[.\-\w\d]+/',$_REQUEST['account'])) ? $_REQUEST['account'] : false;
17
- $profile = ($_REQUEST['profile'] && preg_match('/[.\-\w\d]+/',$_REQUEST['profile'])) ? $_REQUEST['profile'] : false;
18
- $target = ($_REQUEST['target'] && preg_match('/[.\-\w\d]+/',$_REQUEST['target'])) ? $_REQUEST['target'] : false;
19
- $pageType = ($_REQUEST['page_type'] && preg_match('/[.\-\w\d]+/',$_REQUEST['page_type'])) ? $_REQUEST['page_type'] : "Home";
20
- echo $action;
21
- if ($actions[$action]) {
22
- header('Content-type: text/html');
23
- $action();
24
- }
25
- else {
26
- header('Content-type: text/html');
27
- if ($action['help']){
28
- help();
29
- }
30
- else {
31
- echo "action not found";
32
- }
33
- }
34
- function render()
35
- {
36
- global $account, $profile, $target, $pageType;
37
- $tealium = new Tealium($account, $profile, $target, $pageType);
38
- echo $tealium;
39
- }
40
- function tag()
41
- {
42
- global $account, $profile, $target;
43
- $tealium = new Tealium($account, $profile, $target, null);
44
- echo $tealium;
45
- }
46
- function udo()
47
- {
48
- global $pageType;
49
- $tealium = new Tealium(null, null, null, $pageType);
50
- echo $tealium->udo;
51
- }
52
- function help()
53
- {
54
- echo <<<EOD
55
- <!-- Tealium not implemented correctly
56
- send GET/POST with following parameters:
57
- action:
58
- render -> will return UDO and async tag - requires account,profile,target,page_type -,
59
- tag -> will return async tag only - requires account,profile,target -,
60
- udo -> will reyrn UDO only - requires page_type -,
61
-
62
- acount: name of tealium account (.-A-Z1-10),
63
- profile: name of tealium profile (.-A-Z1-10),
64
- target: target environment [dev,qa,prod,custom] (.-A-Z1-10)
65
- page_type: UDO page_type to return [Home, Search, Category, ...] (.-A-Z1-10)
66
- -->
67
-
68
- EOD;
69
- }
70
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/Tealium/TealiumCustomData.php ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class TealiumExtendData {
4
+ private static $store;
5
+ private static $page;
6
+
7
+ public static function setStore($store){
8
+ TealiumExtendData::$store = $store;
9
+ }
10
+
11
+ public static function setPage($page){
12
+ TealiumExtendData::$page = $page;
13
+ }
14
+
15
+ public function getHome(){
16
+ $store = TealiumExtendData::$store;
17
+ $page = TealiumExtendData::$page;
18
+
19
+ $outputArray = array();
20
+ //$outputArray['custom_key'] = "value";
21
+
22
+ return $outputArray;
23
+ }
24
+
25
+ public function getSearch(){
26
+ $store = TealiumExtendData::$store;
27
+ $page = TealiumExtendData::$page;
28
+
29
+ $outputArray = array();
30
+ //$outputArray['custom_key'] = "value";
31
+
32
+ return $outputArray;
33
+ }
34
+
35
+ public function getCategory(){
36
+ $store = TealiumExtendData::$store;
37
+ $page = TealiumExtendData::$page;
38
+
39
+ $outputArray = array();
40
+ //$outputArray['custom_key'] = "value";
41
+
42
+ return $outputArray;
43
+ }
44
+
45
+ public function getProductPage(){
46
+ $store = TealiumExtendData::$store;
47
+ $page = TealiumExtendData::$page;
48
+
49
+ $outputArray = array();
50
+ //$outputArray['custom_key'] = "value";
51
+ // make sure any product values are in an array
52
+
53
+ return $outputArray;
54
+ }
55
+
56
+ public function getCartPage() {
57
+ $store = TealiumExtendData::$store;
58
+ $page = TealiumExtendData::$page;
59
+
60
+ $outputArray = array();
61
+ //$outputArray['custom_key'] = "value";
62
+ // make sure any product values are in an array
63
+
64
+ return $outputArray;
65
+ }
66
+
67
+ public function getOrderConfirmation(){
68
+ $store = TealiumExtendData::$store;
69
+ $page = TealiumExtendData::$page;
70
+
71
+ $outputArray = array();
72
+ //$outputArray['custom_key'] = "value";
73
+ // make sure any product values are in an array
74
+
75
+ return $outputArray;
76
+ }
77
+
78
+ public function getCustomerData(){
79
+ $store = TealiumExtendData::$store;
80
+ $page = TealiumExtendData::$page;
81
+
82
+ $outputArray = array();
83
+ //$outputArray['custom_key'] = "value";
84
+
85
+ return $outputArray;
86
+ }
87
+ }
88
+
89
+
90
+ TealiumExtendData::setStore($data["store"]);
91
+ TealiumExtendData::setPage($data["page"]);
92
+
93
+
94
+ $udoElements = array(
95
+ 'Home' => function(){
96
+ $tealiumData = new TealiumExtendData();
97
+ return $tealiumData->getHome();
98
+ },
99
+ 'Search' => function(){
100
+ $tealiumData = new TealiumExtendData();
101
+ return $tealiumData->getSearch();
102
+ },
103
+ 'Category' => function(){
104
+ $tealiumData = new TealiumExtendData();
105
+ return $tealiumData->getCategory();
106
+ },
107
+ 'ProductPage' => function(){
108
+ $tealiumData = new TealiumExtendData();
109
+ return $tealiumData->getProductPage();
110
+ },
111
+ 'Cart' => function(){
112
+ $tealiumData = new TealiumExtendData();
113
+ return $tealiumData->getCartPage();
114
+ },
115
+ 'Confirmation' => function(){
116
+ $tealiumData = new TealiumExtendData();
117
+ return $tealiumData->getOrderConfirmation();
118
+ },
119
+ 'Customer' => function(){
120
+ $tealiumData = new TealiumExtendData();
121
+ return $tealiumData->getCustomerData();
122
+ }
123
+ );
124
+
125
+
126
+ ?>
127
+
lib/Tealium/TealiumInit.php CHANGED
@@ -1,241 +1,301 @@
1
  <?php
2
  // TealiumInit.php var definition file
3
  // Replace $STRING or $ARRAY with your server side variable reference unique to that key
4
- $store = $data["store"];
5
- $page = $data["page"];
6
- $STRING = "";
7
- $ARRAY = array();
8
 
9
- //define variables from magento *************************************************************************
10
- $customer_id = "n/a";
11
- $customer_email = "n/a";
12
- $customer_type = "n/a";
13
- $ids = array();
14
- $skus = array();
15
- $names = array();
16
- $qtys = array();
17
- $prices = array();
18
- $discounts = array();
19
- $discount_quantity = array();
20
- $checkout_ids = array();
21
- $checkout_skus = array();
22
- $checkout_names = array();
23
- $checkout_qtys = array();
24
- $checkout_prices = array();
25
- $section = "n/a";
26
- $category = "n/a";
27
- $subcategory = "n/a";
28
- $_category = null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
 
30
- if ($page->getCurrentCategory()) {
31
- $_category = $page->getCurrentCategory();
32
- $parent = false;
33
- $grandparent = false;
34
-
35
- // check for parent and grandparent
36
- if ($_category->getParentId()) {
37
- $parent = Mage::getModel('catalog/category')->load($_category->getParentId());
38
-
39
- if ($parent->getParentId()) {
40
- $grandparent = Mage::getModel('catalog/category')->load($parent->getParentId());
41
- }
42
- }
43
-
44
- // Set the section and subcategory with parent and grandparent
45
- if ($grandparent) {
46
- $section = $grandparent->getName();
47
- $category = $parent->getName();
48
- $subcategory = $_category->getName();
49
- } elseif ($parent) {
50
- $section = $parent->getName();
51
- $category = $_category->getName();
52
- } else {
53
- $category = $_category->getName();
54
- }
55
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
 
57
- if (Mage::helper('checkout')) {
58
- $quote = Mage::helper('checkout')->getQuote();
59
- foreach ($quote->getAllVisibleItems() as $item) {
60
- $checkout_ids[] = $item->getProductId();
61
- $checkout_skus[] = $item->getSku();
62
- $checkout_names[] = $item->getName();
63
- $checkout_qtys[] = number_format($item->getQty(), 0, ".", "");
64
- $checkout_prices[] = number_format($item->getPrice(), 2, ".", "");
65
- }
66
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
 
68
- if (Mage::getSingleton('customer/session')->isLoggedIn()) {
69
- $customer = Mage::getSingleton('customer/session')->getCustomer();
70
- $customer_id = $customer->getEntityId();
71
- $customer_email = $customer->getEmail();
72
- $groupId = $customer->getGroupId();
73
- $customer_type = Mage::getModel('customer/group')->load($groupId)->getCode();
74
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
 
76
- if (Mage::getModel('sales/order')) {
77
- $order = Mage::getModel('sales/order')->loadByIncrementId($page->getOrderId());
78
- foreach ($order->getAllVisibleItems() as $item) {
79
-
80
- $ids[] = $item->getProductId();
81
- $skus[] = $item->getSku();
82
- $names[] = $item->getName();
83
- $qtys[] = number_format($item->getQtyOrdered(), 0, ".", "");
84
- $prices[] = number_format($item->getPrice(), 2, ".", "");
85
- $discount = number_format($item->getDiscountAmount(), 2, ".", "");
86
- $discounts[] = $discount;
87
- $applied_rules = explode(",", $item->getAppliedRuleIds());
88
- $discount_object = array();
89
- foreach ($applied_rules as $rule) {
90
- $quantity = number_format(Mage::getModel('salesrule/rule')->load($rule)->getDiscountQty(), 0, ".", "");
91
- $amount = number_format(Mage::getModel('salesrule/rule')->load($rule)->getDiscountAmount(), 2, ".", "");
92
- $type = Mage::getModel('salesrule/rule')->load($rule)->getSimpleAction();
93
- $discount_object[] = array("rule" =>$rule,
94
- "quantity" =>$quantity,
95
- "amount" =>$amount,
96
- "type" =>$type);
97
- }
98
- $discount_quantity[] = array("product_id" => $item->getProductId(),
99
- "total_discount" => $discount,
100
- "discounts" => $discount_object);
101
-
102
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  }
104
- //**************************************************************************************************
 
 
 
 
105
 
106
  $udoElements = array(
107
- 'Home' => array(
108
- 'site_region' => Mage::app()->getLocale()->getLocaleCode() ?: "", //"uk"
109
- 'site_currency' => $store->getCurrentCurrencyCode() ?: "", //"GBP"
110
- 'page_name' => $page->getLayout()->getBlock('head')->getTitle() ?: "", //"Home"
111
- 'page_type' => $page->getTealiumType() ?: "" //"home"
112
- ),
113
- 'Search' => array(
114
- 'site_region' => Mage::app()->getLocale()->getLocaleCode() ?: "", //"uk"
115
- 'site_currency' => $store->getCurrentCurrencyCode() ?: "", //"GBP"
116
- 'page_name' => "search results", //"results"
117
- 'page_type' => "search", //"search"
118
- 'search_results' => $page->getResultCount() ?: "", //"234"
119
- 'search_keyword' => $page->helper('catalogsearch')->getEscapedQueryText() ?: "" //"shorts"
120
- ),
121
- 'Category' => array(
122
- 'site_region' => Mage::app()->getLocale()->getLocaleCode() ?: "", //"uk",
123
- 'site_currency' => $store->getCurrentCurrencyCode() ?: "", //"GBP",
124
- 'page_name' => $_category ? ($_category->getName() ?: "") : "", //"shorts",
125
- 'page_type' => "category", //"category",
126
- 'page_section_name' => $section ?: "", //"Men's",
127
- 'page_category_name' => $category ?: "", //"Clothing",
128
- 'page_subcategory_name' => $subcategory ?: "" //"Shorts"
129
- ),
130
- 'ProductPage' => array(
131
- 'site_region' => Mage::app()->getLocale()->getLocaleCode() ?: "", //"uk",
132
- 'site_currency' => $store->getCurrentCurrencyCode() ?: "", //"GBP",
133
- 'page_name' => $page->getProduct() ? ($page->getProduct()->getName() ?: "") : "", //"Dr. Denim Chase Check Cargo Short",
134
- 'page_type' => "product", //"product",
135
- 'page_section_name' => $STRING ?: "", //"Men's",
136
- 'page_category_name' => $STRING ?: "", //"Clothing",
137
- 'page_subcategory_name' => $STRING ?: "", //"Shorts",
138
- // THE FOLLOWING NEEDS TO BE MATCHED ARRAYS (SAME NUMBER OF ELEMENTS)
139
- 'product_id' => $page->getProduct() ? (array(
140
- $page->getProduct()->getId()
141
- ) ?: array(
142
- ""
143
- )) : array(
144
- ""
145
- ), //array("5225415241111"),
146
- 'product_sku' => $page->getProduct() ? (array(
147
- $page->getProduct()->getSku()
148
- ) ?: array(
149
- ""
150
- )) : array(
151
- ""
152
- ), //array("42526"),
153
- 'product_name' => $page->getProduct() ? (array(
154
- $page->getProduct()->getName()
155
- ) ?: array(
156
- ""
157
- )) : array(
158
- ""
159
- ), //array("Dr. Denim Chase Check Cargo Short"),
160
- 'product_brand' => $page->getProduct() ? (array(
161
- $page->getProduct()->getBrand()
162
- ) ?: array(
163
- ""
164
- )) : array(
165
- ""
166
- ), //array("Dr. Denim"),
167
- 'product_category' => array(
168
- Mage::registry('current_category') ? Mage::registry('current_category')->getName() : 'no_category'
169
- ) ?: array(
170
- ""
171
- ), //array("Shorts"),
172
- 'product_unit_price' => $page->getProduct() ? (array(
173
- number_format($page->getProduct()->getSpecialPrice(), 2)
174
- ) ?: array(
175
- ""
176
- )) : array(
177
- ""
178
- ), //array("11.99"),
179
- 'product_list_price' => $page->getProduct() ? (array(
180
- number_format($page->getProduct()->getPrice(), 2)
181
- ) ?: array(
182
- ""
183
- )) : array(
184
- ""
185
- ) //array("59.00")
186
- ),
187
- 'Cart' => array(
188
- 'site_region' => Mage::app()->getLocale()->getLocaleCode() ?: "", //"uk",
189
- 'site_currency' => $store->getCurrentCurrencyCode() ?: "", //"GBP",
190
- 'page_name' => $page->getLayout()->getBlock('head')->getTitle() ?: "", //"cart",
191
- 'page_type' => "checkout", //"checkout",
192
- // THE FOLLOWING NEEDS TO BE MATCHED ARRAYS (SAME NUMBER OF ELEMENTS)
193
- 'product_id' => $checkout_ids ?: array(), //array("5225415241111","5421423520051"),
194
- 'product_sku' => $checkout_skus ?: array(), //array("42526","24672"),
195
- 'product_name' => $checkout_names ?: array(), //array("Dr. Denim Chase Check Cargo Short","Renewal Denim Shirt"),
196
- 'product_brand' => $ARRAY ?: array(), //array("Dr. Denim",""),
197
- 'product_category' => $ARRAY ?: array(), //array("Shorts","Shirts"),
198
- 'product_quantity' => $checkout_qtys ?: array(), //array("1","1"),
199
- 'product_unit_price' => $ARRAY ?: array(), //array("1//array("11.99","37.00"),
200
- 'product_list_price' => $checkout_prices ?: array() //array("59.00","")
201
- ),
202
- 'Confirmation' => array(
203
- 'site_region' => Mage::app()->getLocale()->getLocaleCode() ?: "", //"uk",
204
- 'site_currency' => $store->getCurrentCurrencyCode() ?: "", //"GBP",
205
- 'page_name' => "cart success", //"confirmation",
206
- 'page_type' => "cart", //"checkout",
207
- 'order_id' => $order->getIncrementId() ?: "", //"12345678",
208
- 'order_discount' => number_format($order->getDiscountAmount(), 2, ".", "") ?: "", //"0.00",
209
- 'order_subtotal' => number_format($order->getSubtotal(), 2, ".", "") ?: "", //"70.99",
210
- 'order_shipping' => number_format($order->getShippingAmount(), 2, ".", "") ?: "", //"10.00",
211
- 'order_tax' => number_format($order->getTaxAmount(), 2, ".", "") ?: "", //"5.00",
212
- 'order_payment_type' => $order->getPayment() ? $order->getPayment()->getMethodInstance()->getTitle() : 'unknown', //"visa",
213
- 'order_total' => number_format($order->getGrandTotal(), 2, ".", "") ?: "", //"85.99",
214
- 'order_currency' => $order->getOrderCurrencyCode() ?: "", //"gbp",
215
- 'customer_id' => $customer_id ?: "", //"12345678",
216
- 'customer_email' => $order->getCustomerEmail() ?: "", //"customer@email.com"
217
- // THE FOLLOWING NEEDS TO BE MATCHED ARRAYS (SAME NUMBER OF ELEMENTS)
218
- 'product_id' => $ids ?: array(), //array("5225415241111","5421423520051"),
219
- 'product_sku' => $skus ?: array(), //array("42526","24672"),
220
- 'product_name' => $names ?: array(), //array("Dr. Denim Chase Check Cargo Short","Renewal Denim Shirt"),
221
- 'product_brand' => $ARRAY ?: array(), //array("Dr. Denim",""),
222
- 'product_category' => $ARRAY ?: array(), //array("Shorts","Shirts"),
223
- 'product_unit_price' => $ARRAY ?: array(), //array("11.99","37.00"),
224
- 'product_list_price' => $prices ?: array(), //array("59.00",""),
225
- 'product_quantity' => $qtys ?: array(), //array("1","1"),
226
- 'product_discount' => $discounts ?: array(), //array("0.00","0.00"),
227
- 'product_discounts' => $discount_quantity ?: array()
228
- ),
229
- 'Customer' => array(
230
- 'site_region' => Mage::app()->getLocale()->getLocaleCode() ?: "",
231
- 'site_currency' => $store->getCurrentCurrencyCode() ?: "",
232
- 'page_name' => $page->getLayout()->getBlock('head')->getTitle() ?: "",
233
- 'page_type' => $page->getTealiumType() ?: "",
234
- 'customer_id' => $customer_id ?: "",
235
- 'customer_email' => $customer_email ?: "",
236
- 'customer_type' => $customer_type ?: ""
237
- )
238
  );
239
 
 
240
  ?>
241
 
1
  <?php
2
  // TealiumInit.php var definition file
3
  // Replace $STRING or $ARRAY with your server side variable reference unique to that key
 
 
 
 
4
 
5
+ class TealiumData {
6
+ private static $store;
7
+ private static $page;
8
+
9
+ public static function setStore($store){
10
+ TealiumData::$store = $store;
11
+ }
12
+
13
+ public static function setPage($page){
14
+ TealiumData::$page = $page;
15
+ }
16
+
17
+ public function getHome(){
18
+ $store = TealiumData::$store;
19
+ $page = TealiumData::$page;
20
+
21
+ $outputArray = array();
22
+ $outputArray['site_region'] = Mage::app()->getLocale()->getLocaleCode() ?: "";
23
+ $outputArray['site_currency'] = $store->getCurrentCurrencyCode() ?: "";
24
+ $outputArray['page_name'] = $page->getLayout()->getBlock('head')->getTitle() ?: "";
25
+ $outputArray['page_type'] = $page->getTealiumType() ?: "";
26
+
27
+ return $outputArray;
28
+ }
29
+
30
+ public function getSearch(){
31
+ $store = TealiumData::$store;
32
+ $page = TealiumData::$page;
33
+
34
+ $outputArray = array();
35
+ $outputArray['site_region'] = Mage::app()->getLocale()->getLocaleCode() ?: "";
36
+ $outputArray['site_currency'] = $store->getCurrentCurrencyCode() ?: "";
37
+ $outputArray['page_name'] = "search results";
38
+ $outputArray['page_type'] = "search";
39
+ $outputArray['search_results'] = $page->getResultCount() . "" ?: "";
40
+ $outputArray['search_keyword'] = $page->helper('catalogsearch')->getEscapedQueryText() ?: "";
41
 
42
+ return $outputArray;
43
+ }
44
+
45
+ public function getCategory(){
46
+ $store = TealiumData::$store;
47
+ $page = TealiumData::$page;
48
+
49
+ if ($page->getCurrentCategory()) {
50
+ $_category = $page->getCurrentCategory();
51
+ $parent = false;
52
+ $grandparent = false;
53
+
54
+ // check for parent and grandparent
55
+ if ($_category->getParentId()) {
56
+ $parent = Mage::getModel('catalog/category')->load($_category->getParentId());
57
+
58
+ if ($parent->getParentId()) {
59
+ $grandparent = Mage::getModel('catalog/category')->load($parent->getParentId());
60
+ }
61
+ }
62
+
63
+ // Set the section and subcategory with parent and grandparent
64
+ if ($grandparent) {
65
+ $section = $grandparent->getName();
66
+ $category = $parent->getName();
67
+ $subcategory = $_category->getName();
68
+ } elseif ($parent) {
69
+ $section = $parent->getName();
70
+ $category = $_category->getName();
71
+ } else {
72
+ $category = $_category->getName();
73
+ }
74
+ }
75
+
76
+ $outputArray = array();
77
+ $outputArray['site_region'] = Mage::app()->getLocale()->getLocaleCode() ?: "";
78
+ $outputArray['site_currency'] = $store->getCurrentCurrencyCode() ?: "";
79
+ $outputArray['page_name'] = $_category ? ($_category->getName() ?: "") : "";
80
+ $outputArray['page_type'] = "category";
81
+ $outputArray['page_section_name'] = $section ?: "";
82
+ $outputArray['page_category_name'] = $category ?: "";
83
+ $outputArray['page_subcategory_name'] = $subcategory ?: "";
84
+
85
+ return $outputArray;
86
+ }
87
+
88
+ public function getProductPage(){
89
+ $store = TealiumData::$store;
90
+ $page = TealiumData::$page;
91
+
92
+ $outputArray = array();
93
+ $outputArray['site_region'] = Mage::app()->getLocale()->getLocaleCode() ?: "";
94
+ $outputArray['site_currency'] = $store->getCurrentCurrencyCode() ?: "";
95
+ $outputArray['page_name'] = $_category ? ($_category->getName() ?: "") : "";
96
+ $outputArray['page_type'] = "product";
97
+
98
+ // THE FOLLOWING NEEDS TO BE MATCHED ARRAYS (SAME NUMBER OF ELEMENTS)
99
+ if ( $page->getProduct() ) {
100
+ if ( !($outputArray['product_id'] = array( $page->getProduct()->getId() )) ){
101
+ $outputArray['product_id'] = array();
102
+ }
103
+ if ( !($outputArray['product_sku'] = array( $page->getProduct()->getSku() )) ){
104
+ $outputArray['product_sku'] = array();
105
+ }
106
+ if ( !($outputArray['product_name'] = array( $page->getProduct()->getName() )) ){
107
+ $outputArray['product_name'] = array();
108
+ }
109
+ if ( !($outputArray['product_brand'] = array( $page->getProduct()->getBrand() )) ){
110
+ $outputArray['product_brand'] = array();
111
+ }
112
+ if ( !($outputArray['product_unit_price'] = array( number_format($page->getProduct()->getSpecialPrice(), 2) )) ){
113
+ $outputArray['product_unit_price'] = array();
114
+ }
115
+ if ( !($outputArray['product_list_price'] = array( number_format($page->getProduct()->getPrice(), 2) )) ){
116
+ $outputArray['product_list_price'] = array();
117
+ }
118
+ }
119
+ else {
120
+ $outputArray['product_id'] = array();
121
+ $outputArray['product_sku'] = array();
122
+ $outputArray['product_name'] = array();
123
+ $outputArray['product_brand'] = array();
124
+ $outputArray['product_unit_price'] = array();
125
+ $outputArray['product_list_price'] = array();
126
+ }
127
 
128
+ if ( Mage::registry('current_category') ){
129
+ if ( Mage::registry('current_category')->getName() ){
130
+ $outputArray['product_category'] = array(Mage::registry('current_category')->getName());
131
+ }
132
+ else {
133
+ $outputArray['product_category'] = array();
134
+ }
135
+ }
136
+ else {
137
+ $outputArray['product_category'] = array();
138
+ }
139
+
140
+ return $outputArray;
141
+ }
142
+
143
+ public function getCartPage() {
144
+ $store = TealiumData::$store;
145
+ $page = TealiumData::$page;
146
+
147
+ if (Mage::helper('checkout')) {
148
+ $quote = Mage::helper('checkout')->getQuote();
149
+ foreach ($quote->getAllVisibleItems() as $item) {
150
+ $checkout_ids[] = $item->getProductId();
151
+ $checkout_skus[] = $item->getSku();
152
+ $checkout_names[] = $item->getName();
153
+ $checkout_qtys[] = number_format($item->getQty(), 0, ".", "");
154
+ $checkout_prices[] = number_format($item->getPrice(), 2, ".", "");
155
+ }
156
+ }
157
+
158
+ $outputArray = array();
159
+ $outputArray['site_region'] = Mage::app()->getLocale()->getLocaleCode() ?: "";
160
+ $outputArray['site_currency'] = $store->getCurrentCurrencyCode() ?: "";
161
+ $outputArray['page_name'] = $page->getLayout()->getBlock('head')->getTitle() ?: "";
162
+ $outputArray['page_type'] = "checkout";
163
 
164
+ // THE FOLLOWING NEEDS TO BE MATCHED ARRAYS (SAME NUMBER OF ELEMENTS)
165
+ $outputArray['product_id'] = $checkout_ids ?: array();
166
+ $outputArray['product_sku'] = $checkout_skus ?: array();
167
+ $outputArray['product_name'] = $checkout_names ?: array();
168
+ $outputArray['product_brand'] = array();
169
+ $outputArray['product_category'] = array();
170
+ $outputArray['product_quantity'] = $checkout_qtys ?: array();
171
+ $outputArray['product_unit_price'] = array();
172
+ $outputArray['product_list_price'] = $checkout_prices ?: array();
173
+
174
+ return $outputArray;
175
+ }
176
+
177
+ public function getOrderConfirmation(){
178
+ $store = TealiumData::$store;
179
+ $page = TealiumData::$page;
180
+
181
+ if (Mage::getModel('sales/order')) {
182
+ $order = Mage::getModel('sales/order')->loadByIncrementId($page->getOrderId());
183
+ foreach ($order->getAllVisibleItems() as $item) {
184
+
185
+ $ids[] = $item->getProductId();
186
+ $skus[] = $item->getSku();
187
+ $names[] = $item->getName();
188
+ $qtys[] = number_format($item->getQtyOrdered(), 0, ".", "");
189
+ $prices[] = number_format($item->getPrice(), 2, ".", "");
190
+ $discount = number_format($item->getDiscountAmount(), 2, ".", "");
191
+ $discounts[] = $discount;
192
+ $applied_rules = explode(",", $item->getAppliedRuleIds());
193
+ $discount_object = array();
194
+ foreach ($applied_rules as $rule) {
195
+ $quantity = number_format(Mage::getModel('salesrule/rule')->load($rule)->getDiscountQty(), 0, ".", "");
196
+ $amount = number_format(Mage::getModel('salesrule/rule')->load($rule)->getDiscountAmount(), 2, ".", "");
197
+ $type = Mage::getModel('salesrule/rule')->load($rule)->getSimpleAction();
198
+ $discount_object[] = array("rule" =>$rule,
199
+ "quantity" =>$quantity,
200
+ "amount" =>$amount,
201
+ "type" =>$type);
202
+ }
203
+ $discount_quantity[] = array("product_id" => $item->getProductId(),
204
+ "total_discount" => $discount,
205
+ "discounts" => $discount_object);
206
+
207
+ }
208
+ }
209
+
210
+ $outputArray = array();
211
 
212
+ $outputArray['site_region'] = Mage::app()->getLocale()->getLocaleCode() ?: "";
213
+ $outputArray['site_currency'] = $store->getCurrentCurrencyCode() ?: "";
214
+ $outputArray['order_id'] = $order->getIncrementId() ?: "";
215
+ $outputArray['order_discount'] = number_format($order->getDiscountAmount(), 2, ".", "") ?: "";
216
+ $outputArray['order_subtotal'] = number_format($order->getSubtotal(), 2, ".", "") ?: "";
217
+ $outputArray['order_shipping'] = number_format($order->getShippingAmount(), 2, ".", "") ?: "";
218
+ $outputArray['order_tax'] = number_format($order->getTaxAmount(), 2, ".", "") ?: "";
219
+ $outputArray['order_payment_type'] = $order->getPayment() ? $order->getPayment()->getMethodInstance()->getTitle() : 'unknown';
220
+ $outputArray['order_total'] = number_format($order->getGrandTotal(), 2, ".", "") ?: "";
221
+ $outputArray['order_currency'] = $order->getOrderCurrencyCode() ?: "";
222
+ $outputArray['customer_email'] = $order->getCustomerEmail() ?: "";
223
+ $outputArray['product_id'] = $ids ?: array();
224
+ $outputArray['product_sku'] = $skus ?: array();
225
+ $outputArray['product_name'] = $names ?: array();
226
+ $outputArray['product_brand'] = array();
227
+ $outputArray['product_category'] = array();
228
+ $outputArray['product_unit_price'] = array();
229
+ $outputArray['product_list_price'] = $prices ?: array();
230
+ $outputArray['product_quantity'] = $qtys ?: array();
231
+ $outputArray['product_discount'] = $discounts ?: array();
232
+ $outputArray['product_discounts'] = $discount_quantity ?: array();
233
+
234
+ return $outputArray;
235
+ }
236
+
237
+ public function getCustomerData(){
238
+ $store = TealiumData::$store;
239
+ $page = TealiumData::$page;
240
+
241
+ if (Mage::getSingleton('customer/session')->isLoggedIn()) {
242
+ $customer = Mage::getSingleton('customer/session')->getCustomer();
243
+ $customer_id = $customer->getEntityId();
244
+ $customer_email = $customer->getEmail();
245
+ $groupId = $customer->getGroupId();
246
+ $customer_type = Mage::getModel('customer/group')->load($groupId)->getCode();
247
+ }
248
+
249
+ $outputArray = array();
250
+
251
+ $outputArray['site_region'] = Mage::app()->getLocale()->getLocaleCode() ?: "";
252
+ $outputArray['site_currency'] = $store->getCurrentCurrencyCode() ?: "";
253
+ $outputArray['page_name'] = $page->getLayout()->getBlock('head')->getTitle() ?: "";
254
+ $outputArray['page_type'] = $page->getTealiumType() ?: "";
255
+ $outputArray['customer_id'] = $customer_id ?: "";
256
+ $outputArray['customer_email'] = $customer_email ?: "";
257
+ $outputArray['customer_type'] = $customer_type ?: "";
258
+
259
+ return $outputArray;
260
+ }
261
  }
262
+
263
+
264
+ TealiumData::setStore($data["store"]);
265
+ TealiumData::setPage($data["page"]);
266
+
267
 
268
  $udoElements = array(
269
+ 'Home' => function(){
270
+ $tealiumData = new TealiumData();
271
+ return $tealiumData->getHome();
272
+ },
273
+ 'Search' => function(){
274
+ $tealiumData = new TealiumData();
275
+ return $tealiumData->getSearch();
276
+ },
277
+ 'Category' => function(){
278
+ $tealiumData = new TealiumData();
279
+ return $tealiumData->getCategory();
280
+ },
281
+ 'ProductPage' => function(){
282
+ $tealiumData = new TealiumData();
283
+ return $tealiumData->getProductPage();
284
+ },
285
+ 'Cart' => function(){
286
+ $tealiumData = new TealiumData();
287
+ return $tealiumData->getCartPage();
288
+ },
289
+ 'Confirmation' => function(){
290
+ $tealiumData = new TealiumData();
291
+ return $tealiumData->getOrderConfirmation();
292
+ },
293
+ 'Customer' => function(){
294
+ $tealiumData = new TealiumData();
295
+ return $tealiumData->getCustomerData();
296
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
  );
298
 
299
+
300
  ?>
301
 
package.xml CHANGED
@@ -1,15 +1,18 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Tealium_Tags</name>
4
- <version>1.1.0</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Tealum tag management solution</summary>
10
  <description>Tealum tag management solution extension injects the Tealium javascript into your magento pages, and on specific pages injects special javascript so that you can access specific data elements such as product, category or cart data.</description>
11
- <notes>1.1.0 - Added support for alternate checkout pages&#xD;
12
- 1.0.4 - fixed php warnings in logs&#xD;
 
 
 
13
  1.0.2 - Added html/text help to admin config&#xD;
14
  1.0.1 - Fixed arrays that were rendering as strings&#xD;
15
  1.0.0 - refactored based on Tealium class&#xD;
@@ -24,10 +27,10 @@
24
  0.3.0 - fix for missing support message&#xD;
25
  0.2.0 - fix for product page tag syntax&#xD;
26
  0.1.0 - initial release</notes>
27
- <authors><author><name>Tealium</name><user>Tealium</user><email>patrick.mcwilliams@tealium.com</email></author></authors>
28
- <date>2014-07-15</date>
29
- <time>08:39:21</time>
30
- <contents><target name="magelocal"><dir name="Tealium"><dir name="Tags"><dir name="Helper"><file name="Data.php" hash="e8ef7836848f91597fbf232d51cbc255"/></dir><dir name="etc"><file name="adminhtml.xml" hash="e6ec5ba973cdb97a9925f02575392865"/><file name="config.xml" hash="c736b55d5e3cc05cbf7bc27fe7a851e5"/><file name="system.xml" hash="bdf256ea75eb731ddb19d77e748f59d1"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Tealium_Tags.xml" hash="3d6843433dffefb4600573950a83e765"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="tealium_tags.xml" hash="f1a764ba60627bbf4b0113c454bb892a"/></dir><dir name="template"><dir name="tealium_tags"><file name="base.phtml" hash="459db6812a160ac45c37c7a46d72fea1"/><file name="catalog_product_compare_index.phtml" hash="810cb1cf8b17ab77d5addf75097dcc12"/><file name="catalogsearch_advanced_result_index.phtml" hash="df8e2d21436261f855dcb4bb1d6497fb"/><file name="catalogsearch_result_index.phtml" hash="063b17148b5d031e4a445d59d85a02c1"/><file name="catalogsearch_term_popular.phtml" hash="2e591a75a8f7b226d0dbf459a3fb556b"/><file name="category.phtml" hash="6b3bfa75f142d2ac45b2a7a68fe09024"/><file name="checkout_cart_index.phtml" hash="20d90e76ded92964e1e406353a1ae777"/><file name="checkout_onepage.phtml" hash="234c6528de89e33f3d745e147fc2919b"/><file name="checkout_success.phtml" hash="82eedb745c4a17c7864089f746104575"/><file name="cms.phtml" hash="b27d54573e11d3ed64f9fc4e3b842d32"/><file name="customer.phtml" hash="edbac3f55223f19edd5f78f66ceb4a16"/><file name="generic.phtml" hash="0a090a69bfa7278504bdeab83a86b846"/><file name="guest_sales.phtml" hash="e8c438cddca07aa8e44549c6c63f6b08"/><file name="product.phtml" hash="c5568efedd7cd11803a9558566e8d1f1"/><file name="product_send.phtml" hash="b55cc99a06028171333aad3f16f8e7b3"/><file name="seo.phtml" hash="8a5c742b13e79c8019e4619d7aba1eba"/><file name="tag_list_index.phtml" hash="6fa3c2c58ac6138fe406fbc71b116823"/><file name="tag_product_list.phtml" hash="e6bf4fc7d91f5378d3d53dcd455f73f9"/><file name=".checkout_success.phtml.swp" hash="9b57a7ce9a428a02d446520e721f9d27"/></dir></dir></dir></dir></dir></target><target name="magelib"><dir name="Tealium"><file name="Errors.log.txt" hash="d41d8cd98f00b204e9800998ecf8427e"/><file name="Tealium.php" hash="8239140cb4c8331fa7c05f2d4bdeca84"/><file name="TealiumAPI.php" hash="8ff735cbea9409d365cde877cd177ceb"/><file name="TealiumInit.php" hash="6af8c3cb021366d6e905f5fe54d1d548"/><file name=".Tealium.php.swp" hash="269cb2dbd9f38fd49f490050ec74e88d"/></dir></target></contents>
31
  <compatible/>
32
  <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
33
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Tealium_Tags</name>
4
+ <version>2.0.1</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Tealum tag management solution</summary>
10
  <description>Tealum tag management solution extension injects the Tealium javascript into your magento pages, and on specific pages injects special javascript so that you can access specific data elements such as product, category or cart data.</description>
11
+ <notes>2.0.1 - Fix for extended UDO rendering blank page&#xD;
12
+ 2.0.0 - Added external script support and refactored&#xD;
13
+ 1.2.0 - Added UI admin toggle for onePage Checkout&#xD;
14
+ 1.1.1 - Fixed pages not rendering&#xD;
15
+ 1.1.0 - Added support for alternate checkout pages&#xD;
16
  1.0.2 - Added html/text help to admin config&#xD;
17
  1.0.1 - Fixed arrays that were rendering as strings&#xD;
18
  1.0.0 - refactored based on Tealium class&#xD;
27
  0.3.0 - fix for missing support message&#xD;
28
  0.2.0 - fix for product page tag syntax&#xD;
29
  0.1.0 - initial release</notes>
30
+ <authors><author><name>Patrick McWilliams</name><user>Tealium</user><email>patrick.mcwilliams@tealium.com</email></author></authors>
31
+ <date>2015-02-19</date>
32
+ <time>04:16:45</time>
33
+ <contents><target name="magelocal"><dir name="Tealium"><dir name="Tags"><dir name="Helper"><file name="Data.php" hash="365fb4cdcd062ea8ff4c283fa0f9f61d"/><file name="Observer.php" hash="a4da187ee890256d09daa97c81a28795"/></dir><dir name="etc"><file name="adminhtml.xml" hash="e6ec5ba973cdb97a9925f02575392865"/><file name="config.xml" hash="022d31160f742934ad5a72a10703415a"/><file name="system.xml" hash="9c36bda7c12499354368fd21535222ec"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Tealium_Tags.xml" hash="3d6843433dffefb4600573950a83e765"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="tealium_tags.xml" hash="f1a764ba60627bbf4b0113c454bb892a"/></dir><dir name="template"><dir name="tealium_tags"><file name="base.phtml" hash="dc238fd913df60276c99a6c198716320"/><file name="catalog_product_compare_index.phtml" hash="2cddf1f61676707e75e8c6a6efa7dd93"/><file name="catalogsearch_advanced_result_index.phtml" hash="55751b56fdb95124e18e28dc22d310cf"/><file name="catalogsearch_result_index.phtml" hash="20534c754c0b52967cede5295925dc2f"/><file name="catalogsearch_term_popular.phtml" hash="31dea56323eb8329c35e9c3f147afca0"/><file name="category.phtml" hash="f6da5b510bac6c9b273de054046aa0e3"/><file name="checkout_cart_index.phtml" hash="6c6df883fb6375f15aa3c3a206026ac0"/><file name="checkout_onepage.phtml" hash="0ccfc96f256b254661dba05321809995"/><file name="checkout_success.phtml" hash="f3f2f13637a56d0193a0a711bdd9cef9"/><file name="cms.phtml" hash="6b22c74137dae766bb518da903629369"/><file name="customer.phtml" hash="9531acc69dbcebf685f54d9f0f3e5f83"/><file name="generic.phtml" hash="e08d99f69ddf6aca7db07e5fed9920d7"/><file name="guest_sales.phtml" hash="2568dbfff3033301e79850d69ac5335a"/><file name="product.phtml" hash="ff43f09465b688ee88e78838b2c7be0a"/><file name="product_send.phtml" hash="56cfd43733fae931410f29bdf8a812cf"/><file name="seo.phtml" hash="733576edcc66d64551afc61f99875c70"/><file name="tag_list_index.phtml" hash="4b234a62599ccaeb0f73d9373cc270b7"/><file name="tag_product_list.phtml" hash="58af545fe5a6dc1185d2507128aa9dbc"/></dir></dir></dir></dir></dir></target><target name="magelib"><dir name="Tealium"><file name="Tealium.php" hash="8b5745d0080f17045d66f4283a2b4176"/><file name="TealiumCustomData.php" hash="c7d066cbf120d79460928872d62f72e1"/><file name="TealiumInit.php" hash="009dab38e113a6cb77e8826c941f3c51"/></dir></target></contents>
34
  <compatible/>
35
  <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
36
  </package>