php - source - magento que es
Cómo obtener productos de una categoría particular en magento ecommerce (6)
Me gustaría obtener una lista de productos aleatorios de la misma categoría que el producto actual para mostrar dentro de la vista del producto: hasta ahora todo lo que he desenterrado es
Productos de Magento por categorías
¿Alguien sabe como hacer esto?
Este código te ayudará a obtener productos de la categoría id 2 . Y también aquí utiliza un archivo de plantilla list_home.phtml para la lista de productos.
echo $this->getLayout()->createBlock("catalog/product_list")
->setCategoryId(2)->setTemplate("catalog/product/list_home.phtml")->toHtml();
list_home.phtml
<?php
$this->getChild(''toolbar'')->setCurrentMode(''list''); //uses list mode
$_productCollection = $this->getLoadedProductCollection();
$_helper = $this->helper(''catalog/output'');
?>
<?php if (!$_productCollection->count()): ?>
<p class="note-msg"><?php echo $this->__(''There are no products matching the selection.'') ?></p>
<?php else: ?>
--use code for listing---
Lo que terminé haciendo es en app / design / frontend / default / theme_name / template / catalog / product / list_random.phtml
haciendo algo como:
<?php
$_categories=$this->getCurrentChildCategories();
$_category = $this->getCurrentCategory();
$subs = $_category->getAllChildren(true);
$result = array();
foreach($subs as $cat_id) {
$category = new Mage_Catalog_Model_Category();
$category->load($cat_id);
$collection = $category->getProductCollection();
foreach ($collection as $product) {
$result[] = $product->getId();
}
}
shuffle($result);
?>
esto le proporcionará una variedad de identificaciones de productos. Puede recorrerlos y crear productos sobre la marcha usando:
<?php
$i=0;
foreach ($result as $_product_id){
$i++;
$_product = new Mage_Catalog_Model_Product();
$_product->load($_product_id);
//do something with the product here
}?>
luego, crea un bloque estático en el cms con el siguiente contenido
{{block type="catalog/navigation" template="catalog/product/list_random.phtml"}}
Finalmente, en la sección Catálogo-> Administrar categorías, elija la categoría, luego la pestaña de configuración de pantalla. Cambie el modo de visualización a "Bloque estático y productos" y luego elija su bloque de la lista desplegable.
Y eso debería hacerlo.
Aquí está el código para obtener productos de cualquier categoría en particular:
$productCollection = Mage::getResourceModel(''catalog/product_collection'')
->addCategoryFilter($category);
$products = Mage::getModel(''catalog/category'')->load(category_id); //put your category id here
$productslist = $products->getProductCollection()->addAttributeToSelect(''*'');
foreach($productslist as $product)
{
echo ''price: '' . $product->getPrice() . ''<br/>'';
}
Este es, con mucho, el código conveniente para obtener detalles del producto de categoría perticular. Espero que te ayude.
Debe instanciar un modelo llamando a Mage::getModel(''catalog/product'')
en este caso porque luego obtiene una instancia de objeto configurada, extendida por cualquier módulo configurado.
Si lo haces como new Mage_Catalog_Model_Product()
esto ignorará los módulos y omitirá la API de Magento.
Básicamente carga la categoría, obtiene la Colección de productos y luego filtra de forma adecuada.
$products = Mage::getModel(''catalog/category'')->load($category_id)
->getProductCollection()
->addAttributeToSelect(''*'')
->addAttributeToFilter(''status'', 1)
->addAttributeToFilter(''visibility'', 4)
->addAttributeToFilter(''special_price'', array(''neq'' => ""))
->setOrder(''price'', ''ASC'')
;