[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

相关文章

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

Java Spring 中的监听器Listener详解与实战教程

《JavaSpring中的监听器Listener详解与实战教程》Spring提供了多种监听器机制,可以用于监听应用生命周期、会话生命周期和请求处理过程中的事件,:本文主要介绍JavaSprin... 目录一、监听器的作用1.1 应用生命周期管理1.2 会话管理1.3 请求处理监控二、创建监听器2.1 Ser

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性