我正在尝试在自定义模块中添加分页。我在articles.php
中的Block文件夹下面有以下代码class Compname_Modname_Block_Articles extends Mage_Core_Block_Template
{
public function __construct()
{
parent::__construct();
$collection = Mage::getModel('articles/articles')->getCollection();
$this->setCollection($collection);
}
....
....
public function getTagsList(){
$pager = $this->getLayout()->createBlock('page/html_pager', 'custom.pager');
$pager->setAvailableLimit(array(5=>5,10=>10,20=>20,'all'=>'all'));
$pager->setCollection($this->getCollection());
$this->setChild('pager', $pager);
$this->getCollection()->load();
return $this;
}
public function getPagerHtml()
{
return $this->getChildHtml('pager');
}
.........
..........
}
我在管理员端有cms页面,代码如下
<reference name="content">
<block type="articles/articles" name="articles.tags" as="tags.articles" template="articles/tags.phtml" />
</reference>
在我的主题的文章文件夹下,我有一个名为tags.phtml
的文件,其代码如
<?php echo $this->getPagerHtml(); ?> // this displays exact pagination with page numbers
<?php $collection = $this->getTagsList();
var_dump($collection->getSize()); // Always return NULL
?>
getSize()总是返回NULL
,所以我没有得到我的收藏价值。请提供关于此的建议
答案 0 :(得分:1)
您从Compname_Modname_Block_Articles::getTagsList()
public function getTagsList(){
return $this;
}
这就是为什么当然
<?php $collection = $this->getTagsList();
var_dump($collection->getSize()); // Always return NULL
?>
答案 1 :(得分:0)
是的,自定义模块的解决方案。
<?php
class Test_Featuredsalons_Block_Featuredsalons extends Mage_Core_Block_Template
{
public function __construct()
{
parent::__construct();
$collection = Mage::getModel('featuredsalons/featuredsalons')->getCollection();
$this->setCollection($collection);
}
protected function _prepareLayout()
{
parent::_prepareLayout();
$pager = $this->getLayout()->createBlock('page/html_pager', 'custom.pager');
$pager->setCollection($this->getCollection());
$this->setChild('pager', $pager);
$this->getCollection()->load();
return $this;
}
public function getPagerHtml()
{
return $this->getChildHtml('pager');
}
public function getCollection()
{
$limit = 10;
$curr_page = 1;
if(Mage::app()->getRequest()->getParam('p'))
{
$curr_page = Mage::app()->getRequest()->getParam('p');
}
//Calculate Offset
$offset = ($curr_page - 1) * $limit;
$collection = Mage::getModel('featuredsalons/featuredsalons')->getCollection()
->addFieldToFilter('status',1);
$collection->getSelect()->limit($limit,$offset);
return $collection;
}
}
?>
In phtml file, use below code:
<?php echo $this->getPagerHtml(); ?>
<?php $news = $this->getCollection(); ?>
谢谢, 卡希夫