В моем блоге все мои посты отсортированы по дате DESC. Я использую пагинатор, так что каждая страница пагинатора содержит около 15 постов. Я написал как минимум пост:
ARCHIVES
<a href="">january</a>
<a href="">february</a>
<a href="">march</a>
[...]
Я хотел бы, чтобы каждая из этих ссылок указывала на страницу пагинатора, где оказывается первое сообщение за этот конкретный месяц. Как я могу динамически найти атрибут href, указывающий на страницу пагинатора определенного месяца?
Моя основная страница будет:
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
$postmgr=new Post();
$currentpage=1;
$page=$this->_request->getParam('page');
if(!empty($page))
{
$currentpage=$this->_request->getParam('page');
}
$paginator=$postmgr->paginatePosts($currentpage);
$this->view->paginator=$paginator;
//then I build my monthly archive list..
}
И мой пост Модель
class Post extends Zend_Db_Table_Abstract
{
function paginatePosts($page=1)
{
$q=$this->select();
$q->order('datetime DESC');
$paginator=new Zend_Paginator(new Zend_Paginator_Adapter_DbTableSelect($q));
$paginator->setItemCountPerPage(15);
$paginator->setCurrentPageNumber($page);
return $paginator;
}
}
Это запрос, который я использую для получения ежемесячного списка-архива:
SELECT COUNT(*), YEAR(datetime) AS year, MONTHNAME(datetime) AS month FROM
posts GROUP BY year, month ORDER BY year, MONTH(datetime)
Дайте мне знать, если это не ясно
Спасибо
Лука