做这个二次开发,首先要先了解二次开发的基本步骤:
1. 使用哪种二开方式?(控制器覆盖还是控制器方法钩子)
一般选用控制器覆盖方法,最简单了
2. 将二开文件与系统文件分开来。
从需求来看,文章模块是系统模块,系统已经有article-list.html这个文件了,所以二开的时候尽量不要在article-list.html这个文件修改,我们可以重新弄个文件。
知道如上步骤,那么我们接下来就开始弄了。
1. 将app/admin/c/ArticleController.php 放到 app/admin/plugins/ArticleController.php,修改相关代码:
namespace app\admin\plugins;//这里修改空间命名 use app\admin\c\CommonController;//引用公共控制器 use frphp\extend\Page;
找到对应的方法,内容列表是articlelist方法,要增加发布时间的范围搜索,前台选择范围,后台接收对应的时间范围,然后进行搜索。
我们选择layui的时间范围控件,提交的参数假设为:abc,接收的数据为:2025-10-23 10:00:00~2025-10-23 20:00:00 ,那么后台对这个abc进行处理,首先要拆分为两个时间,然后分别转为时间戳,之后拼接查询。
if($this->frparam('abc',1)){
$abc = explode('~',$this->frparam('abc',1));
$sql.=" and addtime>=".strtotime($abc[0])." and addtime<=".strtotime($abc[1]);
}
最后,对渲染的模板进行修改,原本的article-list.html改成article-list2.html,然后复制一份article-list.html,重命名为article-list2.html,那么就得到一份跟系统模板一样的模板文件,可以在这个自定的模板中加入时间范围组件。
$this->display('article-list2');//原本article-list,改成article-list2


看下前台效果:
实现功能:

总结:熟练掌握二开技巧,需要懂得前端知识,知道layui组件如何使用。
