En:
/magento/app/design/frontend/base/default/template/catalog/product/view/type/grouped.phtml
Verás que utilizan este:
<?php
$_associatedProducts = $this->getAssociatedProducts();
Desde ese archivo phtml es de tipo Mage_Catalog_Block_Product_View_Type_Grouped
, podemos ir a:
/magento/app/code/core/Mage/Catalog/Block/Product/View/Type/Grouped.php
y ver que Mage_Catalog_Block_Product_View_Type_Grouped::getAssociatedProducts()
hace esto:
<?php
$this->getProduct()->getTypeInstance(true)->getAssociatedProducts($this->getProduct());
por lo que podemos asumir con seguridad que $this->getProduct()
devuelve un objeto de producto, y sustituirla por la variable de $product
así:
<?php
if ($product->getTypeId() == 'grouped'){
// how do I now get associated products of $product?
$associatedProducts = $product->getTypeInstance(true)->getAssociatedProducts($product);
}
Si tuviera que optimizar el código completo, me 'd escribir así:
<?php
$products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToFilter('type_id', array('eq' => 'grouped'));
foreach ($products as $product) {
$associatedProducts = $product->getTypeInstance(true)->getAssociatedProducts($product);
// Do something with $associatedProducts
}
Gracias Me podrían hacer que esto funcione ... Quiero iterar sobre todos los productos, y si se agrupa iterar sobre sus productos asociados, todavía quiero todos los productos individuales, no solo productos asociados de productos agrupados. Su código 'optimizado' no incluiría productos únicos regulares, ¿verdad? – Owen
Correcto, solo obtendría una colección de productos agrupados. Lo que quiere usar es $ product-> isGrouped(). Entonces, con su colección de todos los productos, use: foreach ($ productos como $ producto) {if ($ producto-> isGrouped()) {/ * Obtener colección de productos asociados * /}} –