Wordpress博客存档看起来像CakePHP

时间:2013-07-30 15:48:26

标签: cakephp cakephp-2.0

我正在使用cakePHP构建和应用程序,我正在尝试实现类似Wordpress博客存档的内容。

让我们假设我的数据库中有这个表:

  • 帖子
    • ID
    • 标题
    • 创建

我希望输出像这样:

  • 2013
    • Post 1
    • Post 2
    • etc
  • 2012
    • Post 4
    • Post 5
    • 等等

我自己搜索过并尝试过,但遗憾的是没有成功 提前致谢

2 个答案:

答案 0 :(得分:1)

首先,您可以在Post Model中创建一个方法,用于检索特定年份的所有帖子:

//Inside Model/Post.php

public function getPostsByYear($year) {

$date1 = new DateTime($year.'-01-01 00:00:00');
$date2 = new DateTime($year.'-12-31 23:59:59');

$posts = $this->find('all' , array(
    'conditions' => array(
        'Post.created BETWEEN ? AND ?' => array($date1,$date2)
     )
    ));

    return $posts
}

然后,在PostsController中的所需操作内,您将从任何所需的初始年份(在我的情况下,我选择2012)迭代到当前年份,多次调用 getPostsByYear()方法,像这样:

//Inside Controller/PostsController.php

public function somePostAction() {

$posts = new Array();
$currentYear = date("Y");

    for($year = 2012 ; $year<=$currentYear ; $year++) {
        $posts[$year] = $this->Post->getPostsByYear($year);
    }

$this->set('posts' , $posts);

}

这样,例如,您2012年的所有帖子都将位于 $ posts [2012] 数组中。如果您想研究它的结构,只需编写 debug($ posts)

提醒一下,上面的代码未经测试。如果有任何问题,请告诉我。

答案 1 :(得分:1)

实际上有点过时,大部分代码应该重新考虑进入模型,但这正是这样做的。

https://github.com/CakeDC/utils/blob/develop/Controller/Component/ArchiveComponent.php