Magento定制块

时间:2010-10-24 12:05:00

标签: magento

我正在尝试使用ajax在主页上使用magento中的ajax显示流行的产品列表,我可以为5或“N”no.of产品做到这一点,但我想要的是添加的分页工具栏结果集。

这是我为展示热门产品而添加的内容,

// Magento layout
$magento_block = Mage::getSingleton('core/layout');
$productsHtml = $magento_block->createBlock('catalog/product');
$productsHtml->setTemplate('catalog/product/popular.phtml');
echo $productsHtml ->toHTML();

并在popular.phtml下

<?php   

    $_productCollection = Mage::getModel('catalog/product')->getCollection()
    ->addPriceData()
    ->addAttributeToSort('ordered_qty', 'DESC')
    ->addAttributeToSort('name', 'ASC')
    ->setPageSize($limit)
    ->setPage($p, $limit)       
    ->addAttributeToSelect(array('entity_id', 'entity_type_id', 'attribute_set_id', 'type_id', 'sku', 'category_ids', 'created_at', 'updated_at','has_options', 'sync', 'name', 'stock_status', 'wc_review_iwc_rating', 'wc_review_wa_rating', 'wc_review_bh_rating', 'small_image', 'status', 'pre_arrival', 'description', 'short_description', 'price', 'is_salable', 'stock_item', 'gift_message_available', 'featured'));

?>

所以这给了我指定页面和限制的流行产品,但我无法加载分页工具栏(通过直接将工具栏添加到 popular.phtml 或通过创建块布局功能),其中我错了?请有人告诉我。

由于

3 个答案:

答案 0 :(得分:10)

尝试创建Mage_Catalog_Block_Product_List块并自行设置热门产品的集合。

$collection = Mage::getModel('catalog/product')->addAttributeToFilter('your popular products');
// do not load the collection yet, otherwise the toolbar will not work

$listBlock = Mage::getSingleton('core/layout')->createBlock('catalog/product_list');
$listBlock->setCollection($collection)->setTemplate('your/alternative/catalog/product/list.phtml');

产品列表块始终初始化工具栏块本身。 您可以使用&lt;?php echo $ this-&gt; getToolbarHtml()?&gt;

在模板中显示工具栏

编辑: 以下是Magento 1.4.1.1中的示例前端操作的工作示例:

public function productListAction()
{

    $collection = Mage::getModel('catalog/product')->getCollection()
            ->addAttributeToSelect('*');

    Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);

    $this->loadLayout();

    $listBlock = $this->getLayout()->createBlock('catalog/product_list')
            ->setTemplate('catalog/product/list.phtml')
            ->setCollection($collection);

    $this->getLayout()->getBlock('content')->append($listBlock);

    $this->renderLayout();
}

我希望这更清楚。

答案 1 :(得分:4)

对于其他人参考,这是我根据Vinai的代码添加的内容。

$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('*');
    Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);       
    $magento_block = Mage::getSingleton('core/layout');
    $productsHtml  = $magento_block->createBlock('catalog/product_list');
    $productsHtml ->setTemplate('catalog/product/list.phtml')->setCollection($collection);
    echo $productsHtml ->toHTML();

它完美呈现分页工具栏。

答案 2 :(得分:2)

我猜你应该从你的收藏中初始化工具栏。你看过this page吗?