博客项目学习笔记十七:用户中心(我发布的帖子)

博客项目目录: 请戳这里

准备

需求:用户登录后,进入用户中心页面,显示如下信息,当点击“加载更多”,会把当前页的下一页加载出来。
在这里插入图片描述

1.引入index.ftl与mess.ftl

  • 从fly-3.0\html\user目录下,将index.html和message.ftl拷贝到项目user目录下
  • 重命名为index.ftl和mess.ftl

2.将layout模板填充到index.ftl和mess.ftl

在这里插入图片描述
在这里插入图片描述

3.提取左边侧边栏到common.ftl

设置一个level标签,当level为0时,“我的主页”为高亮状态;当level为1时,“用户中心”为高亮状态;当level为2时,“基本设置”为高亮状态;当level为3时,“我的消息”为高亮状态。

<#--用户中心左侧-->
<#macro centerLeft level>
    <ul class="layui-nav layui-nav-tree layui-inline" lay-filter="user">
        <li class="layui-nav-item <#if level == 0> layui-this</#if>">
            <a href="/user/home">
                <i class="layui-icon">&#xe609;</i>
                我的主页
            </a>
        </li>
        <li class="layui-nav-item <#if level == 1> layui-this</#if>">
            <a href="/user/index">
                <i class="layui-icon">&#xe612;</i>
                用户中心
            </a>
        </li>
        <li class="layui-nav-item <#if level == 2> layui-this</#if>">
            <a href="/user/set">
                <i class="layui-icon">&#xe620;</i>
                基本设置
            </a>
        </li>
        <li class="layui-nav-item <#if level == 3> layui-this</#if>">
            <a href="/user/mess">
                <i class="layui-icon">&#xe611;</i>
                我的消息
            </a>
        </li>
    </ul>
</#macro>

将标签应用到具体的页面,比如用户中心:
在这里插入图片描述

4.在controller层添加对应方法

    //用户中心
    @GetMapping("/user/index")
    public String index() {
        return "/user/index";
    }

    //我的消息
    @GetMapping("/user/mess")
    public String mess() {
        return "/user/mess";
    }

测试用户中心:
在这里插入图片描述
测试我的消息:
在这里插入图片描述

5.controller层获取我发表的帖子

	//我发表的帖子
    @ResponseBody
    @GetMapping("/user/public")
    public Result userP() {
        IPage page = postService.page(getPage(), new QueryWrapper<Post>()
                .eq("user_id", getProfileId())
                .orderByDesc("created"));

        return Result.success(page);
    }

6.完成“加载更多”功能

主要用到了layui的laytpl 和flow,首先通过laytpl获取我发表的帖子的数据,渲染到前端,然后通过flow实现动态加载,当前页小于总页数时,会将数据一页一页地加载,点击加载更多,会触发下一页的加载。

  1. 填入标签

    <div class="layui-tab-item layui-show" id="fabu">
       <script id="tpl-fabu" type="text/html">
         <ul class="mine-view jie-row">
           <li>
             <a class="jie-title" href="/post/{{d.id}}" target="_blank">{{ d.title }}</a>
             <i>{{layui.util.toDateString(d.created, 'yyyy-MM-dd HH:mm:ss')}}</i>
             <a class="mine-edit" href="/post/edit?id={{d.id}}">编辑</a>
             <em>{{d.viewCount}}/{{d.commentCount}}</em>
           </li>
         </ul>
       </script>
       <div id="LAY_page"></div>
    </div>
    
  2. 重写flow函数

    <script>
    
          layui.use(['laytpl', 'flow', 'util'], function() {
              var $ = layui.jquery;
              var laytpl = layui.laytpl;
              var flow = layui.flow;
              var util = layui.util;
    
              flow.load({
                  elem: '#fabu' //指定列表容器
                  ,isAuto: false
                  ,done: function(page, next){
                      var lis = [];
    
                      $.get('/user/public?pn='+page, function(res){
                          layui.each(res.data.records, function(index, item){
    
                              var tpl = $("#tpl-fabu").html();
                              laytpl(tpl).render(item, function (html) {
                                  $("#fabu .layui-flow-more").before(html);
                              });
                          });
    
                          next(lis.join(''), page < res.data.pages);
                      });
                  }
              });
    
          });
        layui.cache.page = 'user';
      </script>
    
    

7.测试

进入用户中心:
在这里插入图片描述
点击加载更多:
在这里插入图片描述
再次点击加载更多:
在这里插入图片描述

参考资料:

https://github.com/MarkerHub/eblog

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值