emlog 让微语支持搜索功能

2020-3-26 Jon php

emlog 自带的微语是没有搜索功能的,这就导致当微语条很多时,想找到以前发的微语就只能一页一页的往下翻,非常不方便,但是这个是可以通过技术手段来实现该功能的。

实现微语搜索功能

  1. 修改注意事项

本博客使用的是emlog5.3.1版本,如果更高版本可能无法找到对应文件,但是若是懂点技术的话,作为参考一样可以修改好的。最重要的就把要改的文件备份下然后再进行修改

  1. 修改 twitter_model.php 文件

打开/include/model/twitter_model.php
这个文件需要修改四个地方
修改目的:搜索微语sql语句方法增加搜索词条件

// 1. 找到
function getTwitterNum($spot = 0) {
// 改为
function getTwitterNum($spot = 0, $condition = '') {
// 2. 找到
$data = $this->db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "twitter WHERE 1=1 $author");
// 改为
$data = $this->db->once_fetch_array("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "twitter WHERE 1=1 $author $condition");
// 3. 再找到
function getTwitters($page = 1, $spot = 0) {
// 改为
function getTwitters($page = 1, $spot = 0, $condition = '') {
// 4. 最后找到
$sql = "SELECT * FROM " . DB_PREFIX . "twitter WHERE 1=1 $author ORDER BY id DESC $limit";
// 改为
$sql = "SELECT * FROM " . DB_PREFIX . "twitter WHERE 1=1 $author $condition ORDER BY id DESC $limit";
  1. 修改 index.php 文件

打开 /t/index.php
这个文件需要修改三个地方
修改目的:加载微语页面时根据url的搜索词来进行展示

// 1. 找到
$tws = $Twitter_Model->getTwitters($page, 0);
// 修改为
$keyword = $_GET["keyword"];
$keyword = addslashes(htmlspecialchars(urldecode($keyword)));
$condition = $keyword ? "and content like '%{$keyword}%'" : '';
$tws = $Twitter_Model->getTwitters($page, 0, $condition);
// 2. 再找到
$pageurl = pagination($twnum, Option::get('index_twnum'), $page, BLOG_URL.'t/?page=');
// 修改为
$pageurl = pagination($twnum, Option::get('index_twnum'), $page, BLOG_URL.'t/?page=');
$pageurl = $keyword? pagination($twnum, Option::get('index_twnum'), $page, BLOG_URL.'t/?keyword='.urlencode($keyword).'&page='):$pageurl;
// 3. 最后找到
$twnum = $Twitter_Model->getTwitterNum(0);
// 改为
$twnum = $Twitter_Model->getTwitterNum(0, $condition);
  1. 修改 module.php 文件

打开 /content/templates/default/module.php
这个文件需要修改两个地方
修改目的:让侧边栏搜索在微语页面时url添加微语搜索词

// 1. 找到
function widget_search($title){ ?>
// 改为
function widget_search($title){
	$searchUrl = strstr($_SERVER["PHP_SELF"], "\/t\/")? 't/index.php': 'index.php';
	?>
// 2. 然后找到
<form name="keyform" method="get" action="<?php echo BLOG_URL; ?>index.php">
// 修改成
<form name="keyform" method="get" action="<?php echo BLOG_URL.$searchUrl; ?>">
  1. 测试

这样就完成了微语页面的搜索功能
进入微语页面进行测试看看是否好用
使用侧边栏中的搜索,如果内容正确,则说明修改成功
如果出现问题,则需要具体情况来调试。

标签: php emlog 搜索

分享这篇文章
赞助鼓励:如果觉得内容对您有所帮助,您可以支付宝(左)或微信(右):

声明:如无特殊注明,所有博客文章版权皆属于作者,转载使用时请注明出处。谢谢!

评论:

演员
2020-04-03 15:46
多来点emlog的教程学习下
Jon
2020-04-03 22:54
@演员:哈哈,有时候在自己博客上完善的功能会分享下

发表评论:

皖ICP备15010162号-1 ©2015-2020 知向前端
qq:1614245331 邮箱:13515678147@163.com Powered by emlog sitemap