在phtml文件中的自定义产品集合中创建magento分页

时间:2014-03-17 16:31:54

标签: magento collections pagination

首先,我没有创建自定义模块来处理这个产品系列,因此,我只是把模型放在phtml文件中,我知道它的实现不好,我是magento的新手我必须在将产品系列加载到客户购买的扩展程序时进行小型自定义。

此产品系列仅显示在特定类别中,因此在类别管理中的自定义设计选项卡中,我输入此代码:

<reference name="product_list">
<action method="setTemplate"><template>catalog/product/list_all.phtml</template></action>

这是我的加载产品集合的查询,这个查询在list_all.phtml文件中:

$collection = Mage::getResourceModel('catalog/product_collection')
            ->addAttributeToSelect('*')
            ->addStoreFilter()
            ->addUrlRewrite()
            ->addAttributeToFilter('groupdeal_status', Devinc_Groupdeals_Model_Source_Status::STATUS_RUNNING)
            ->joinField('groupdeals_id','groupdeals/groupdeals','groupdeals_id','product_id=entity_id',null,'left');
    $collection->getSelect()->limit(2);

我已使用此代码生成分页:

    $toolbar = Mage::getBlockSingleton('catalog/product_list')->getToolbarBlock();
    $toolbar->setCollection($collection);
    echo $toolbar->toHtml();

以上代码仅显示产品数量并显示每页选项,而非1,2,3 ......链接,我也试图使用以下代码:

<?php 
$toolbar = Mage::getBlockSingleton('catalog/product_list')->getToolbarBlock();


$toolbar->setCollection($collection);
echo $toolbar->getCollection()->getSize().'------'.var_dump($toolbar->getPages());
?>

但是,var_dump返回NULL值。我应该创建自定义模块来执行此操作吗?或者有没有办法这样做,而不创建自定义模块?

1 个答案:

答案 0 :(得分:1)

尝试将setCurPage()添加到您的收藏过滤器,然后在需要时通过$_GET根据网址参数进行更新:

$collection = Mage::getResourceModel('catalog/product_collection')
        ->addAttributeToSelect('*')
        ->addStoreFilter()
        ->addUrlRewrite()
        ->addAttributeToFilter('groupdeal_status', Devinc_Groupdeals_Model_Source_Status::STATUS_RUNNING)
        -> joinField('groupdeals_id','groupdeals/groupdeals','groupdeals_id','product_id=entity_id',null,'left');

$collection->getSelect()->limit(2)->setCurPage(1);

if ($_GET["p"] <= $_productCollection->getLastPageNumber()){
    $_productCollection->setCurPage($_GET["p"]);
}