tutorial sirve que pricing plataforma para espaƱol descarga php magento

php - sirve - Verificando si un producto de Magento es hijo de un producto configurable



magento tutorial (5)

Dado que los productos simples que forman parte de productos configurables suelen tener un valor de visibilidad de Not Visible Individually , probablemente sea suficiente agregar un filtro de visibilidad a la colección que verifique la visibilidad de los productos en el catálogo:

$collection->setVisibility(Mage::getModel(''catalog/product_visibility'')->getVisibleInCatalogIds());

En la circunstancia poco probable de que los productos resultantes sean parte de un producto configurable, puede usar el método Mage_Catalog_Model_Product_Type_Configurable::getParentIdsByChild para verificar si un producto se usa como parte de un producto configurable.

Tengo el siguiente código para obtener una lista de productos

$collection = Mage::getModel(''catalog/product'')->getCollection(); $collection->addAttributeToSelect(''name'') ->addAttributeToFilter("category_ids", array(''finset''=>$this->category_id)); foreach($collection as $product) { echo $product->getName(); }

Mi pregunta es, ¿cómo puedo NO hacer eco de productos que son "simples" pero pertenecen a un producto "configurable" para padres? (por ejemplo, no muestres "Red Shirt Medium" ya que pertenece a "Red Shirt")

He descubierto que esta asociación vive en '' catalog_product_super_link '', pero recién comencé con Magento y desafortunadamente no sé cómo filtrar :)

Animo amigos,

Chris.


Hay una función llamada isConfigurable en la clase de producto.

Eso puede ser de ayuda para usted.

$product->isConfigurable(); // if its the parent object it''ll be true, if its the child it''ll be false.


He hecho algo similar para nuestro feed de google. Este fragmento de código es lo que utilizo para verificar la herencia de los productos:

$products = Mage::getModel(''catalog/product'')->getCollection(); $products->addAttributeToSelect(''*''); $products->addAttributeToFilter(''status'', 1);//enabled $products->addAttributeToFilter(''price'', array(''gt'' => 0) );//price not 0 //$products->addAttributeToFilter(''visibility'', 4); //catalog, search - comment out to show all items (configurable products simple product breakdowns) Mage::getSingleton(''catalog/product_status'')->addVisibleFilterToCollection($products); $prodIds=$products->getAllIds(); try { foreach($prodIds as $productId) { $product = Mage::getModel(''catalog/product''); $product->load($productId); // SIMPLE PRODUCTS if($product->getTypeId() == ''simple'' ) { $prodName = trim($product->getName()); $parentIds = Mage::getModel(''catalog/product_type_grouped'')->getParentIdsByChild($productId); if(!$parentIds) $parentIds = Mage::getModel(''catalog/product_type_configurable'')->getParentIdsByChild($productId); if($parentIds) { $parentProd = Mage::getModel(''catalog/product'')->load($parentIds[0]); /* * do something if this product has a parent or do some checks against $parentProd */ } // end parent check }//if SIMPLE } // foreach } catch(Exception $e) { die($e->getMessage()); }


La manera más rápida podría ser comprobar si la visibilidad del producto está configurada en "No visible individualmente", ya que los productos simples asociados con productos configurables generalmente se configuran para esto. Desafortunadamente, no conozco la sintaxis exacta, pero espero que alguien más esté dispuesto a tocarlo.


No conozco una forma directa de agregar esta condición a la colección, también me interesaría esa solución. Pero siempre puedes verificar dentro del ciclo de cada producto:

if (empty(Mage::getModel(''catalog/product_type_configurable'')->getParentIdsByChild($product->getId()))) { echo $product->getName(); }