google_tag-8.x-1.x-dev/src/Plugin/views/area/CommerceProductViewItemList.php
src/Plugin/views/area/CommerceProductViewItemList.php
<?php declare(strict_types=1); namespace Drupal\google_tag\Plugin\views\area; use Drupal\commerce_product\Entity\ProductInterface; use Drupal\commerce_product\Entity\ProductVariationInterface; use Drupal\google_tag\EventCollectorInterface; use Drupal\views\Plugin\views\area\AreaPluginBase; use Symfony\Component\DependencyInjection\ContainerInterface; /** * View area plugin. * * @ViewsArea("commerce_product_view_item_list") */ final class CommerceProductViewItemList extends AreaPluginBase { /** * Collector. * * @var \Drupal\google_tag\EventCollectorInterface */ private EventCollectorInterface $eventCollector; /** * {@inheritDoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { $instance = parent::create($container, $configuration, $plugin_id, $plugin_definition); $instance->eventCollector = $container->get('google_tag.event_collector'); return $instance; } /** * {@inheritDoc} */ public function render($empty = FALSE): array { if (!$empty || !empty($this->options['empty'])) { $items = []; foreach ($this->view->result as $result) { if ($result->_entity instanceof ProductVariationInterface) { $items[] = $result->_entity; } elseif ($result->_entity instanceof ProductInterface) { $items[] = $result->_entity->getDefaultVariation(); } } $this->eventCollector->addEvent('commerce_view_item_list', [ 'item_list_id' => $this->view->id(), 'item_list_name' => $this->view->getTitle(), 'items' => $items, ]); } return []; } }