Estoy construyendo un bloque de "Producto del mes" para el pie de página. Debería cargar los productos de una categoría y mostrar la primera.Magento: muestra productos de una categoría específica en el pie de página
Este es mi archivo de plantilla custom/featured-product.phtml
:
<?php $_productCollection = $this->getLoadedProductCollection() ?>
<div class="featured-product">
<h2><?php echo $this->__('Product of the Month') ?></h2>
<?php foreach ($_productCollection as $_product): ?>
<div class="item">
<a class="product-image" href="<?php echo $_product->getProductUrl() ?>">
<img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(200); ?>" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" />
</a>
<a class="product-name" href="<?php echo $_product->getProductUrl() ?>"><?php echo $this->htmlEscape($_product->getName()) ?></a>
<?php echo $this->getPriceHtml($_product, true) ?>
</div>
<?php
// Note: Exit after first product.
break;
?>
<?php endforeach ?>
</div>
Es sólo una versión simplificada de la plantilla de la lista de productos de Magento: catalog/product/list.phtml
TRABAJANDO
al incrustar el bloque en un CMS página, funciona bien. Ejemplo:
{{block type="catalog/product_list" category_id="13" template="custom/featured-product.phtml" }}
NOT WORKING
al incrustar el bloque a través de local.xml
, falla. Se devuelve el marcado correcto pero no se carga la categoría especificada. En su lugar, se carga un conjunto de productos aleatorios (no sé cómo se seleccionan).
Mi código en local.xml
:
<default>
<reference name="footer">
<block type="catalog/product_list" name="custom.featuredProduct" as="product_of_the_month" category_id="13" template="custom/featured-product.phtml" />
</reference>
</default>
Para completar, estoy haciendo que el bloque de forma explícita en page/html/footer.phtml
así:
<?php echo $this->getChildHtml('product_of_the_month') ?>
¿Alguna idea?
Mi mejor estimación es que mi local.xml
es incorrecta. ¿Hay un bloque padre que necesito cargar?
[Actualizaciones]
Mi código original se cuela en la página del producto. La solución alternativa es no basando el código tan fuertemente en el archivo de núcleo de Magento: catalog/product/list.phtml
. Específicamente evitar esta línea:
<?php $_productCollection = $this->getLoadedProductCollection() ?>
[Solución]
Una versión de trabajo con ejemplos de uso de CMS Pages y LayoutXML se incluye aquí: problemas aleatorios https://stackoverflow.com/a/12288000/1497746
'local.xml' - donde se encuentra este archivo? (ruta completa) – FlorinelChis
@FlorinelChis: este no es un problema con la jerarquía de repliegue de temas. Es el lugar normal para un paquete personalizado: /app/design/frontend/custom/custom/layout/local.xml –