Codeschnipsel: Beziehungen zwischen Simple und Configurable Products
Archiv-Beitrag aus 2010 – Magento mache ich heute nur noch selten. Aktuell: com:werft (Shopware 6, Laravel & PHP) · siepker.com · kontor:worx · campr
Bei der Arbeit mit Produkten kann es passieren, dass man zu einem Simple-Product wissen möchte, ob es Teil eine Configurable Products ist. Auch der Weg umgekehrt kann vorkommen. Ausgehend vom Configurable Product sollen die Simple Products ermittelt werden.
Teil 1: Configurable Product ermitteln
$sku = "A1234";
$product = Mage::getModel('catalog/product');
$id = $product->getIdBySku($sku);
$product->load($id);
$parentProductIds = $product->loadParentProductIds()->getParentProductIds();
var_dump($parentProductIds);
array
0 => string '142' (length=3)
1 => string '143' (length=3)
Somit hat man an dieser Stelle die Info, das das Simple Product Teil eines Configurables ist. Umgekehrt kann es z.B. auch sinnvoll sein zu schauen, ob das Configurable Product Simple Products hat.
Teil 2: Simple Products ermitteln
$sku = "A1234";
$product = Mage::getModel('catalog/product');
$id = $product->getIdBySku($sku);
$product->load($id);
$childProducts = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null, $product);
$activeChildProducts = false;
foreach ($childProducts as $child) {
$sku = $child->getSku();
$status = $child->getStatus();
if ($child->getStatus() == Mage_Catalog_Model_Product_Status::STATUS_DISABLED) {
$activeChildProducts = true;
break;
}
}
if (!$activeChildProducts) {
$product->setStatus(Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
}
$product->save();
In diesem Beispiel werden alle Simple-Products eines Configurable Products ermitteln und per Schleife geprüft, ob diese noch den Status "enabled" besitzen. Falls keines dieser Produkt aktiv ist, wird auch das Hauptprodukt auf "disabled" gesetzt.