zoukankan      html  css  js  c++  java
  • 一个简单的blog系统(八) 增加存档页面

    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 %>

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

  • 相关阅读:
    了解 C++ 默默编写并调用的函数
    确保对象在被使用前的初始化
    尽可能使用 const
    尽量多的以 const/enum/inline 替代 #define
    六 GPU 并行优化的几种典型策略
    五 浅谈CPU 并行编程和 GPU 并行编程的区别
    四 GPU 并行编程的存储系统架构
    三 GPU 并行编程的运算架构
    求解线性方程组的三种基本迭代法
    C#基础 特殊集合(栈集合、队列集合、哈希表集合)
  • 原文地址:https://www.cnblogs.com/yuity/p/5302645.html
Copyright © 2011-2022 走看看