public function setProduct($product) { $configurableCodes = Mage::getStoreConfig('amshopby/general/configurable_images'); if (!empty($configurableCodes) && $product->isConfigurable() && $product->isSaleable()) { $configurableCodes = explode(",", trim($configurableCodes)); $productTypeIns = $product->getTypeInstance(true); $childIds = $productTypeIns->getChildrenIds($product->getId()); $requestParams = Mage::app()->getRequest()->getParams(); foreach ($childIds[0] as $childId) { $hasInRequest = 0; $hasMatch = 0; $childProduct = Mage::getModel('catalog/product')->setStoreId($product->getStoreId())->load($childId); foreach ($configurableCodes as $filterCode) { if (in_array($filterCode, array_keys($requestParams))) { $hasInRequest++; $value = $requestParams[$filterCode]; if (strpos($value, ",") !== false) { $value = explode(",", $value); } else { $value = array($value); } if (in_array($childProduct->getData($filterCode), array_values($value))) { $hasMatch++; } } } if ($hasInRequest != 0 && $hasInRequest == $hasMatch) { $product = $childProduct; } } } parent::setProduct($product); }
public function setProduct($product) { if (!isset($this->requestConfigurableMap)) { $this->computeRequestConfigurableMap(); } if ($this->requestConfigurableMap && $product->isConfigurable() && $product->isSaleable()) { $child = $this->getMatchingSimpleProduct($product); if (is_object($child)) { $product = $child; } } parent::setProduct($product); }
public function setProduct($product) { if (!isset($this->requestConfigurableMap)) { $this->computeRequestConfigurableMap(); } if ($this->requestConfigurableMap && $product->isConfigurable() && $product->isSaleable()) { $children = $this->getPossibleSimpleProducts($product); foreach ($children as $childProduct) { if ($this->matchProduct($childProduct)) { $product = $childProduct; $product->load($product->getId()); break; } } } parent::setProduct($product); }