6 declare(strict_types=1);
22 private $filtersProvider;
27 private $swatchHelper;
32 private $renderLayered;
42 \
Magento\Swatches\Helper\Data $swatchHelper,
43 \
Magento\Swatches\Block\LayeredNavigation\RenderLayered $renderLayered
45 $this->filtersProvider = $filtersProvider;
46 $this->swatchHelper = $swatchHelper;
47 $this->renderLayered = $renderLayered;
60 public function aroundGetData(
Filters $subject, \Closure $proceed,
string $layerType) : array
64 foreach ($this->filtersProvider->getFilters($layerType) as $filter) {
65 if ($filter->hasAttributeModel()) {
66 if ($this->swatchHelper->isSwatchAttribute($filter->getAttributeModel())) {
67 $swatchFilters[] = $filter;
72 $filtersData = $proceed($layerType);
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']
__construct(FiltersProvider $filtersProvider, \Magento\Swatches\Helper\Data $swatchHelper, \Magento\Swatches\Block\LayeredNavigation\RenderLayered $renderLayered)