[thinkPHP5项目实战_29]前台首页和文章搜索功能完善

2024-01-04 21:38

本文主要是介绍[thinkPHP5项目实战_29]前台首页和文章搜索功能完善,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 首页功能

首页展示出所有文章,因此需要单独处理,首先在后台将首页的栏目删除,并将首页栏目下的文章移到其他栏目或者删除;

在头部导航header.html单独对首页进行处理;

<div class="blog-masthead"><div class="container"><nav class="blog-nav"><a class="blog-nav-item" href="{:url('Index/index')}">首页</a>{volist name="navres" id="vo"}<a class="blog-nav-item" href="{if condition="$vo['type'] eq 0"}{:url('lists/index',array('cateid'=>$vo['ID']))}{else /}{:url('guest/index',array('cateid'=>$vo['ID']))}{/if}">{$vo.catename}</a>{/volist}</nav></div>
</div>

点击首页导航通过index.php控制器进行处理:

获取所有的文章并通过联表查询每篇文章对应的栏目名:

<?php
namespace app\index\controller;
class Index extends Basic
{public function index(){$artres= \think\Db::name('article')->alias('a')->join('cate c','c.ID = a.cateid','LEFT')->field('a.artid,a.title,a.pic,a.time,a.desc,a.click,a.keywords,c.catename')->order('a.artid desc')->paginate(2);$this->assign('artres',$artres);return $this->fetch();}
}

首页模板Index.html赋值,与文章列表模板赋值一样:

<body><!-- 引入头部 -->{include file="Public/header" /}<div class="container"><div class="row"><div class="col-sm-8 blog-main">{volist name="artres" id="vo"}<div class="post multi-post cate2 auth1"><h4 class="post-date">{$vo.time|date="Y年m月d日",###}</h4><h2 class="post-title"><a href="{:url('Article/index',array('artid'=>$vo['artid']))}">{$vo.title}</a></h2><div class="post-body"><p>描述:{$vo.desc}</p>{if condition="$vo['pic'] neq ''"}  <p style="text-indent: 0em;"><a title="" target="_self" href="{:url('Article/index',array('artid'=>$vo['artid']))}"><img src="__PUBLIC__{$vo.pic}"/></a></p>{/if}</div><h5 class="post-tags">关键词: <span class="tags"><?php$arr=explode(',', $vo['keywords']);foreach ($arr as $k => $v) {echo "<a href='http://localhost/test/tp5/Public/index.php/index/Tags/index/tags/$v'>$v</a>";echo ' ';}?></span></h5><h6 class="post-footer">发布:渣渣 | 分类:{$vo.catename} | 评论:6 | 浏览:{$vo.click} | <a href="{:url('Article/index',array('artid'=>$vo['artid']))}">阅读全文 > </a></h6></div>{/volist}<div class="post pagebar">{$artres->render()}</div></div><div class="col-sm-3 col-sm-offset-1 blog-sidebar"><div class="sidebar-module sidebar-module-inset"><h4>文章搜索:</h4><form method="post" action="{:url('Search/index')}"><input type="text" name="keywords" id="edtSearch" size="12" /> <input type="submit" value="提交" id="btnPost" /></form></div></div></div></div>{include file="public/footer" /}
</body>

2.文章搜索

文章搜索是通过搜索文章标题实现;

将搜索框放在每个页面的侧边栏上,将搜素的关键词在数据中对每篇文章题目进行比对,返回响应的文章信息列表;

 

搜索框:

              <div class="sidebar-module sidebar-module-inset"><h4>文章搜索:</h4><form method="post" action="{:url('Search/index')}"><input type="text" name="keywords" id="edtSearch" size="12" /> <input type="submit" value="提交" id="btnPost" /></form></div>

对应的Search控制器方法为:

<?php
namespace app\index\controller;
class Search extends Basic
{public function index(){$keywords=input('keywords');//获取搜索关键词if($keywords){$map['title']  = ['like','%'.$keywords.'%'];//关键词模糊搜索语句$seares=\think\Db::name('article')->where($map)->order('artid desc')->paginate(2);//查询和分页$this->assign('seares',$seares);//模板赋值$this->assign('keywords',$keywords);}else{$this->assign('keywords','没有关键词');//没有关键词的情况处理$this->assign('seares',null);}return $this->fetch('search');}
}

Search.html进行模板赋值:

需要对没有文章的情况进行判断

<body>{include file="Public/header" /}<div class="container"><div class="row"><div class="col-sm-8 blog-main"><div class="post single-post cate0 auth0"><h4 class="post-date"></h4><h2 class="post-title">关键词:{$keywords}</h2><div class="post-body"> {if condition="$seares neq ' '"}{volist name="seares" id="vo"}<div><br/><font size="+0.5"><a target="_blank" href="{:url('article/index',array('artid'=>$vo['artid']))}">题目:{$vo.title}</a></font><br/>描述:{$vo.desc}<br/><br/></div>{/volist}{else /}没有搜索结果!{/if}</div></div></div></div>{include file="Public/footer" /}
</body>

 

效果:

 

这篇关于[thinkPHP5项目实战_29]前台首页和文章搜索功能完善的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/570686

相关文章

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步