emlog 自带的微语是没有搜索功能的,这就导致当微语条很多时,想找到以前发的微语就只能一页一页的往下翻,非常不方便,但是这个是可以通过技术手段来实现该功能的。
实现微语搜索功能
- 修改注意事项
本博客使用的是emlog5.3.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";
- 修改 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);
- 修改 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; ?>">
- 测试
这样就完成了微语页面的搜索功能
进入微语页面进行测试看看是否好用
使用侧边栏中的搜索,如果内容正确,则说明修改成功
如果出现问题,则需要具体情况来调试。
2024-08-21 23:18