2012-03-07 37 views
1

我有一个扩展,它使用产品列表块通过属性显示产品网格过滤器(扩展名为Attribute Info Pages)。Magento - 在产品列表中添加页码以标题

在这个扩展块扩展了“_prepareLayout”功能设置使用此代码的网页的标题和描述:

$head = $this->getLayout()->getBlock('head'); 
. 
. 
. 
$head->setTitle($title); 
head->setDescription($des); 

我要添加文本到这种格式的标题和描述:

$page_info = "Page A of B for "; 
$title = $page_info . title; 
$items_info = "Listings X-Y (out of Z) "; 
$des = items_info . $des; 

我试过这段代码是为了获取当前页,最后一页,数量和物品等:

$html_pager = Mage::getBlockSingleton('page/html_pager'); 
    $html_pager->setCollection($product_collection); 
    $limit = Mage::getSingleton('core/app')->getRequest()->getParam('limit'); 
    if(empty($limit)) 
    { 
     $limit = 8; 
    } 

    $html_pager->setLimit($limit); 
    $LastPageNumber = $html_pager->getLastPageNum(); 
    $current_page = $html_pager->getCurrentPage(); 

    $page_info = ""; 
    if($current_page > 1) 
    { 
     $page_info = "Page " . $current_page . " of $LastPageNumber for "; 
    } 

    $FirstNum = $html_pager->getFirstNum(); 
    $LastNum = $html_pager->getLastNum(); 
    $TotalNum = $html_pager->getTotalNum(); 

    $items_info = "Listings " . $FirstNum . "-" . $LastNum . " (out of ". $TotalNum . ") "; 

该代码为我提供了正确的信息,但它在产品网格中导致问题 - 它始终在产品网格中显示10个产品(无论我在“每页显示”中选择什么)。

任何想法如何在不破坏网格功能的情况下获取信息?

+0

在我看来,你的问题与您在那里指定了一些条件的单例函数相关,因此基于这些条件仅返回一个对象。这可以打破页面大小。 – 2012-03-07 15:50:35

+0

我正在设置一个产品集合和一个单例对象的限制,但它们是相同的产品集合并限制了网格应该使用,所以它不会导致问题。有没有不同的方式来获取这些信息? – Shani1351 2012-03-07 16:15:06

+0

相同的输出,但在建立功能 http://stackoverflow.com/a/15544361/1425779 – MudithaE 2013-03-21 10:05:09

回答

6

我发现,我工作的解决方案:

$product_collection = clone Mage::getSingleton('catalog/layer')->getProductCollection(); 
    $total = count($product_collection); 

    $current_page = Mage::getBlockSingleton('page/html_pager')->getCurrentPage(); 

    $limit = Mage::getSingleton('core/app')->getRequest()->getParam('limit'); 
    if(empty($limit)) 
    { 
     $limit = Mage::getStoreConfig('catalog/frontend/grid_per_page'); 
    } 

    $pages = $total/$limit; 
    $pages = ceil($pages); 

    if($current_page > 1) 
    { 
     $page_info = "Page " . $current_page . " of $pages for "; 
    } 

    $FirstNum = $limit*($current_page-1)+1; 

    if($current_page == $pages) 
    { 
     $LastNum = $total; 
    } 
    else 
    { 
     $LastNum = $limit + ($FirstNum - 1); 
    } 

    $items_info = "Listings " . $FirstNum . "-" . $LastNum . " (out of ". $total . ") "; 
0
$pager = Mage::getBlockSingleton('page/html_pager'); 
$productCollection = Mage::getSingleton('catalog/layer')->getProductCollection(); 
$pager->setCollection($productCollection); 

之后,你已经得到了所有的块的方法可用(Mage_Page_Block_Html_Pager):

$pager->getCurrentPage(); 
$pager->getLastPageNum(); 
+0

尽管此代码可以回答这个问题,提供了关于如何和其他上下文/或者为什么它解决了这个问题会提高答案的长期价值。 – thewaywewere 2017-06-16 06:56:41