2.9 主页文章列表
第 16 节 / 共 46 节
课程:ThinkPHP
首页文章显示功能
1.网页端:
修改view/Index/index.html:
<!-- 文章列表 - 使用 PHP 原生循环 --> <?php if(!empty($result)): ?> <?php foreach($result as $article): ?> <div class="col-12 row article-list"> <div class="col-sm-3 col-3 thumb d-none d-sm-block"> <img src="/thumb/<?php echo $article['thumbnail']; ?>" class="img-fluid"/> </div> <div class="col-sm-9 col-xs-12 detail"> <div class="title"> <a href="/article/<?php echo $article['articleid']; ?>"> <?php echo $article['headline']; ?> </a> </div> <div class="info"> 作者:<?php echo $article['nickname']; ?> 类别:<?php // 临时处理分类,避免配置不存在报错 $types = [1=>'新闻', 2=>'教程', 3=>'随笔', 4=>'攻略']; echo $types[$article['category']] ?? '其他'; ?> 日期:<?php echo $article['createtime']; ?> 阅读:<?php echo $article['readcount']; ?> 次 消耗积分:<?php echo $article['credit']; ?> 分 </div> <div class="intro"> <?php echo mb_substr(strip_tags($article['content']), 0, 85); ?> ... </div> </div> </div> <?php endforeach; ?> <?php else: ?> <div class="col-12">暂无文章</div> <?php endif; ?>复制完后是这样的:

这是一个循环,把取回来的文章循环展示,这里的result就是文章article的集合
2.index.php
修改app/controller/index.php
//略去其他引用use app\model\Article;//要加入一个引用class Index extends BaseController{//略去其他函数 public function index() { $article = new Article(); $result = $article->findLimitWithUser(0, 10); $total = ceil($article->getTotalCount()/10); return view("index",['result'=>$result, 'total'=>$total]); }}3./app/model/Article.php
Article类的函数findLimitWithUser和getTotalCount,复制进去
public function findLimitWithUser($start, $count) { $result = $this->alias('a')->join('users u', 'u.userid=a.userid') ->where('a.hide', 0)->where('a.drafted', 0)->where('a.checked', 1) ->field('a.*, u.nickname') ->order('a.articleid', 'desc')->limit($start, $count)->select(); return $result; } // 获取文章总数 public function getTotalCount() { $count = $this->where('hide', 0)->where('drafted', 0) ->where('checked', 1)->count(); return $count; }这个函数是指取得文章,两个参数分别是开始位置和文章数量,例如findLimitUser(0,10)就表示取得前10篇文章
二.分页
首先修改controller部分:
class Index extends BaseController{ public function index() { //从url取得page参数,它是一个整数,表示第几页 $page = Request::param('page'); $article = new Article(); //每页显示5篇文章,按需更改 $article_num=5; $start=($page-1)*$article_num; $start=$start>0?$start:0; $result = $article->findLimitWithUser($start, $article_num); //total是总页数 $total = ceil($article->getTotalCount()/$article_num); return view("index",['result'=>$result, 'total'=>$total]); }//其他省略...}然后修改index.html关于页码的部分:
<!-- 分页导航栏 --> <div class="col-12 paginate"> <!-- 上一页 --> <?php $page = isset($_GET['page']) ? (int)$_GET['page'] : 1; // 每页显示 5 篇文章 $pageSize = 5; // 总页数(后端已经传给你了,直接用) $totalPage = $total; ?> <?php if($page <= 1): ?> <a href="javascript:;" class="disabled">上一页</a> <?php else: ?> <a href="?page=<?php echo $page-1; ?>">上一页</a> <?php endif; ?> <!-- 页码 --> <?php for($i=1; $i<=$totalPage; $i++): ?> <?php if($i == $page): ?> <a href="?page=<?php echo $i; ?>" class="active"><?php echo $i; ?></a> <?php else: ?> <a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a> <?php endif; ?> <?php endfor; ?> <!-- 下一页 --> <?php if($page >= $totalPage): ?> <a href="javascript:;" class="disabled">下一页</a> <?php else: ?> <a href="?page=<?php echo $page+1; ?>">下一页</a> <?php endif; ?> </div>《ThinkPHP》课程目录
介绍PHP框架ThinkPHP6
- 第1章 配置环境
- 1.1 第一个ThinkPHP8项目
- 1.2 Composer项目结构介绍
- 1.3 启动项目
- 1.4 ThinkPHP8项目的部署
- 1.5 idea教育版免费一年获取办法
- 第2章 基本特性
- 2.1 响应HTTP请求
- 2.2 响应html
- 2.3 登录-前端
- 2.4 登录-后台
- 2.5 数据库基本操作
- 2.6 模型支持
- 2.7 登录状态和session
- 2.8 注册
- 2.9 主页文章列表
- 2.10 单篇文章内容
- 2.11 完善文章页面
- 2.12 文件上传
- 第3章 实训
- 3.1 项目准备
- 3.2 登录
- 3.3 数据库登录和json规范返回
- 3.4 注册
- 3.5 查询课程
- 3.6 个人信息
- 3.7 修改昵称
- 3.8 *主页信息
- 3.9 统计
- 3.10 学习-侧边导航
- 3.11 *学习-右边内容
- 3.12 管理-课程
- 3.13 管理-班级
- 3.14 管理-班级-学生换班
- 3.15 管理-班级-查找学生
- 第4章 git代码管理
- 4.1 建立代码库
- 4.2 代码管理提交、推送和拉取
- 4.3 从云克隆代码
- 第5章 项目重构成spirngboot
- 5.1 项目技术介绍
- 5.2 创建一个ThinkPHP8项目
- 5.4 移入网页和PHP代码
- 5.5 模型和服务
- 5.7 测试
- 第6章 nginx