Yuity

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1. 增加存档功能,设定当进入存档页面的时候,按照年份和日期的降序列出所有的文章。

  1.1 首先我们在主页左侧添加存档也(archive)的链接,修改header.ejs,添加一行代码如下所示:

<li><a href="/archive" title='存档'>存档</a></li>

  1.2 然后,我们打开post.js,在后面添加如下代码:

//返回所有文章的存档信息
Post.getArchive = function(callback) {
    //打开数据库
    mongodb.open(function(err, db) {
        if(err) {
            return callback(err);
        }
        //读取posts集合
        db.collection('posts', function(err, collection) {
            if(err) {
                mongodb.close();
                return callback(err);
            }
            //返回值包含name、time、title属性的文档组成为那个的存档数组
            collection.find({}, {
                "name": 1,
                "title": 1,
                "time": 1
            }).sort({ time: -1}).toArray(function(err, docs) {
                mongodb.close();
                if(err) {
                    return callback(err);
                }
                callback(null, docs);
            });
        });
    });
};

  1.3 接下来,我们在index.js中添加/archive的路由规划,添加如下代码:

//存档页面路由
router.get('/archive', function(req, res) {
    Post.getArchive(function(err, posts) {
        if(err) {
            req.flash('error', err);
            return res.redirect('/');
        }
        res.render('archive', {
            title: '存档',
            posts: posts,
            user: req.session.user,
            success: req.flash('success').toString(),
            error: req.flash('error').toString()
        });
    });
});

  1.4 最后,我们在views文件夹下面新建archive.ejs模板文件,添加如下代码:

<%- include common/header %>

<div class='container'>
    <h2>文章存档</h2>
    <hr/>
    <ul class="list-group">
        <% var lastYear = 0 %>
        <% posts.forEach(function (post, index) { %>
            <% if (lastYear != post.time.year) { %>
                <li class="list-group-item"><%= post.time.year %></li>
            <% lastYear = post.time.year } %>
                  <li class="list-group-item list-group-item-info"><%= post.time.day %></li>
                <li class="list-group-item">
                    <span class="badge"><%= post.name %></span>
                    <a href="/u/<%= post.name %>/<%= post.time.day %>/<%= post.title %>"  style="color: purple;"><%= post.title %></a>
                </li>
        <% }) %>
    </ul>
</div>

<%- include common/footer %>

现在,我们就实现了博客的分页功能。

posted on 2016-03-21 16:55  Yuity  阅读(219)  评论(0编辑  收藏  举报