Pregunta

I Note el atributo 'Producto destacado' existe en la última versión de Magento.¿Cómo puedo hacer que mis productos destacados se muestren en la página de inicio en el tema RWD?

Gracias

¿Fue útil?

Solución

No veo este atributo como predeterminado agregado a Magento 1.9.x Sin embargo, es muy fácil crear una colección de productos basada en un atributo de producto personalizado i.e. 'Feature_product'.

Una vez que haya construido la colección, puede crear el HTML que desea mostrar a través de un archivo de plantilla, es decir, una característica de un solo producto, o un control deslizante multi producto.

Los pasos para hacer esto son

  • Crear un nuevo método de colección de productos personalizado
  • Crea un nuevo bloqueo de diseño
  • Crea una nueva plantilla

Por ejemplo, si quiero crear una colección de productos para productos visibles con el atributo 'feature_product' i Cree un nuevo archivo llamado Feelfrured.php en Magento / Aplicación / Código / Local / Mage / Catálogo / Bloqueo / Producto

<?php
class Mage_Catalog_Block_Product_Featured extends mage_Catalog_Block_Product_Abstract
{
    protected $_productsCount = null;
    protected $_categoryId = null;

    const DEFAULT_PRODUCTS_COUNT = 12;

/**
 * Initialize block's cache
 */
protected function _construct()
{
    parent::_construct();

    $this->addColumnCountLayoutDepend('empty', 6)
        ->addColumnCountLayoutDepend('one_column', 5)
        ->addColumnCountLayoutDepend('two_columns_left', 4)
        ->addColumnCountLayoutDepend('two_columns_right', 4)
        ->addColumnCountLayoutDepend('three_columns', 3);

    $this->addData(array(
        'cache_lifetime'    => 86400,
        'cache_tags'        => array(Mage_Catalog_Model_Product::CACHE_TAG),
    ));
}

/**
 * Get Key pieces for caching block content
 *
 * @return array
 */
public function getCacheKeyInfo()
{
    return array(
       'CATALOG_PRODUCT_NEW',
       Mage::app()->getStore()->getId(),
       Mage::getDesign()->getPackageName(),
       Mage::getDesign()->getTheme('template'),
       Mage::getSingleton('customer/session')->getCustomerGroupId(),
       'template' => $this->getTemplate(),
       $this->getProductsCount(),
       Mage::app()->getStore()->getCurrentCurrencyCode(),
       empty($this->_categoryId) ? "ALL" : $this->_categoryId
    );
}

/**
 * Prepare collection with new products and applied page limits.
 *
 * return Mage_Catalog_Block_Product_New
 */
protected function _beforeToHtml()
{
    $collection = Mage::getResourceModel('catalog/product_collection');
    $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());

    $collection = $this->_addProductAttributesAndPrices($collection)
        ->addStoreFilter()
        ->addAttributeToSelect('featured_product')
        ->addFieldToFilter(array(
            array('attribute'=>'ext_enable','eq'=>'1'),
        ))
        ->addAttributeToSort('name', 'desc')
        ->setPageSize($this->getProductsCount())
        ->setCurPage(1)
    ;

    // Limit to a specific category
    //if(!empty($this->_categoryId)) $collection->addCategoryFilter(Mage::getModel("catalog/category")->load($this->_categoryId));

    $this->setProductCollection($collection);

    return parent::_beforeToHtml();
}

/**
 * Set a specific category to take the products from.
 *
 * @param $catid
 * @return Mage_Catalog_Block_Product_New
 */
public function setCategory($catid)
{
    $this->_categoryId = (int)$catid;
    return $this;
}

/**
 * Set how much product should be displayed at once.
 *
 * @param $count
 * @return Mage_Catalog_Block_Product_New
 */
public function setProductsCount($count)
{
    $this->_productsCount = $count;
    return $this;
}

/**
 * Get how much products should be displayed at once.
 *
 * @return int
 */
public function getProductsCount()
{
    if (null === $this->_productsCount) {
        $this->_productsCount = self::DEFAULT_PRODUCTS_COUNT;
    }
    return $this->_productsCount;
    }
}

Luego, agrego lo siguiente a mi diseño, por ejemplo. Si quiero que aparezca el bloque en la página de inicio, puedo colocarlo dentro de la sección CMS_INDEX_INDEX

            <block type="catalog/product_featured" name="catalog.product.featured" alias="featured_products">
            <action method="setTemplate"><template>catalog/product/featured.phtml</template></action>
        </block>

Luego, en mi plantilla, creo un nuevo archivo en el catálogo / producto llamado Feature.phtml, aquí puedo iterar a través de la colección de productos y crear el HTML que quiero mostrar, por ejemplo. Aquí hay una simple lista de viñetas.

    <?php
    $_helper = $this->helper('catalog/output');
    $_productCollection = $this->getProductCollection();
?>
<div class="featured-products">
    <p>Featured Products - <?php echo count($_productCollection) ?></p>
    <ol class="featured-products-list" id="featured-products-list">
    <?php foreach ($_productCollection as $_product): ?>
        <li><?php echo $_product->getName() ?></li>
    <?php endforeach; ?>
    </ol>
</div>

Cuando actualizo las cachas de mi tienda y goto la página de inicio, se mostrará el producto destacado HTML.

Hay muchos módulos que lo ayudarán a hacer esto, pero puede lograrlo rápidamente con este ejemplo o creando su propio módulo.

Aquí hay un enlace a una solución similar del Magento Wiki https://wiki.magento.com/display/m1wiki/how+to+create++efeatured+product

Otros consejos

Siga este enlace para obtener el producto de la función de recuperación en la página de inicio http://inchoo.net/magento/featured-products-on-magento-frontpage-tutorial/

http://inchoo.net/magento/featured-products-on-Magento-FrontPage /

Este tutorial, estoy explicando cómo presentar el producto a la página de inicio de Magento.

en el archivo PHTML:

<?php
$featuredProducts = Mage::getModel('catalog/category')->load($category_id)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('featured_product', 1)
->addAttributeToFilter('status', 1);

?> En local.xml

<cms_index_index>
<reference name="content">
    <block type="core/template" name="home.featured.product" template="custom/featuredproduct.phtml"/>
</reference>

Por favor, consulte el tutroial para la explicación paso a paso. http://www.pearlbells.co.uk/adding-Custom-Product-attributes-in-magento /

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top