dekar91/yii2-datalayer DataLayer integration for the Yii framework

Yii2 DataLayer helper

This extension is managed to help you fulfill dataLayer variable with initial data on fly. Some Google enhanced e-commerce features are also available.

Installation

  • The minimum required PHP version is PHP 7.1,
  • Yii2 is required.
    Using composer

    Add following line in your require section: ` "dekar91/yii2-datalayer": "@stable"

Then, register the component in your application config:
    'dataLayer' => [
        'class' => 'dekar91\datalayer\DataLayer'
    ],


## Configuration
Plugin involves both PHP and JavaScript functionality. PHP component supports following parameters:

| Parameter  | Default | Description |
| ------------- | ------------- | ------------- |
| autoPublish  | true | Whether catch EVENT_END_PAGE event in order to render DataLayer. If false you should render datalayer by yourself though getJs or render method  |
| observers  | ['ec' => ['class' => DataLayerEc::class]] |Array of classes may be used like wrapper on datalayer accessible by key each element must be following format: 'key' => ['class' => {name of class to be loaded}, 'options' => {Additional options}.   |
| customEvents  | [] | Array of event must be handled by JavaScript.Format: ['jsSelector' => 'nameOfEvent', 'customEventData'] |

Configuration example:
    'dataLayer' => [
        'class' => 'dekar91\datalayer\DataLayer',
        'options' => [
            'autoPublish' => true,
            'observers' => ['ec' => ['class' => DataLayerEc::class]],
            'customEvents' => [
                ['.btn-checkout', 'click' , ['event' => 'checkoutEvent']],
                ]
            ]
    ],

with this configuration you DataLayer will be published, DataLayerEc can be used by Yii::app()-> dalaLayer->ec,
click on .btn-checkout will be handled and event information will be pushed in dataLayer.

## Usage
### Basic usage
You can push in dataLayer before rendering though **Yii::app()-> dalaLayer->push();**

#### Methods
| Method  | Description |
| ------------- | ------------- |
| render($return = false) | Render or return dataLayer Js variable |
| push(array $data, string $key = null) | push data to dataLayer with corresponding key. |
| &getItem($key) | return element of dataLayer by link |

### Enhanced e-commerce
Some basic functions of [Enhanced e-commerce](https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce) are supported by default class DataLayerEc.
 Please look though google documentation for further details.
 
**Be careful!** Do not push data in ajax request, it will not take effect.

#### Methods:
| Method  |
| ------------- |
|currencyCode(string $currencyCode)|
|addProductImpression(array $product)|
|addPromoClick(array $product, array $action = [])|
|addPromoImpression(array $product)|
|addProductClick(array $product, array $action = [])|
|addProductDetails(array $product, array $action = [])|
|addToCart(array $product)|
|removeFromCart(array $product)|
|checkout(array $product, array $action = [])|
|checkoutOption($step, $checkoutOption)|
|purchase(array $purchase, array $products)|
|refund(array $transactionId, array $products = [])|



### User-defined observers
It's possible to extend dataLayer functionality by custom classes. While class is registered though observers property it can be used by Yii::app()->dataLayer->customClass. DataLayer object will be passed as first parameter in constructor.

0 0
1 follower
16 downloads
Yii Version: 2.0
License: MIT
Category: Web Service
Developed by: DekaR
Created on: Apr 27, 2018
Last updated: (not set)
Packagist Profile
Github Repository

Related Extensions