Мне нужно получить идентификатор продукта для продукта с атрибутом с определенным значением.
Вот что я до сих пор:
$found = false; foreach ($_productCollection as $_product) { $attribute = $_product->getResource()->getAttribute('attribute'); $id = $_product->getId(); if ($attribute = NULL) { // Do Nothing } if ($attribute = "value1") { echo $attribute . "<br>"; $value1 = $id; } if ($attribute = "value2") { echo $attribute . "<br>"; $value2 = $id; } if ($attribute = "value3") { echo $attribute . "<br>"; $value3 = $id; } if ($value1 && $value2 && $value3) { $found = true; echo "All IDs Found" ."<br>"; } if ($found = true) { break; } } echo "Value 1 ID = " . $value1 ."<br>". "Value 2 ID = " . $value2 ."<br>". "Value 3 ID = " . $value3;
В основном это работает, он правильно проверяет продукты и может получать значения атрибутов для каждого продукта. Но он показывает идентификатор для первого продукта в категории, для каждого продукта независимо от того, какой атрибут у них есть.
Как это:
value1 value2 value3 All IDs Found Value 1 ID = 17024 Value 2 ID = 17024 (should be 17025) Value 3 ID = 17024 (should be 17026)
Как я могу получить его, чтобы, если в категории с атрибутом есть продукт и какое-то конкретное значение, он отобразит идентификатор продуктов?
Редактировать:
Использование == имеет фиксированную часть моей проблемы.
Другая проблема заключалась в том, что, используя:
$_product->getResource()->getAttribute('attribute');
Не получил атрибут таким образом, который позволил мне использовать его значения. Вместо этого:
$_product->getAttributeText('attribute');
и установка атрибута «Использовать в листинге продукта». Это позволило мне использовать выражения if для каждого значения.
Вы присваиваете значение каждый раз:
if ($attribute = "value1") {
Используйте double для сравнения:
if ($attribute == "value1") {