Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add enhanced match; bug fixes #1

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CustomerData/Fpc.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public function getSectionData() {
'events' => []
];

if ($this->_helper->getSession()->hasAddToCart()) {
if ($this->_helper->isAddToCartPixelEnabled() && $this->_helper->getSession()->hasAddToCart()) {
// Get the add-to-cart information since it's unique to the user
// but might be displayed on a cached page
$data['events'][] = [
Expand Down
20 changes: 15 additions & 5 deletions Helper/Data.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ class Data extends AbstractHelper{

/** @var \Magento\Checkout\Model\Session $_checkoutSession */
protected $_checkoutSession;
/** @var \Magento\Sales\Model\OrderFactory $_orderFactory */
protected $_orderFactory;
/** @var ScopeConfigInterface $_scopeConfig */
protected $_scopeConfig;
/** @var \Magento\Sales\Model\Order $_order */
Expand All @@ -25,21 +23,25 @@ class Data extends AbstractHelper{
protected $_storeManager;
/** @var \Cadence\Pinterest\Model\Session $_pinterestSession */
protected $_pinterestSession;
/** @var \Magento\Framework\App\Http\Context $_httpContext */
protected $_httpContext;

public function __construct(
\Magento\Checkout\Model\Session $checkoutSession,
\Magento\Customer\Model\Session $customerSession,
\Magento\Sales\Model\OrderFactory $orderFactory,
\Magento\Catalog\Model\ProductRepository $productRepository,
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Magento\Framework\App\Helper\Context $context,
\Cadence\Pinterest\Model\Session $_pinterestSession
\Cadence\Pinterest\Model\Session $_pinterestSession,
\Magento\Framework\App\Http\Context $httpContext
) {
$this->_checkoutSession = $checkoutSession;
$this->_orderFactory = $orderFactory;
$this->_scopeConfig = $context->getScopeConfig();
$this->_productRepository = $productRepository;
$this->_storeManager = $storeManager;
$this->_pinterestSession = $_pinterestSession;
$this->_httpContext = $httpContext;

parent::__construct( $context );
}
Expand Down Expand Up @@ -77,7 +79,11 @@ public function getPixelHtml($event, $data = false)
$html = <<<HTML
<!-- Begin Pinterest {$event} -->
<script type="text/javascript">
pintrk('track', '{$event}'{$json});
require(['jquery'], function($){
$(document).on('PinterestBaseCodeLoaded', function() {
pintrk('track', '{$event}', {$json});
});
});
</script>
<!-- End Pinterest {$event} -->
HTML;
Expand Down Expand Up @@ -188,4 +194,8 @@ public function getOrderItemsJson()

return json_encode($itemData);
}

public function isCustomerLoggedIn() {
return $this->_httpContext->getValue(\Magento\Customer\Model\Context::CONTEXT_AUTH);
}
}
24 changes: 24 additions & 0 deletions Plugin/CustomerData.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

namespace Cadence\Pinterest\Plugin;

use Magento\Customer\Helper\Session\CurrentCustomer;

class CustomerData {

protected $_currentCustomer;

public function __construct(
CurrentCustomer $currentCustomer
) {
$this->_currentCustomer = $currentCustomer;
}

public function afterGetSectionData(\Magento\Customer\CustomerData\Customer $subject, $result) {
if($this->_currentCustomer->getCustomerId()) {
$customer = $this->_currentCustomer->getCustomer();
$result['email'] = $customer->getEmail();
}
return $result;
}
}
3 changes: 3 additions & 0 deletions etc/frontend/di.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,7 @@
</argument>
</arguments>
</type>
<type name="Magento\Customer\CustomerData\Customer">
<plugin name="cadence_pinterest_customerdata_email" type="Cadence\Pinterest\Plugin\CustomerData" />
</type>
</config>
14 changes: 0 additions & 14 deletions view/frontend/layout/default.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,5 @@
<block class="Cadence\Pinterest\Block\AbstractBlock" name="cadence_pinterest_visitor" template="Cadence_Pinterest::cadence/pinterest/visitor.phtml"/>
<block class="Cadence\Pinterest\Block\AbstractBlock" name="cadence_pinterest_events" template="Cadence_Pinterest::cadence/pinterest/events.phtml" />
</referenceBlock>
<referenceBlock name="after.body.start">
<block class="Magento\Framework\View\Element\Template" name="cadence.pinterest.fpc" before="-"
template="Cadence_Pinterest::cadence/pinterest/fpc.phtml">
<arguments>
<argument name="jsLayout" xsi:type="array">
<item name="components" xsi:type="array">
<item name="cadencePinterestFpc" xsi:type="array">
<item name="component" xsi:type="string">Cadence_Pinterest/js/view/cadence-pinterest-fpc</item>
</item>
</item>
</argument>
</arguments>
</block>
</referenceBlock>
</body>
</page>
14 changes: 9 additions & 5 deletions view/frontend/templates/cadence/pinterest/conversion.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,16 @@ $orderItemJson = $helper->getOrderItemsJson();
?>
<!-- Pinterest Conversion Code for Conversions -->
<script>
pintrk('track','checkout', {
value: <?php echo $grand_total ?>,
currency: '<?php echo $currency_code ?>',
order_quantity: <?php echo $qtyOrdered; ?>,
line_items: <?php echo $orderItemJson ?>
require(['jquery'], function($){
$(document).on('PinterestBaseCodeLoaded', function(){
pintrk('track','checkout', {
value: <?php echo $grand_total ?>,
currency: '<?php echo $currency_code ?>',
order_quantity: <?php echo $qtyOrdered; ?>,
line_items: <?php echo $orderItemJson ?>
});
});
});
</script>
<noscript>
<img height="1" width="1" style="display:none;" alt=""
Expand Down
28 changes: 24 additions & 4 deletions view/frontend/templates/cadence/pinterest/events.phtml
Original file line number Diff line number Diff line change
@@ -1,7 +1,27 @@
<?php
/** @var Cadence\Pinterest\Block\AbstractBlock $block */
$helper = $block->getHelper();
$session = $block->getSession();
if ($helper->isAddToCartPixelEnabled() && $session->hasAddToCart()) {
echo $helper->getPixelHtml('AddToCart', $session->getAddToCart());
}
?>
<?php if($helper->isAddToCartPixelEnabled()): // only event we're tracking at the moment (other than conversion) ?>
<script type="text/javascript">
require([
'jquery',
'Magento_Customer/js/customer-data',
'ko'
], function($, customerData) {
$(document).ready(function(){
customerData.get('cadence-pinterest-fpc').subscribe(function(loadedData){
if (loadedData && "undefined" !== typeof loadedData.events) {
for (var eventCounter = 0; eventCounter < loadedData.events.length; eventCounter++) {
var eventData = loadedData.events[eventCounter];
if ("undefined" !== typeof eventData.eventAdditional && eventData.eventAdditional) {
pintrk('track', eventData.eventName, eventData.eventAdditional || {});
}
}
customerData.set('cadence-pinterest-fpc', {});
}
});
});
});
</script>
<?php endif; ?>
34 changes: 32 additions & 2 deletions view/frontend/templates/cadence/pinterest/visitor.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,45 @@ if (!$helper->isVisitorPixelEnabled()) {
return;
}
$id = $helper->getTagId();
$customerIsLoggedIn = $helper->isCustomerLoggedIn();
?>
<!-- Pinterest Tag Base Code -->
<script type="text/javascript">
!function(e){if(!window.pintrk){window.pintrk=function(){window.pintrk.queue.push(Array.prototype.slice.call(arguments))};var n=window.pintrk;n.queue=[],n.version="3.0";var t=document.createElement("script");t.async=!0,t.src=e;var r=document.getElementsByTagName("script")[0];r.parentNode.insertBefore(t,r)}}("https://s.pinimg.com/ct/core.js");
<?php if(!$customerIsLoggedIn): ?>
pintrk('load', '<?php echo $id ?>');
pintrk('page');
<?php endif; ?>
</script>
<noscript>
<img height="1" width="1" style="display:none;" alt=""
src="https://ct.pinterest.com/v3/?tid=<?php echo $id ?>&noscript=1" />
<img height="1" width="1" style="display:none;" alt="" src="https://ct.pinterest.com/v3/?tid=<?php echo $id ?>&noscript=1" />
</noscript>
<!-- End Pinterest Tag Base Code -->

<?php if($customerIsLoggedIn): ?>
<script type="text/javascript">
require([
'jquery',
'Magento_Customer/js/customer-data',
'ko'
], function($, customerData) {
$(document).ready(function(){
customerData.get('customer').subscribe(function(data){
pintrk('load', '<?php echo $id ?>', {
em: data.email,
});
pintrk('page');
$(document).trigger('PinterestBaseCodeLoaded');
});
});
});
</script>
<?php else: ?>
<script type="text/javascript">
require(['jquery'], function($){
$(document).ready(function() {
$(document).trigger('PinterestBaseCodeLoaded');
});
});
</script>
<?php endif; ?>