Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
DataProviderPlugin.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
13 
18 {
22  private $filtersProvider;
23 
27  private $swatchHelper;
28 
32  private $renderLayered;
33 
40  public function __construct(
41  FiltersProvider $filtersProvider,
42  \Magento\Swatches\Helper\Data $swatchHelper,
43  \Magento\Swatches\Block\LayeredNavigation\RenderLayered $renderLayered
44  ) {
45  $this->filtersProvider = $filtersProvider;
46  $this->swatchHelper = $swatchHelper;
47  $this->renderLayered = $renderLayered;
48  }
49 
60  public function aroundGetData(Filters $subject, \Closure $proceed, string $layerType) : array
61  {
62  $swatchFilters = [];
64  foreach ($this->filtersProvider->getFilters($layerType) as $filter) {
65  if ($filter->hasAttributeModel()) {
66  if ($this->swatchHelper->isSwatchAttribute($filter->getAttributeModel())) {
67  $swatchFilters[] = $filter;
68  }
69  }
70  }
71 
72  $filtersData = $proceed($layerType);
73 
74  foreach ($filtersData as $groupKey => $filterGroup) {
76  foreach ($swatchFilters as $swatchFilter) {
77  if ($filterGroup['request_var'] === $swatchFilter->getRequestVar()) {
78  $swatchData = $this->renderLayered->setSwatchFilter($swatchFilter)->getSwatchData();
79  foreach ($filterGroup['filter_items'] as $itemKey => $filterItem) {
80  foreach ((array)$swatchData['swatches'] as $swatchKey => $swatchDataItem) {
81  if ($filterItem['value_string'] == $swatchKey) {
82  $filtersData[$groupKey]['filter_items'][$itemKey]['swatch_data'] = [
83  'type' => $swatchDataItem['type'],
84  'value' => $swatchDataItem['value']
85  ];
86  }
87  }
88  }
89  }
90  }
91  }
92 
93  return $filtersData;
94  }
95 }
__construct(FiltersProvider $filtersProvider, \Magento\Swatches\Helper\Data $swatchHelper, \Magento\Swatches\Block\LayeredNavigation\RenderLayered $renderLayered)
$swatchData
Definition: renderer.phtml:11