【问题标题】:Create magento pagination in custom product collection inside phtml file在 phtml 文件中的自定义产品集合中创建 magento 分页
【发布时间】:2014-03-17 16:31:53
【问题描述】:

首先,我没有创建自定义模块来处理这个产品集合,所以,我只是将模型放在 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 值。我应该创建自定义模块来做到这一点吗?或者有什么方法可以做到这一点,而无需创建自定义模块?

【问题讨论】:

  • 我在 magento 方面没有太多经验,我也没有明确认为这是题外话,但请注意有一个 Magento 专用 Stack Exchange 可以找到 here这可能是获得答案的更快方法。
  • 对不起,谢谢,我会转到那个论坛。 :)

标签: magento collections pagination


【解决方案1】:

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

$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"]);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    相关资源
    最近更新 更多