个人博客 > 学无止境 > PHP > phpcms简化全站搜索功能

phpcms简化全站搜索功能

博主发现phpcms自带的搜索功能太繁杂化,而且搜索不精准,老是搜索不出想要的东西。博主就自己动手简化phpcmsv9搜索功能,希望phpcms不要找我麻烦哈哈。

先看效果,以本站为例:

phpcms简化全站搜索功能

搜索phpcms并设置了伪静态。

方法

找到文件/phpcms/modules/search/index.php

修改成

/**
	 * 关键词搜索  简化搜索功能 琅枫 
	 */
	public function init() {
		//获取siteid
		$siteid = isset($_REQUEST['siteid']) && trim($_REQUEST['siteid']) ? intval($_REQUEST['siteid']) : 1;
		if(isset($_GET['q'])) {
			if(trim($_GET['q'])=='') {
				header('Location: '.APP_PATH.'index.php');exit;
			}
			$typeid = empty($_GET['typeid']) ? 1 : intval($_GET['typeid']);
			$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
			$pagesize = 10;
			$q = safe_replace(trim($_GET['q']));
			$q = new_html_special_chars(strip_tags($q));
			$q = str_replace('%', '', $q);
			//SEO
			$SEO = seo($siteid);
			$SEO['title'] = $q."_搜索_琅枫个人博客";
			$SEO['keyword'] = $q;
			$SEO['description'] = "琅枫博客分享".$q."知识!";
			//URL规则
			$urlrule = getcache('urlrules','commons');
			$urlrule = str_replace('|', '~',$urlrule['35']);
			$tmp_urls = explode('~',$urlrule);
			$tmp_urls = isset($tmp_urls[1]) ?  $tmp_urls[1] : $tmp_urls[0];
			preg_match_all('/{\$([a-z0-9_]+)}/i',$tmp_urls,$_urls);
			if(!empty($_urls[1])) {
				foreach($_urls[1] as $_v) {
					$GLOBALS['URL_ARRAY'][$_v] = $_GET[$_v];
				}
			}
			define('URLRULE', $urlrule);
			$GLOBALS['URL_ARRAY']['categorydir'] = $q;
			$this->search_db = pc_base::load_model('content_model');
		$this->search_db->table_name = $this->db->db_tablepre."news";
			$data = $this->search_db->listinfo($where = "title like '%$q%' or description like '%$q%'",$order = 'inputtime desc',$page, $pagesize);
			foreach($data as $_k=>$_v) {
				$data[$_k]['title'] = str_replace($q, '<font color=red>'.$q.'</font>', $_v['title']);
				$data[$_k]['description'] = str_replace($q, '<font color=red>'.$q.'</font>', $_v['description']);
			}
			$pages1 = $this->search_db->pages1;
			$execute_time = execute_time();
			$pages1 = isset($pages1) ? $pages1 : '';
			$totalnums = isset($totalnums) ? $totalnums : 0;
			$data = isset($data) ? $data : '';
			include	template('search','list');
		} else {
			include	template('search','list');
		}
	}

注:URL规则在后台先添加伪静态规则

phpcms简化全站搜索功能

URL示例:search-phpcms-2.html

URL规则:search-{$categorydir}-1.html|search-{$categorydir}-{$page}.html

分页函数本站也修改了$pages1;参考的小伙伴注意一下。

2.搜索html文件为:

 <form class="am-topbar-form am-topbar-right am-form-inline" role="search" action="http://phpfeng.cn/index.php" method="get" target="_blank" id="form" data-am-validator>
		<div class="am-input-group">
			<input type="hidden" name="m" value="search">
			<input type="hidden" name="c" value="index">
			<input type="hidden" name="a" value="init">
			<input type="hidden" name="typeid" value="1">
			<input type="hidden" name="siteid" value="1">
			<input type="text" class="am-form-field am-input-sm" name="q" id="q" placeholder="搜索" data-validation-message="至少1个字符" minlength="1" required>
			<span class="am-input-group-btn">
				<button class="am-btn am-btn-default" type="button"><span class="am-icon-search"></span></button>
			</span>
		</div>
    </form>

3.修改.htaccess文件让伪静态生效

.htaccess是LINUX+apache如果是IIS着修改web.config

.htaccess代码:

    RewriteRule ^search-(.*)-([0-9]+).html index.php?m=search&c=index&a=init&typeid=1&siteid=1&q=$1&page=$2

如果对phpcms伪静态不熟悉的可参考:phpcms伪静态设置

忘了这里表单这里是用的JS提交的。附上代码:

    $(".am-input-group-btn").click(function(){
		var q = $("#q").val();
		if(q){
			window.open("http://phpfeng.cn/search-"+q+"-1.html");
		}else{
			return false;
		}
	});

本文出自:琅枫个人博客。如需转载请注明出处!

本文出处:"https://www.phpfeng.cn/learn/php/87.html"

如果您觉得文章对你有帮助,可以进行打赏。
打赏多少,您高兴就行,谢谢您对琅枫博客的支持! ~(@^_^@)~

微信打赏

琅枫博客微信号

支付宝打赏

琅枫博客个人支付宝
本文关键词: 全站 功能 搜索



你想在庞大的互联网上留下一丝足迹?

我不想成为一个庸俗的人。十年百年后,当我们死去,质疑我们的人同样死去,后人看到的是裹足不前、原地打转的你,还是一直奔跑、走到远方的我?

点我了解如何搭建个人博客?