@@ -570,8 +570,8 @@ public function prepareProductIndex($indexData, $productData, $storeId)
570
570
}
571
571
}
572
572
foreach ($ indexData as $ entityId => $ attributeData ) {
573
- foreach ($ attributeData as $ attributeId => $ attributeValue ) {
574
- $ value = $ this ->getAttributeValue ($ attributeId , $ attributeValue , $ storeId );
573
+ foreach ($ attributeData as $ attributeId => $ attributeValues ) {
574
+ $ value = $ this ->getAttributeValue ($ attributeId , $ attributeValues , $ storeId );
575
575
if (!empty ($ value )) {
576
576
if (isset ($ index [$ attributeId ])) {
577
577
$ index [$ attributeId ][$ entityId ] = $ value ;
@@ -602,16 +602,16 @@ public function prepareProductIndex($indexData, $productData, $storeId)
602
602
* Retrieve attribute source value for search
603
603
*
604
604
* @param int $attributeId
605
- * @param mixed $valueId
605
+ * @param mixed $valueIds
606
606
* @param int $storeId
607
607
* @return string
608
608
*/
609
- private function getAttributeValue ($ attributeId , $ valueId , $ storeId )
609
+ private function getAttributeValue ($ attributeId , $ valueIds , $ storeId )
610
610
{
611
611
$ attribute = $ this ->getSearchableAttribute ($ attributeId );
612
- $ value = $ this ->engine ->processAttributeValue ($ attribute , $ valueId );
612
+ $ value = $ this ->engine ->processAttributeValue ($ attribute , $ valueIds );
613
613
if (false !== $ value ) {
614
- $ optionValue = $ this ->getAttributeOptionValue ($ attributeId , $ valueId , $ storeId );
614
+ $ optionValue = $ this ->getAttributeOptionValue ($ attributeId , $ valueIds , $ storeId );
615
615
if (null === $ optionValue ) {
616
616
$ value = $ this ->filterAttributeValue ($ value );
617
617
} else {
@@ -626,13 +626,15 @@ private function getAttributeValue($attributeId, $valueId, $storeId)
626
626
* Get attribute option value
627
627
*
628
628
* @param int $attributeId
629
- * @param int $valueId
629
+ * @param int|string $valueIds
630
630
* @param int $storeId
631
631
* @return null|string
632
632
*/
633
- private function getAttributeOptionValue ($ attributeId , $ valueId , $ storeId )
633
+ private function getAttributeOptionValue ($ attributeId , $ valueIds , $ storeId )
634
634
{
635
635
$ optionKey = $ attributeId . '- ' . $ storeId ;
636
+ $ attributeValueIds = explode (', ' , $ valueIds );
637
+ $ attributeOptionValue = '' ;
636
638
if (!array_key_exists ($ optionKey , $ this ->attributeOptions )
637
639
) {
638
640
$ attribute = $ this ->getSearchableAttribute ($ attributeId );
@@ -650,8 +652,12 @@ private function getAttributeOptionValue($attributeId, $valueId, $storeId)
650
652
$ this ->attributeOptions [$ optionKey ] = null ;
651
653
}
652
654
}
653
-
654
- return $ this ->attributeOptions [$ optionKey ][$ valueId ] ?? null ;
655
+ foreach ($ attributeValueIds as $ attrValueId ) {
656
+ if (isset ($ this ->attributeOptions [$ optionKey ][$ attrValueId ])) {
657
+ $ attributeOptionValue .= $ this ->attributeOptions [$ optionKey ][$ attrValueId ] . ' ' ;
658
+ }
659
+ }
660
+ return empty ($ attributeOptionValue ) ? null : trim ($ attributeOptionValue );
655
661
}
656
662
657
663
/**
0 commit comments