/** * @param array $configurableAttributes * @return array */ protected function getProductAttributes($configurableAttributes) { $attributesData = []; foreach ($configurableAttributes as $attributeCode => $value) { $attribute = $this->eavConfig->getAttribute('catalog_product', $attributeCode); if (!$attribute->getId()) { continue; } $options = $this->productConverter->getAttributeOptions($attribute->getAttributeCode()); $attributeOption = $options->getItemByColumnValue('value', $value); $attributeId = $attributeOption->getDataByKey('attribute_id'); $attributesData[$attributeId] = $attributeOption->getDataByKey('option_id'); } return $attributesData; }
/** * @param string $urlAttributes * @return string */ protected function getUrlFilter($urlAttributes) { $separatedAttributes = $this->getArrayValue($urlAttributes, ';'); $urlFilter = null; foreach ($separatedAttributes as $attributeNumber => $attributeValue) { $attributeData = $this->getArrayValue($attributeValue, '='); $attributeOptions = $this->productConverter->getAttributeOptions($attributeData[0]); $attributeValue = $attributeOptions->getItemByColumnValue('value', $attributeData[1]); if ($attributeNumber == 0) { $urlFilter = $attributeData[0] . '=' . $attributeValue->getId(); continue; } $urlFilter .= '&' . $attributeData[0] . '=' . $attributeValue->getId(); } return $urlFilter; }