Version Notes
Any questions or concerns, please email cs@tagalys.com and we will get back to you in less than 24 hours.
Download this release
Release Info
Developer | Palani |
Extension | Personalized-localized-and-Intelligent-Site-Search |
Version | 1.2.0 |
Comparing to | |
See all releases |
Code changes from version 1.1.4 to 1.2.0
- app/code/community/Tagalys/Analytics/Block/Productview.php +4 -0
- app/code/community/Tagalys/Analytics/Model/Observer.php +47 -0
- app/code/community/Tagalys/Analytics/controllers/IndexController.php +45 -0
- app/code/community/Tagalys/Analytics/etc/config.xml +60 -0
- app/code/community/Tagalys/Core/Block/Adminhtml/Tagalys/Edit/Tab/Syncsettings.php +12 -3
- app/code/community/Tagalys/Core/Helper/Service.php +5 -2
- app/code/community/Tagalys/Core/Model/ProductDetails.php +3 -4
- app/code/community/Tagalys/Core/etc/config.xml +1 -1
- app/design/frontend/base/default/layout/tagalys_analytics.xml +13 -0
- app/design/frontend/base/default/layout/tagalys_search_suggestions.xml +1 -1
- app/design/frontend/base/default/template/tagalys_analytics/product_view.phtml +25 -0
- app/design/frontend/base/default/template/tagalys_analytics/track_cookie.phtml +44 -0
- app/design/frontend/base/default/template/tagalys_search_suggestions/search_suggestions.phtml +65 -60
- app/etc/modules/Tagalys_Analytics.xml +11 -0
- js/tagalys-configuration.js +11 -6
- package.xml +4 -4
app/code/community/Tagalys/Analytics/Block/Productview.php
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Tagalys_Analytics_Block_Productview extends Mage_Catalog_Block_Product_View {
|
3 |
+
|
4 |
+
}
|
app/code/community/Tagalys/Analytics/Model/Observer.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Tagalys_Analytics_Model_Observer extends Varien_Object {
|
3 |
+
public function addToCart(Varien_Event_Observer $observer) {
|
4 |
+
try {
|
5 |
+
$mainProduct = $observer->getProduct();
|
6 |
+
$productType = $mainProduct->getTypeId();
|
7 |
+
$analyticsCookieData = array(1 /* cookie format version */, 'product_action', 'add_to_cart', array(array(Mage::app()->getRequest()->getParam('qty', 1), $mainProduct->getId())));
|
8 |
+
if ($productType == 'configurable') {
|
9 |
+
$simpleProduct = $observer->getEvent()->getQuoteItem()->getProduct();
|
10 |
+
$analyticsCookieData[3][0][] = $simpleProduct->getId();
|
11 |
+
}
|
12 |
+
Mage::getModel('core/cookie')->set('__ta_event', json_encode($analyticsCookieData));
|
13 |
+
} catch (Exception $e) {
|
14 |
+
|
15 |
+
}
|
16 |
+
}
|
17 |
+
|
18 |
+
public function orderSuccess(Varien_Event_Observer $observer) {
|
19 |
+
try {
|
20 |
+
$orderIds = $observer->getEvent()->getOrderIds();
|
21 |
+
if (empty($orderIds) || !is_array($orderIds)) {
|
22 |
+
return;
|
23 |
+
}
|
24 |
+
$orderId = $orderIds[0];
|
25 |
+
$order = Mage::getModel('sales/order')->load($orderId);
|
26 |
+
$analyticsCookieData = array(1 /* cookie format version */, 'product_action', 'buy', array(), $orderId);
|
27 |
+
|
28 |
+
$returnItems = array();
|
29 |
+
foreach($order->getAllItems() as $item){
|
30 |
+
$qty = $item->getQtyToShip();
|
31 |
+
$product = $item->getProduct();
|
32 |
+
if ($product->getTypeId() == 'simple') {
|
33 |
+
$parentId = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($product->getId());
|
34 |
+
if(isset($parentId[0])) {
|
35 |
+
$configurableProduct = Mage::getModel('catalog/product')->load($parentId[0]);
|
36 |
+
$analyticsCookieData[3][] = array((int)$item->getQtyOrdered(), $configurableProduct->getId(), $product->getId());
|
37 |
+
} else {
|
38 |
+
$analyticsCookieData[3][] = array((int)$item->getQtyOrdered(), $product->getId());
|
39 |
+
}
|
40 |
+
}
|
41 |
+
}
|
42 |
+
Mage::register('tagalys_analytics_event', json_encode($analyticsCookieData));
|
43 |
+
} catch (Exception $e) {
|
44 |
+
|
45 |
+
}
|
46 |
+
}
|
47 |
+
}
|
app/code/community/Tagalys/Analytics/controllers/IndexController.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Tagalys_Analytics_IndexController extends Mage_Core_Controller_Front_Action {
|
3 |
+
|
4 |
+
public function detailsAction() {
|
5 |
+
$data = json_decode(Mage::app()->getRequest()->getParam('event_json'), true);
|
6 |
+
$productsData = array();
|
7 |
+
if ($data[1] == 'product_action') {
|
8 |
+
if ($data[2] == 'add_to_cart' || $data[2] == 'buy') {
|
9 |
+
for($i = 0; $i < count($data[3]); $i++) {
|
10 |
+
$productsData[] = $this->getProductDetails($data[3][$i]);
|
11 |
+
}
|
12 |
+
}
|
13 |
+
}
|
14 |
+
echo json_encode($productsData);
|
15 |
+
}
|
16 |
+
|
17 |
+
public function getProductDetails($details) {
|
18 |
+
$mainProduct = Mage::getModel('catalog/product')->load($details[1]);
|
19 |
+
$productDetails = array(
|
20 |
+
'sku' => $mainProduct->getSku(),
|
21 |
+
'quantity' => $details[0]
|
22 |
+
);
|
23 |
+
$noOfItems = count($details);
|
24 |
+
if ($noOfItems == 3) {
|
25 |
+
$configurableAttributes = array();
|
26 |
+
foreach ($mainProduct->getTypeInstance(true)->getConfigurableAttributes($mainProduct) as $attribute) {
|
27 |
+
$configurableAttributes[] = $attribute->getProductAttribute()->getAttributeCode();
|
28 |
+
}
|
29 |
+
$simpleProduct = Mage::getModel('catalog/product')->load($details[2]);
|
30 |
+
$product_data = new stdClass();
|
31 |
+
$simpleProductAttributes = Mage::getModel("tagalys_core/productDetails")->getProductAttributes($simpleProduct->getId(), Mage::app()->getStore()->getId(), array_keys((array) $product_data));
|
32 |
+
$configurableSimpleProductAttributes = array();
|
33 |
+
for ($i = 0; $i < count($simpleProductAttributes); $i++) {
|
34 |
+
if (in_array($simpleProductAttributes[$i]['tag_set']['id'], $configurableAttributes)) {
|
35 |
+
$configurableSimpleProductAttributes[] = $simpleProductAttributes[$i];
|
36 |
+
}
|
37 |
+
}
|
38 |
+
if (count($configurableSimpleProductAttributes) > 0) {
|
39 |
+
$productDetails['__tags'] = $configurableSimpleProductAttributes;
|
40 |
+
}
|
41 |
+
}
|
42 |
+
return $productDetails;
|
43 |
+
}
|
44 |
+
|
45 |
+
}
|
app/code/community/Tagalys/Analytics/etc/config.xml
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Tagalys_Analytics>
|
5 |
+
<version>0.1.0</version>
|
6 |
+
</Tagalys_Analytics>
|
7 |
+
</modules>
|
8 |
+
<frontend>
|
9 |
+
<layout>
|
10 |
+
<updates>
|
11 |
+
<tagalys_analytics>
|
12 |
+
<file>tagalys_analytics.xml</file>
|
13 |
+
</tagalys_analytics>
|
14 |
+
</updates>
|
15 |
+
</layout>
|
16 |
+
<routers>
|
17 |
+
<tagalys_tanalytics>
|
18 |
+
<use>standard</use>
|
19 |
+
<args>
|
20 |
+
<module>Tagalys_Analytics</module>
|
21 |
+
<frontName>tanalytics</frontName>
|
22 |
+
</args>
|
23 |
+
</tagalys_tanalytics>
|
24 |
+
</routers>
|
25 |
+
</frontend>
|
26 |
+
<global>
|
27 |
+
<blocks>
|
28 |
+
<analytics>
|
29 |
+
<class>Tagalys_Analytics_Block</class>
|
30 |
+
</analytics>
|
31 |
+
</blocks>
|
32 |
+
<models>
|
33 |
+
<analytics>
|
34 |
+
<class>Tagalys_Analytics_Model</class>
|
35 |
+
</analytics>
|
36 |
+
</models>
|
37 |
+
<events>
|
38 |
+
<checkout_cart_product_add_after>
|
39 |
+
<observers>
|
40 |
+
<checkout_cart_product_add_after_handler>
|
41 |
+
<type>singleton</type>
|
42 |
+
<class>analytics/observer</class>
|
43 |
+
<method>addToCart</method>
|
44 |
+
<args></args>
|
45 |
+
</checkout_cart_product_add_after_handler>
|
46 |
+
</observers>
|
47 |
+
</checkout_cart_product_add_after>
|
48 |
+
<checkout_onepage_controller_success_action>
|
49 |
+
<observers>
|
50 |
+
<checkout_onepage_controller_success_action_handler>
|
51 |
+
<type>singleton</type>
|
52 |
+
<class>analytics/observer</class>
|
53 |
+
<method>orderSuccess</method>
|
54 |
+
<args></args>
|
55 |
+
</checkout_onepage_controller_success_action_handler>
|
56 |
+
</observers>
|
57 |
+
</checkout_onepage_controller_success_action>
|
58 |
+
</events>
|
59 |
+
</global>
|
60 |
+
</config>
|
app/code/community/Tagalys/Core/Block/Adminhtml/Tagalys/Edit/Tab/Syncsettings.php
CHANGED
@@ -39,8 +39,13 @@ class Tagalys_Core_Block_Adminhtml_Tagalys_Edit_Tab_Syncsettings extends Mage_Ad
|
|
39 |
$setup_status = Mage::getModel('tagalys_core/config')->getTagalysConfig('setup_status');
|
40 |
if ($setup_status == 'complete') {
|
41 |
} else {
|
42 |
-
$fieldset->addField('
|
43 |
-
'
|
|
|
|
|
|
|
|
|
|
|
44 |
));
|
45 |
|
46 |
$fieldset->addField('agree_start_sync', 'checkbox', array(
|
@@ -48,10 +53,14 @@ class Tagalys_Core_Block_Adminhtml_Tagalys_Edit_Tab_Syncsettings extends Mage_Ad
|
|
48 |
'checked' => false,
|
49 |
'onclick' => 'this.value = this.checked ? 1 : 0;',
|
50 |
'disabled' => false,
|
51 |
-
'after_element_html' => '<small>I agree to start syncing the selected stores.<br><em>We recommend you to do this at low traffic hours.</em
|
52 |
'tabindex' => 1
|
53 |
));
|
54 |
|
|
|
|
|
|
|
|
|
55 |
$fieldset->addField('submit', 'submit', array(
|
56 |
'name' => 'tagalys_submit_action',
|
57 |
'value' => 'Save & Start Sync',
|
39 |
$setup_status = Mage::getModel('tagalys_core/config')->getTagalysConfig('setup_status');
|
40 |
if ($setup_status == 'complete') {
|
41 |
} else {
|
42 |
+
$fieldset->addField('agree_cron_enabled', 'checkbox', array(
|
43 |
+
'name' => 'Checkbox',
|
44 |
+
'checked' => false,
|
45 |
+
'onclick' => 'this.value = this.checked ? 1 : 0;',
|
46 |
+
'disabled' => false,
|
47 |
+
'after_element_html' => '<small>Cron is enabled on this Magento installation.<br><em><b><a target=_blank href="http://devdocs.magento.com/guides/m1x/install/installing_install.html#install-cron">Cron Documentation</a></b></em></small>',
|
48 |
+
'tabindex' => 1
|
49 |
));
|
50 |
|
51 |
$fieldset->addField('agree_start_sync', 'checkbox', array(
|
53 |
'checked' => false,
|
54 |
'onclick' => 'this.value = this.checked ? 1 : 0;',
|
55 |
'disabled' => false,
|
56 |
+
'after_element_html' => '<small>I agree to start syncing the selected stores.<br><em><b>We recommend you to do this at low traffic hours.</b></em></small>',
|
57 |
'tabindex' => 1
|
58 |
));
|
59 |
|
60 |
+
$fieldset->addField('note_checkboxes', 'note', array(
|
61 |
+
'text' => $this->__('<em>Please check both checkboxes to continue.</em>'),
|
62 |
+
));
|
63 |
+
|
64 |
$fieldset->addField('submit', 'submit', array(
|
65 |
'name' => 'tagalys_submit_action',
|
66 |
'value' => 'Save & Start Sync',
|
app/code/community/Tagalys/Core/Helper/Service.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
class Tagalys_Core_Helper_Service extends Mage_Core_Helper_Abstract {
|
3 |
protected $_storeId;
|
4 |
|
5 |
-
public function getProductPayload($product_id, $store_id
|
6 |
$core_helper = Mage::helper('tagalys_core');
|
7 |
$details_model = Mage::getModel("tagalys_core/productDetails");
|
8 |
|
@@ -13,9 +13,12 @@ class Tagalys_Core_Helper_Service extends Mage_Core_Helper_Abstract {
|
|
13 |
Mage::app()->setCurrentStore($store_id);
|
14 |
$attributes = $details_model->getProductAttributes($product_id, $store_id, array_keys((array) $product_data));
|
15 |
$product_data = $details_model->getProductFields($product_id, $store_id);
|
16 |
-
$product_data->synced_at = $time_now;
|
17 |
$product_data->__tags = $attributes;
|
18 |
|
|
|
|
|
|
|
|
|
19 |
return $product_data;
|
20 |
}
|
21 |
|
2 |
class Tagalys_Core_Helper_Service extends Mage_Core_Helper_Abstract {
|
3 |
protected $_storeId;
|
4 |
|
5 |
+
public function getProductPayload($product_id, $store_id) {
|
6 |
$core_helper = Mage::helper('tagalys_core');
|
7 |
$details_model = Mage::getModel("tagalys_core/productDetails");
|
8 |
|
13 |
Mage::app()->setCurrentStore($store_id);
|
14 |
$attributes = $details_model->getProductAttributes($product_id, $store_id, array_keys((array) $product_data));
|
15 |
$product_data = $details_model->getProductFields($product_id, $store_id);
|
|
|
16 |
$product_data->__tags = $attributes;
|
17 |
|
18 |
+
if (!$forAnalytics) {
|
19 |
+
$product_data->synced_at = $time_now;
|
20 |
+
}
|
21 |
+
|
22 |
return $product_data;
|
23 |
}
|
24 |
|
app/code/community/Tagalys/Core/Model/ProductDetails.php
CHANGED
@@ -4,7 +4,7 @@ class Tagalys_Core_Model_ProductDetails extends Mage_Core_Model_Abstract {
|
|
4 |
protected $syncfield;
|
5 |
protected $inventorySyncField;
|
6 |
|
7 |
-
public function getProductFields($productId, $store
|
8 |
try {
|
9 |
$this->_storeId = $store;
|
10 |
$core_helper = Mage::helper('tagalys_core');
|
@@ -43,6 +43,7 @@ class Tagalys_Core_Model_ProductDetails extends Mage_Core_Model_Abstract {
|
|
43 |
$productFields->price = $product->getPrice();
|
44 |
}
|
45 |
|
|
|
46 |
$productFields->image_url = Mage::getModel('catalog/product_media_config')->getMediaUrl( $product->getImage());
|
47 |
$fields = array('created_at');
|
48 |
foreach ($fields as $key => $name) {
|
@@ -51,15 +52,13 @@ class Tagalys_Core_Model_ProductDetails extends Mage_Core_Model_Abstract {
|
|
51 |
$introduced_at->setTimeZone(new DateTimeZone('UTC'));
|
52 |
$productFields->introduced_at = $introduced_at->format(DateTime::ATOM);
|
53 |
}
|
54 |
-
|
55 |
-
// $productFields->parent_id = $this->getProductParent($productId);
|
56 |
$productFields->in_stock = Mage::getModel('catalog/product')->load($product->getId())->isSaleable();
|
57 |
|
58 |
return $productFields;
|
59 |
|
60 |
} catch (Exception $e) {
|
61 |
|
62 |
-
}
|
63 |
}
|
64 |
public function getProductType($productId) {
|
65 |
$product = Mage::getModel('catalog/product')->load($productId);
|
4 |
protected $syncfield;
|
5 |
protected $inventorySyncField;
|
6 |
|
7 |
+
public function getProductFields($productId, $store) {
|
8 |
try {
|
9 |
$this->_storeId = $store;
|
10 |
$core_helper = Mage::helper('tagalys_core');
|
43 |
$productFields->price = $product->getPrice();
|
44 |
}
|
45 |
|
46 |
+
$product_data->synced_at = $time_now;
|
47 |
$productFields->image_url = Mage::getModel('catalog/product_media_config')->getMediaUrl( $product->getImage());
|
48 |
$fields = array('created_at');
|
49 |
foreach ($fields as $key => $name) {
|
52 |
$introduced_at->setTimeZone(new DateTimeZone('UTC'));
|
53 |
$productFields->introduced_at = $introduced_at->format(DateTime::ATOM);
|
54 |
}
|
|
|
|
|
55 |
$productFields->in_stock = Mage::getModel('catalog/product')->load($product->getId())->isSaleable();
|
56 |
|
57 |
return $productFields;
|
58 |
|
59 |
} catch (Exception $e) {
|
60 |
|
61 |
+
}
|
62 |
}
|
63 |
public function getProductType($productId) {
|
64 |
$product = Mage::getModel('catalog/product')->load($productId);
|
app/code/community/Tagalys/Core/etc/config.xml
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
<tagalys>
|
7 |
<package>
|
8 |
<name>Search</name>
|
9 |
-
<version>1.
|
10 |
</package>
|
11 |
</tagalys>
|
12 |
</default>
|
6 |
<tagalys>
|
7 |
<package>
|
8 |
<name>Search</name>
|
9 |
+
<version>1.2.0</version>
|
10 |
</package>
|
11 |
</tagalys>
|
12 |
</default>
|
app/design/frontend/base/default/layout/tagalys_analytics.xml
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<layout version="0.1.0">
|
3 |
+
<catalog_product_view translate="label">
|
4 |
+
<reference name="content">
|
5 |
+
<block type="analytics/productview" name="analytics_productview" template="tagalys_analytics/product_view.phtml"></block>
|
6 |
+
</reference>
|
7 |
+
</catalog_product_view>
|
8 |
+
<default>
|
9 |
+
<reference name="content">
|
10 |
+
<block type="core/template" name="tagalys_trackcookie" template="tagalys_analytics/track_cookie.phtml" />
|
11 |
+
</reference>
|
12 |
+
</default>
|
13 |
+
</layout>
|
app/design/frontend/base/default/layout/tagalys_search_suggestions.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<layout version="0.1.0">
|
3 |
<default>
|
4 |
<reference name="content">
|
5 |
-
<block type="core/template" template="tagalys_search_suggestions/search_suggestions.phtml"
|
6 |
</reference>
|
7 |
</default>
|
8 |
</layout>
|
2 |
<layout version="0.1.0">
|
3 |
<default>
|
4 |
<reference name="content">
|
5 |
+
<block type="core/template" name="tagalys_search_suggestions" template="tagalys_search_suggestions/search_suggestions.phtml" />
|
6 |
</reference>
|
7 |
</default>
|
8 |
</layout>
|
app/design/frontend/base/default/template/tagalys_analytics/product_view.phtml
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$eventDetails = false;
|
3 |
+
try {
|
4 |
+
$eventDetails = array(
|
5 |
+
'action' => 'view',
|
6 |
+
'sku' => $this->getProduct()->getSku()
|
7 |
+
);
|
8 |
+
} catch (Exception $e) {
|
9 |
+
// don't log this as it might happen too often
|
10 |
+
}
|
11 |
+
?>
|
12 |
+
<?php if ($eventDetails != false): ?>
|
13 |
+
<script>
|
14 |
+
try {
|
15 |
+
(function( $ ) {
|
16 |
+
jQuery(function() {
|
17 |
+
jQuery.fn.tagalys_analytics.track_event('product_action', <?php echo json_encode($eventDetails) ?>);
|
18 |
+
});
|
19 |
+
}( jQuery ));
|
20 |
+
}
|
21 |
+
catch(err) {
|
22 |
+
|
23 |
+
}
|
24 |
+
</script>
|
25 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/tagalys_analytics/track_cookie.phtml
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$analyticsEvent = false;
|
3 |
+
try {
|
4 |
+
$analyticsEvent = Mage::getModel('core/cookie')->get('__ta_event');
|
5 |
+
if ($analyticsEvent == false) {
|
6 |
+
$analyticsEvent = Mage::registry('tagalys_analytics_event');
|
7 |
+
}
|
8 |
+
if ($analyticsEvent != false) {
|
9 |
+
$analyticsEvent = json_decode($analyticsEvent, true);
|
10 |
+
Mage::getModel('core/cookie')->delete('__ta_event');
|
11 |
+
}
|
12 |
+
} catch (Exception $e) {
|
13 |
+
// don't log this as it might happen too often
|
14 |
+
}
|
15 |
+
?>
|
16 |
+
<?php if ($analyticsEvent != false): ?>
|
17 |
+
<script>
|
18 |
+
try {
|
19 |
+
(function( $ ) {
|
20 |
+
$(function() {
|
21 |
+
$.ajax({
|
22 |
+
url: "<?php echo Mage::getUrl('tanalytics/index/details/'); ?>",
|
23 |
+
data: { event_json: '<?php echo json_encode($analyticsEvent) ?>' },
|
24 |
+
dataType: 'json',
|
25 |
+
method: 'POST',
|
26 |
+
context: <?php echo json_encode($analyticsEvent) ?>,
|
27 |
+
success: function(data, textStatus, jqXHR) {
|
28 |
+
for (var i = 0; i < this[3].length; i++) {
|
29 |
+
if (this[2] == 'buy') {
|
30 |
+
$.fn.tagalys_analytics.track_event(this[1], $.extend({ action: this[2], order_id: this[4] }, data[i]));
|
31 |
+
} else {
|
32 |
+
$.fn.tagalys_analytics.track_event(this[1], $.extend({ action: this[2] }, data[i]));
|
33 |
+
}
|
34 |
+
}
|
35 |
+
}
|
36 |
+
});
|
37 |
+
});
|
38 |
+
}( jQuery ));
|
39 |
+
}
|
40 |
+
catch(err) {
|
41 |
+
|
42 |
+
}
|
43 |
+
</script>
|
44 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/tagalys_search_suggestions/search_suggestions.phtml
CHANGED
@@ -12,71 +12,76 @@
|
|
12 |
|
13 |
<script>
|
14 |
(function( $ ) {
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
|
|
31 |
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
|
|
37 |
}
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
keyword = key;
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
}
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
|
|
|
|
57 |
echo 'return [];';
|
58 |
}
|
59 |
-
|
60 |
-
|
61 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
?>
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
exchange_rate: "<?php echo $currency[0]['exchange_rate']; ?>",
|
76 |
-
fractional_digits:"<?php echo $currency[0]['fractional_digits']; ?>"
|
77 |
-
},
|
78 |
-
track: 'asynchronous'
|
79 |
-
});
|
80 |
}( jQuery ));
|
81 |
</script>
|
82 |
<?php endif ?>
|
12 |
|
13 |
<script>
|
14 |
(function( $ ) {
|
15 |
+
try {
|
16 |
+
$.fn.tagalys_search_suggestions.search_link = function( q, qf, qin ) {
|
17 |
+
var categories_base_url = "<?php echo Mage::getBaseUrl(); ?>catalog/category/view/id/";
|
18 |
+
var tagalys_search_base_url = "<?php echo Mage::getUrl('tsearch'); ?>?q=";
|
19 |
+
var magento_search_base_url = "<?php echo Mage::helper('catalogsearch')->getResultUrl(""); ?>";
|
20 |
+
if (typeof(qf) == 'undefined' || $.isEmptyObject(qf)) {
|
21 |
+
<?php if($tagalys_search_enabled): ?>
|
22 |
+
return (tagalys_search_base_url + encodeURIComponent(q));
|
23 |
+
<?php else: ?>
|
24 |
+
return (magento_search_base_url + encodeURIComponent(q));
|
25 |
+
<?php endif; ?>
|
26 |
+
} else {
|
27 |
+
<?php if($tagalys_search_enabled): ?>
|
28 |
+
str = Object.keys(qf).map(function(key){
|
29 |
+
return encodeURIComponent(key) + "-"+ encodeURIComponent(qf[key]);
|
30 |
+
}).join('~');
|
31 |
+
qf_param = encodeURIComponent("qf") + '=' + str;
|
32 |
|
33 |
+
return tagalys_search_base_url.concat(encodeURIComponent(q) +"&"+qf_param);
|
34 |
+
<?php else: ?>
|
35 |
+
if (typeof(qin) == "undefined" ) {
|
36 |
+
if (typeof(qf) != "undefined" && qf.hasOwnProperty("__categories")) {
|
37 |
+
return categories_base_url+Number(qf["__categories"]);
|
38 |
+
}
|
39 |
}
|
40 |
+
var str = Object.keys(qf).map(function(key){
|
41 |
+
if(key == "__categories")
|
42 |
+
keyword = "cat";
|
43 |
+
else
|
44 |
+
keyword = key;
|
45 |
+
return encodeURIComponent(keyword) + '=' + encodeURIComponent(qf[key]);
|
46 |
+
}).join('&');
|
47 |
+
return magento_search_base_url.concat(encodeURIComponent(q) +"&"+str);
|
48 |
+
<?php endif ?>
|
49 |
+
}
|
50 |
+
};
|
51 |
+
$.fn.tagalys_search_suggestions.popular_searches = function() {
|
52 |
+
<?php
|
53 |
+
try {
|
54 |
+
$popular_searches = Mage::getModel('tagalys_core/config')->getTagalysConfig('store:'.Mage::app()->getStore()->getId().':popular_searches');
|
55 |
+
if ($popular_searches) {
|
56 |
+
echo 'return ' . $popular_searches . ';';
|
57 |
+
} else {
|
58 |
+
echo 'return [];';
|
59 |
+
}
|
60 |
+
} catch (Exception $e) {
|
61 |
echo 'return [];';
|
62 |
}
|
63 |
+
?>
|
64 |
+
};
|
65 |
+
<?php
|
66 |
+
$api_credentials = json_decode(Mage::getModel('tagalys_core/config')->getTagalysConfig("api_credentials"), true);
|
67 |
+
?>
|
68 |
+
$.fn.tagalys_public_api.server = '<?php echo $api_credentials['api_server'] ?>';
|
69 |
+
$.fn.tagalys_public_api.identification = {"client_code":"<?php echo $api_credentials['client_code'] ?>","api_key":"<?php echo $api_credentials['public_api_key'] ?>","store_id":"<?php echo Mage::app()->getStore()->getStoreId() ?>"};
|
70 |
+
<?php
|
71 |
+
$currency = Mage::helper('search_suggestions')->getCurrentCurrency();
|
72 |
?>
|
73 |
+
$('#search').tagalys_search_suggestions({
|
74 |
+
currency: {
|
75 |
+
label: "<?php echo $currency[0]['label']; ?>",
|
76 |
+
exchange_rate: "<?php echo $currency[0]['exchange_rate']; ?>",
|
77 |
+
fractional_digits:"<?php echo $currency[0]['fractional_digits']; ?>"
|
78 |
+
},
|
79 |
+
track: 'asynchronous'
|
80 |
+
});
|
81 |
+
}
|
82 |
+
catch(err) {
|
83 |
+
|
84 |
+
}
|
|
|
|
|
|
|
|
|
|
|
85 |
}( jQuery ));
|
86 |
</script>
|
87 |
<?php endif ?>
|
app/etc/modules/Tagalys_Analytics.xml
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version = "1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Tagalys_Analytics>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
<version>0.1.0</version>
|
8 |
+
</Tagalys_Analytics>
|
9 |
+
</modules>
|
10 |
+
</config>
|
11 |
+
|
js/tagalys-configuration.js
CHANGED
@@ -1,8 +1,13 @@
|
|
1 |
document.addEventListener("DOMContentLoaded", function (e) {
|
2 |
-
if(typeof($$("#tagalys_admin_core_agree_start_sync")[0]) != "undefined") {
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
|
|
|
|
7 |
}
|
8 |
-
});
|
|
|
|
|
|
1 |
document.addEventListener("DOMContentLoaded", function (e) {
|
2 |
+
if(typeof($$("#tagalys_admin_core_agree_cron_enabled")[0]) != "undefined" && typeof($$("#tagalys_admin_core_agree_start_sync")[0]) != "undefined") {
|
3 |
+
document.getElementById('tagalys_admin_core_agree_cron_enabled').onclick = tagalysCheckAndEnableSyncButton;
|
4 |
+
document.getElementById('tagalys_admin_core_agree_start_sync').onclick = tagalysCheckAndEnableSyncButton;
|
5 |
+
// $$("#tagalys_admin_core_agree_start_sync")[0].on("change", function () {
|
6 |
+
// // alert($$("#tagalys_admin_core_agree_start_sync")[0].value);
|
7 |
+
// document.getElementById('tagalys_admin_core_submit').disabled = !document.getElementById('tagalys_admin_core_submit').disabled;
|
8 |
+
// });
|
9 |
}
|
10 |
+
});
|
11 |
+
function tagalysCheckAndEnableSyncButton() {
|
12 |
+
document.getElementById('tagalys_admin_core_submit').disabled = !(document.getElementById('tagalys_admin_core_agree_cron_enabled').checked && document.getElementById('tagalys_admin_core_agree_start_sync').checked);
|
13 |
+
}
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Personalized-localized-and-Intelligent-Site-Search</name>
|
4 |
-
<version>1.
|
5 |
<stability>stable</stability>
|
6 |
<license>Tagalys</license>
|
7 |
<channel>community</channel>
|
@@ -10,9 +10,9 @@
|
|
10 |
<description>The extension powers search suggestions and resulting search results. Upon clicking the search bar, show visitors the most popular or trending searches in your ecommerce store. When a visitor starts typing, we auto complete the query into suggestions from the active product-tag-attribute database. </description>
|
11 |
<notes>Any questions or concerns, please email cs@tagalys.com and we will get back to you in less than 24 hours. </notes>
|
12 |
<authors><author><name>Palani</name><user>Palani</user><email>pc@tagalys.com</email></author></authors>
|
13 |
-
<date>2017-04-
|
14 |
-
<time>
|
15 |
-
<contents><target name="mageetc"><dir><dir name="modules"><file name="Tagalys_Core.xml" hash="7576ed5aa125c580f0b791018f24a0e9"/><file name="Tagalys_SearchSuggestions.xml" hash="dbf6f4ff1859ef2df72560c9282af435"/><file name="Tagalys_Search.xml" hash="820b96f53d2f0e86cb49906a4dda7f41"/><file name="Tagalys_Mpages.xml" hash="6ccb4f45669c98fd746c6abd92ab32ca"/></dir></dir></target><target name="magecommunity"><dir><dir name="Tagalys"><dir name="Core"><dir name="Block"><dir name="Adminhtml"><dir name="Tagalys"><dir name="Edit"><file name="Form.php" hash="31cae34d1e9bd5cb0c881ae5a6fc03c0"/><dir name="Tab"><file name="Apicredentials.php" hash="9005c30790a51ad077cb4be46a07b766"/><file name="Mpages.php" hash="ba526eb77efd4000ae96404bd04aa638"/><file name="Search.php" hash="fef14680d0feb63bb4e928296c3b9032"/><file name="Searchsuggestions.php" hash="5c87af24ad22c663da17e0a1ffe9a655"/><file name="Support.php" hash="c68547cfe57cbccdcbcf7c3eb35ed6b3"/><file name="Sync.php" hash="849f7bb77ff568e7f29cf63d54e7faa8"/><file name="Syncsettings.php" hash="
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>5.3.0</min><max>7.0.10</max></php></required></dependencies>
|
18 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Personalized-localized-and-Intelligent-Site-Search</name>
|
4 |
+
<version>1.2.0</version>
|
5 |
<stability>stable</stability>
|
6 |
<license>Tagalys</license>
|
7 |
<channel>community</channel>
|
10 |
<description>The extension powers search suggestions and resulting search results. Upon clicking the search bar, show visitors the most popular or trending searches in your ecommerce store. When a visitor starts typing, we auto complete the query into suggestions from the active product-tag-attribute database. </description>
|
11 |
<notes>Any questions or concerns, please email cs@tagalys.com and we will get back to you in less than 24 hours. </notes>
|
12 |
<authors><author><name>Palani</name><user>Palani</user><email>pc@tagalys.com</email></author></authors>
|
13 |
+
<date>2017-04-28</date>
|
14 |
+
<time>17:35:27</time>
|
15 |
+
<contents><target name="mageetc"><dir><dir name="modules"><file name="Tagalys_Core.xml" hash="7576ed5aa125c580f0b791018f24a0e9"/><file name="Tagalys_SearchSuggestions.xml" hash="dbf6f4ff1859ef2df72560c9282af435"/><file name="Tagalys_Search.xml" hash="820b96f53d2f0e86cb49906a4dda7f41"/><file name="Tagalys_Mpages.xml" hash="6ccb4f45669c98fd746c6abd92ab32ca"/><file name="Tagalys_Analytics.xml" hash="59ce2628610a4624235a5c820beac2d2"/></dir></dir></target><target name="magecommunity"><dir><dir name="Tagalys"><dir name="Core"><dir name="Block"><dir name="Adminhtml"><dir name="Tagalys"><dir name="Edit"><file name="Form.php" hash="31cae34d1e9bd5cb0c881ae5a6fc03c0"/><dir name="Tab"><file name="Apicredentials.php" hash="9005c30790a51ad077cb4be46a07b766"/><file name="Mpages.php" hash="ba526eb77efd4000ae96404bd04aa638"/><file name="Search.php" hash="fef14680d0feb63bb4e928296c3b9032"/><file name="Searchsuggestions.php" hash="5c87af24ad22c663da17e0a1ffe9a655"/><file name="Support.php" hash="c68547cfe57cbccdcbcf7c3eb35ed6b3"/><file name="Sync.php" hash="849f7bb77ff568e7f29cf63d54e7faa8"/><file name="Syncsettings.php" hash="77ecb1594c7b409e2055ff8394b85aa8"/><file name=".DS_Store" hash="194577a7e20bdcc7afbb718f502c134c"/></dir><file name="Tabs.php" hash="20d85d9037ba7a885c33030657900c88"/><file name=".DS_Store" hash="711f187349473a2c6e6d564d4a2faeb9"/></dir><file name="Edit.php" hash="9da04e9a4aec76ce5f5bd88c453390cd"/><file name=".DS_Store" hash="2f95379345a665b8fd261ff7c2f5a7af"/></dir><file name=".DS_Store" hash="96cf5cac0d87be80da73c36e96971923"/></dir><file name=".DS_Store" hash="8c5a4cb1f6f8e10ade87d78ff4d0bfe4"/></dir><dir name="Helper"><file name="Data.php" hash="a58dbfb1712015d7c4097c5efd4c8ad4"/><file name="Service.php" hash="94f22f59fb9f6a8f021695ce18d02aec"/><file name="SyncFile.php" hash="5b60934e482b5d2332e7eae44c907a72"/></dir><dir name="Model"><file name="Client.php" hash="30e1a58406d31c97bc249acc8ebeee9c"/><file name="Config.php" hash="784ee62e5d029503f915bfdaf9cff003"/><dir name="Mysql4"><dir name="Config"><file name="Collection.php" hash="0967ac6ac1a049d9e09288641d2b4a58"/></dir><file name="Config.php" hash="3562b9ffdf260e34945f9e7830facc1b"/><dir name="Queue"><file name="Collection.php" hash="db01d5b412ca3f8cbc1cbbe8b1ed3d0d"/></dir><file name="Queue.php" hash="50fd814880c6adf02dcb9babe5874811"/><file name=".DS_Store" hash="d3dec31675796dca442be9f6076210df"/></dir><file name="Observer.php" hash="9197f6fb573484db244c141607872b95"/><file name="ProductDetails.php" hash="9ee376662c3551a3e531262905fe057e"/><file name="Queue.php" hash="459a74e66f2a7ccd146f480701574464"/><file name=".DS_Store" hash="3db11e65f616ba2524ebf71cf1300fa5"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="TagalysController.php" hash="ae3d1b6cc8d229e98130704b8e010e17"/></dir><file name="SyncfilesController.php" hash="1b8476cbb4d02ec87b7742e4dc9fff4b"/><file name=".DS_Store" hash="db462bf5da1a15c73197a0fefd3f5b51"/></dir><dir name="etc"><file name="config.xml" hash="f9e2ed4a28bb37c3c99b9fc6cc8b71d4"/></dir><dir name="sql"><dir name="tagalys_core_setup"><file name="mysql4-install-0.3.0.php" hash="fca9f934db6850d950dfdcd71dba7dcd"/><file name="mysql4-upgrade-0.1.0-0.3.0.php" hash="1eb2da3bdf0753b6f4904f1fd62af32f"/><file name="mysql4-upgrade-0.2.0-0.3.0.php" hash="1eb2da3bdf0753b6f4904f1fd62af32f"/></dir><file name=".DS_Store" hash="d87f0e93ae82377a5ceeda9bd58740e8"/></dir><file name=".DS_Store" hash="d1024e81b6252a3d102a906452f53021"/></dir><dir name="SearchSuggestions"><dir name="Helper"><file name="Data.php" hash="a88adfc9f92bb01b4fdb851ea4f265d3"/></dir><dir name="Model"><file name="Observer.php" hash="73e90449054eac498e3b4dfd55db33f1"/></dir><dir name="etc"><file name="config.xml" hash="1e1ee26e326c03473e5854f5dae06c59"/></dir></dir><dir name="Search"><dir name="controllers"><file name="IndexController.php" hash="baaeb347db3b8d32d09a83d3369388a8"/></dir><dir name="etc"><file name="config.xml" hash="5e5a0a2d2de927241c1e97f435a382f7"/></dir><file name=".DS_Store" hash="822777d708619165d544d3256174adc2"/></dir><dir name="Mpages"><dir name="controllers"><file name="IndexController.php" hash="1d80e73a3e3d2a51cff12ebbe1b1364e"/></dir><dir name="etc"><file name="config.xml" hash="80d1b3c82d4da93c271376881f663db5"/></dir><file name=".DS_Store" hash="822777d708619165d544d3256174adc2"/></dir><dir name="Analytics"><dir name="Block"><file name="Productview.php" hash="117109f50c13a14efc4d5740d9e1eace"/></dir><dir name="Model"><file name="Observer.php" hash="650e1c3bacab113e25958af98195de51"/></dir><dir name="controllers"><file name="IndexController.php" hash="eb9aa135e201be33671b11838df576c6"/></dir><dir name="etc"><file name="config.xml" hash="ad31a8918cafb214865a7e55fad09383"/></dir></dir></dir></dir></target><target name="magedesign"><dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="tagalys_core.xml" hash="a0875951441399a46dfb5cb3d346b7d8"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="tagalys_search_suggestions.xml" hash="d2747d9b9047e64a3072d88bfd6ced73"/><file name="tagalys_analytics.xml" hash="118011a85efeff3dc83370777b40082c"/></dir><dir name="template"><dir name="tagalys_search_suggestions"><file name="search_suggestions.phtml" hash="eccd95a4ed035215986831383d6ca738"/></dir><dir name="tagalys_search"><file name="index.phtml" hash="45947e71dd01470b5d1664a7e7eaa5bd"/></dir><dir name="tagalys_mpages"><file name="index.phtml" hash="8ad2aeed80bc1d9b86649ac34e5eaa2f"/></dir><dir name="tagalys_analytics"><file name="product_view.phtml" hash="1506f400ebab1f39c5e4d4c294911fb0"/><file name="track_cookie.phtml" hash="8e1e120aeead1a80a92762be1fea7ab1"/></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="css"><dir name="tagalys"><file name="tagalys-configuration.css" hash="fa3b8f3a4d1bebbbcef261f10e4652b7"/></dir></dir><dir name="images"><dir name="tagalys"><file name="tagalys-logo.png" hash="b26278b173e29b21edc16ddd06ca0192"/></dir></dir></dir></dir></dir></dir></target><target name="mage"><dir><dir name="js"><file name="tagalys-configuration.js" hash="e32466267eb8e54a32119ac8e49c6589"/></dir></dir></target></contents>
|
16 |
<compatible/>
|
17 |
<dependencies><required><php><min>5.3.0</min><max>7.0.10</max></php></required></dependencies>
|
18 |
</package>
|