This module provides a messenger-like service for pushing events/data into the client side data layer.
The intended use of this module is through the cm_data_layer.data_layer
service eg.
\Drupal::service('cm_data_layer.data_layer')->push([
'event' => 'myEvent',
'data' => [
'some_key' => 'some_value',
],
]);Or more realistically, you'll oftentimes be in an event subscriber where the service can be an injected dependecy:
$this->dataLayer->push([
'event' => 'myEvent',
'data' => [
'some_key' => 'some_value',
],
]);If the current response is a normal page load, then any new data pushed into the
service will get delivered to the client via drupalSettings and then into
the window.dataLayer object on page load via Drupal.behaviors.dataLayerPush.
If the response is an AJAX one, then any new data is delivered to the client
through the \Drupal\cm_data_layer\Ajax\DataLayerPushCommand which is
implemented on the client as Drupal.AjaxCommands.prototype.dataLayerPush