thinkphp5项目--个人博客(五)
thinkphp5项目--个人博客(五)
项目地址
fry404006308/personalBlog: personalBlog
https://github.com/fry404006308/personalBlog
后台操作完成的差不多了,下面开始前台操作
一、数据库数据分配到前台
在后台设置好的数据分配到前台
后台数据
数据库数据
前台数据
下面讲如何操作
控制器中得到数据并分配数据
1 <?php 2 namespace app\index\controller; 3 4 use think\Controller; 5 use think\Db; 6 class Index extends controller 7 { 8 public function index() 9 { 10 //得到数据,并且分配 11 $cateres = Db::name('cate')->order('id asc')->select(); 12 $this->assign('cateres',$cateres); 13 14 return view(); 15 } 16 }
视图页面显示数据
1 {volist name="cateres" id="value"} 2 <a href="{:url('cate/index',array('cateid'=>$value['id']))}" rel='dropmenu209'>{$value.catename}</a> 3 {/volist}
可以写一个基类,然后其它类继承这个基类来完成对数据的分配。
二、文章的分类显示
之前的页面传递的数据
1 <a href="{:url('index/index')}" rel='dropmenu209'>首页</a> 2 {volist name="cateres" id="value"} 3 <a href="{:url('cate/index',array('cateid'=>$value['id']))}" rel='dropmenu209'>{$value.catename}</a> 4 {/volist}
控制器
1 public function index() 2 { 3 $cateid=input('cateid'); 4 $articleres=db('article')->where(array('cateid'=>$cateid))->paginate(1); 5 $this->assign('articleres',$articleres); 6 return view(); 7 }
视图
1 <div class="left"> 2 3 {volist name="articleres" id="value"} 4 <div class="xnews2"> 5 <div class="pic"> 6 <a target="_blank" href="20160920156216.html"> 7 <img src="{if condition="$value['pic'] neq '' "}__IMG__{$value.pic} {else /}__PUBLIC__/images/error.png{/if} " alt="{$value.title}"/> 8 </a> 9 </div> 10 <div class="dec"> 11 <h3><a target="_blank" href="20160920156216.html">{$value.title}</a></h3> 12 <div class="time">发布时间:{$value.time|date="Y-m-d",###}</div> 13 <p>{$value.desc}</p> 14 <div class="time"><a href='z97712.html'>聚餐</a> </div> 15 </div> 16 </div> 17 {/volist} 18 19 <div class="pages"> 20 <div class="plist" > 21 {$articleres->render()} 22 </div> 23 </div> 24 </div>
三、文章浏览量自动增加
每访问一次这个方法就会让这个文章的访问量自动增加一次
1 <?php 2 namespace app\index\controller; 3 4 use app\index\controller\Base; 5 class Article extends Base 6 { 7 public function index() 8 { 9 $arid=input('arid'); 10 $articleres=db('article')->find($arid); 11 //访问一次这个方法,说明文章被访问一次,让文章的click字段值加1 12 db('article')->where('id','=',$arid)->setInc('click'); 13 $cateres=db('cate')->find($articleres['cateid']); 14 $this->assign(array( 15 'articleres'=>$articleres, 16 'cateres'=>$cateres, 17 )); 18 19 20 return view(); 21 } 22 }
thinkphp手册参考
1 自增或自减一个字段的值 2 setInc/setDec 如不加第二个参数,默认值为1 3 4 // score 字段加 1 5 Db::table('think_user') 6 ->where('id', 1) 7 ->setInc('score'); 8 // score 字段加 5 9 Db::table('think_user') 10 ->where('id', 1) 11 ->setInc('score', 5); 12 // score 字段减 1 13 Db::table('think_user') 14 ->where('id', 1) 15 ->setDec('score'); 16 // score 字段减 5 17 Db::table('think_user') 18 ->where('id', 1) 19 ->setDec('score', 5);
四、mysql默认初始值
改紫色框框的位置,而不是下面的zerofill
五、多个数据需要分配到页面的时候,可用数组方式
1 $this->assign(array( 2 'articleres'=>$articleres, 3 'cateres'=>$cateres, 4 ));
六、别人网站上面的效果能完全弄下来
CSS和JS的话可以直接弄下来,打开网站源代码点CSS和JS的链接,就可以全部弄下来,或者直接用在线的,link地址就写他们网站就好
就是你看到的源代码的部分是已经执行过逻辑的部分了,所以逻辑部分你是看不到的,比如说php逻辑部分。
七、article部分完成
控制器
1 <?php 2 namespace app\index\controller; 3 4 use app\index\controller\Base; 5 class Article extends Base 6 { 7 public function index() 8 { 9 $arid=input('arid'); 10 $articleres=db('article')->find($arid); 11 //访问一次这个方法,说明文章被访问一次,让文章的click字段值加1 12 db('article')->where('id','=',$arid)->setInc('click'); 13 $cateres=db('cate')->find($articleres['cateid']); 14 $this->assign(array( 15 'articleres'=>$articleres, 16 'cateres'=>$cateres, 17 )); 18 19 20 return view(); 21 } 22 }
视图
1 <!--顶部通栏--> 2 <script src='/jiehun/goto/my-65547.js' language='javascript'></script> 3 4 <div class="position"><a href="{:url('index/index')}}">主页</a> > <a href="{:url('cate/index',array('cateid'=>$cateres['id']))}">{$cateres.catename}</a> > </div> 5 6 <div class="overall"> 7 <div class="left"> 8 <div class="scrap"> 9 <h1>{$articleres.title}</h1> 10 <div class="spread"> 11 <span class="writor">发布时间:{$articleres.time|date='Y-m-d',###}</span> 12 <span class="writor">编辑:{$articleres.author}</span> 13 <span class="writor">标签:<a href='/jiehun/z97712.html'>聚餐</a></span> 14 <span class="writor">热度:{$articleres.click}</script></span> 15 </div> 16 </div> 17 18 <!--百度分享--> 19 <script src='/jiehun/goto/my-65542.js' language='javascript'></script> 20 21 <div class="takeaway"> 22 <span class="btn arr-left"></span> 23 <p class="jjxq">{$articleres.desc} 24 </p> 25 <span class="btn arr-right"></span> 26 </div> 27 28 <script src='/jiehun/goto/my-65541.js' language='javascript'></script> 29 <!-- 文章主体 --> 30 <div class="substance"> 31 {$articleres.content} 32 </div> 33 <!-- end文章主体 -->
八、给页面传不同的参数,就可以得到不同的页面
<div class="position"><a href="{:url('index/index')}}">主页</a> > <a href="{:url('cate/index',array('cateid'=>$cateres['id']))}">{$cateres.catename}</a> > </div>
九、thinkphp标签带函数(比如传给页面的是时间戳,要通过在页面电泳date函数显示正常时间)
1 <span class="writor">发布时间:{$articleres.time|date='Y-m-d',###}</span>
转载于:https://www.cnblogs.com/Renyi-Fan/p/8800727.html
thinkphp5项目--个人博客(五)相关推荐
- thinkphp5项目--个人博客(六)
thinkphp5项目--个人博客(六) 项目地址 fry404006308/personalBlog: personalBlog https://github.com/fry404006308/pe ...
- 古文字识别助手与众包平台——项目博客五
古文字识别助手与众包平台--项目博客五 背景: 由于本项目算法部分为使用python编写,所以需要在springboot中调用外部的python程序进行计算本项目算法评分模块. 在登录功能和社区功能的 ...
- 基础环境搭建——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(五)
系列文章目录 初识推荐系统--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(一) 利用用户行为数据--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(二) 项目主要效果展示--基 ...
- 订单支付和评论——基于Django框架的天天生鲜电商网站项目系列博客(十五)
系列文章目录 需求分析--基于Django框架的天天生鲜电商网站项目系列博客(一) 网站框架搭建--基于Django框架的天天生鲜电商网站项目系列博客(二) 用户注册模块--基于Django框架的天天 ...
- springboot实战项目——个人博客系统
1.项目介绍 1.1项目效果 博客首页 登录功能 注册功能 文章分类 文章归档 文章页面 发布文章 (集成富文本编译器) 1.2项目使用技术 前端: vue element-ui 后端: Spring ...
- 项目体系架构设计——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(四)
系列文章目录 初识推荐系统--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(一) 利用用户行为数据--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(二) 项目主要效果展示--基 ...
- 利用用户行为数据——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(二)
系列文章目录 初识推荐系统--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(一) 利用用户行为数据--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(二) 项目主要效果展示--基 ...
- SpringBoot实现代码生成器——基于SpringBoot和Vue的后台管理系统项目系列博客(十)
系列文章目录 系统功能演示--基于SpringBoot和Vue的后台管理系统项目系列博客(一) Vue2安装并集成ElementUI--基于SpringBoot和Vue的后台管理系统项目系列博客(二) ...
- SpringBoot实现1对1、1对多、多对多关联查询——基于SpringBoot和Vue的后台管理系统项目系列博客(十八)
系列文章目录 系统功能演示--基于SpringBoot和Vue的后台管理系统项目系列博客(一) Vue2安装并集成ElementUI--基于SpringBoot和Vue的后台管理系统项目系列博客(二) ...
- 实时推荐服务建设——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(八)
系列文章目录 初识推荐系统--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(一) 利用用户行为数据--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(二) 项目主要效果展示--基 ...
最新文章
- 开发人员常用SVN命令
- linux minicom usb串口
- bzoj 1036 树的统计Count
- linux 磁盘簇,linux系统exec簇工作原理
- varchar和Nvarchar区别
- CSS基础——CSS复合选择器【学习笔记】
- java项目文档管理_基于jsp的文档管理系统-JavaEE实现文档管理系统 - java项目源码...
- python飞机大战项目概述需求_飞机大战需求分析报告.doc
- 2022年全网首发|大数据专家级技能模型与学习指南(胜天半子篇)
- 【专升本计算机】计算机权威复习题(基础知识、操作系统、计算机网络)
- 一年工作经验,两周的面试,拿到几个offer的面试经验总结
- flashfxp中文下载,5步掌握flashfxp中文下载软件的使用技巧
- 全文翻译 | 华为、北大、悉尼大学:最新视觉Transformer综述(2017-2020年)
- APS计划软件助纺织企业降低成本,提升效益
- git-lfs使用笔记
- 51node1006LCS
- linux一键脚本自动添加Title
- socket的五大误区
- Office365学习笔记—列表查询,删除条目,更新条目。
- mongodb安装失败看这里