Проблема со списком архивов блога

В моем блоге все мои посты отсортированы по дате 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)

Дайте мне знать, если это не ясно

Спасибо

Лука


person luca    schedule 04.07.2011    source источник


Ответы (1)


Не знаю, правильно ли я вас понял, но это должно быть довольно легко.

Когда вы выбираете свои сообщения, найдите каждое первое сообщение месяца и сохраните его позицию в массиве. Теперь вы знаете номер поста, который хотите показать, и знаете, что на каждой странице есть 15 постов, так что будет легко узнать, на какой странице вам нужно быть.

person user458753    schedule 05.07.2011