0
votes

I'm using Magento 1.9.2.2 and I'm trying to create a module which show a product list. Bellow my current code which doesn't render the block. I hope someone can put me in the right direction how to fix this.

app/etc/modules/Envato_All.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Envato_Recentproducts>
            <active>true</active>
            <codePool>local</codePool>
        </Envato_Recentproducts>
    </modules>
</config>

app/code/local/Envato/Recentproducts/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Envato_Recentproducts>
            <version>1.0</version>
        </Envato_Recentproducts>
    </modules>
    <global>
        <blocks>
            <recentproducts>
                <class>Envato_Recentproducts_Block</class>
            </recentproducts>
        </blocks>
        <models>
            <recentproducts>
                <class>Envato_Recentproducts_Model</class>
            </recentproducts>
        </models>
    </global>
</config>

app/code/local/Envato/Recentproducts/Model/Recentproducts.php

<?php
class Envato_Recentproducts_Model_Recentproducts extends Mage_Core_Model_Abstract 
{
    public function getRecentProduct()
    {
        $products = Mage::getModel("catalog/product")
            ->getCollection()
            ->addAttributeToSelect('*')
            ->setOrder('entity_id', 'DESC')
            ->setPageSize(5);
        return $products;
    }
}

app/code/local/Envato/Recentproducts/Block/Recentproducts.php

<?php
class Envato_Recentproducts_Block_Recentproducts extends Mage_Core_Block_Template
{
    public function getRecentProducts()
    {
        // call model to fetch data
        $arr_products = array();
        $products = Mage::getModel("recentproducts/recentproducts")­->getRecentProducts();

        foreach ($products as $product) {
            $arr_products[] = array(
                'id' => $product-­>getId(),
                'name' => $product­->getName(),
                'url' => $product­->getProductUrl(),
            );
        }

        return $arr_products;
    }
}

app/design/frontend/default/default/template/recentproducts/recentproducts.phtml

<?php
$products = $this­->getRecentProducts();
?>

<div id="product_list">
    <h1>Recent Products</h1>
    <?php if (is_array($products) && count($products)) { ?>
        <?php foreach($products as $product) { ?>
            <div>
                <a href="<?php echo $product['url'] ?>"><?php echo $product['name'] ?></a>
            </div>
        <?php } ?>
    <?php } ?>
</div>

Used block

{{block type="recentproducts/recentproducts" name="recentproducts_recentproducts" template="recentproducts/recentproducts.phtml"}}
1

1 Answers

1
votes

Have you tried to add "recentproducts/recentproducts" and set to allow under configuration->permission->Blocks?

don't forget to flush your cache after adding this..

Let me know