1. 程式人生 > >PHPcms v9分欄目搜尋功能記錄

PHPcms v9分欄目搜尋功能記錄

之前做過一個搜尋功能,是直接呼叫PHPcms v9本身的全文搜尋,通過自定義typeid來定義自己所要搜尋的欄目,無意間在網上發現一個自定義catid來搜尋的,感覺十分不錯。

一、 修改phpcms/model/content_model.class.php

//112行附近
$this->search_api($id,$inputinfo); 
修改為:
$this->search_api($id,$systeminfo['catid'],$inputinfo);
//public function search_api這個函式進行修改
    public function
search_api($id = 0,$catid, $data = array(), $action = 'update'){
$type_arr = getcache('search_model_'.$this->siteid,'search'); $typeid = $type_arr[$this->modelid]['typeid']; if($action == 'update'){ $fulltext_array = getcache('model_field_'.$this->modelid,'model'
); foreach($fulltext_array AS $key=>$value){ if($value['isfulltext']) { $fulltextcontent .= $data['system'][$key] ? $data['system'][$key] : $data['model'][$key]; } } $this->search_db->update_search($typeid
,$id, $fulltextcontent,addslashes($data['system']['title']).' '.addslashes($data['system']['keywords']),$data['system']['inputtime'],'',$catid); }elseif($action == 'delete') { $this->search_db->delete_search($typeid ,$id); } }

二、修改phpcms/model/search_model.class.php

//找到update_search方法
public function update_search($typeid,$id = 0 ,$data = '',$text = '',$adddate = 0,$iscreateindex=0,$catid){
        $segment = pc_base::load_sys_class('segment');
        //分詞結果
        $fulltext_data = $segment->get_keyword($segment->split_result($data));
        $fulltext_data = $text.' '.$fulltext_data;
        if(!$iscreateindex){
            $r = $this->get_one(array('typeid'=>$typeid,'id'=>$id),'searchid');
        }

        if($r){
            $searchid = $r['searchid'];
            $this->update(array('data'=>$fulltext_data,'adddate'=>$adddate,'catid'=>$catid),array('typeid'=>$typeid,'id'=>$id));
        }else{
            $siteid = param::get_cookie('siteid');
            $searchid = $this->insert(array('typeid'=>$typeid,'id'=>$id,'adddate'=>$adddate,'data'=>$fulltext_data,'siteid'=>$siteid,'catid'=>$catid),true);

        }
        return $searchid;
    }

三、修改全站更新快取phpcms/modules/content/classes/search_api.class.php

//31行左右
$system_keys = 'id,inputtime,'.implode(',',$system_keys);
//修改為
$system_keys = 'id,inputtime,catid,'.implode(',',$system_keys);
//62行左右
$temp['adddate'] = $r['inputtime'];
//下面增加
$temp['catid'] = $r['catid'];

四、修改phpcms/modules/search/search_admin.php

//86$this->db->update_search($typeid ,$id, $r['fulltextcontent'],$r['title'],$r['adddate'], 1,$r['catid']); //這裡增加了$r['catid']

五、修改phpcms/modules/search/index.php

//找到25行左右if(isset($_GET['q']))在下面新增
$catid =$_GET['catid']?" AND catid = '$_GET[catid]'":'';
//找到60行左右
$commend = $this->db->get_one("`typeid` = '$typeid' $sql_time AND `data` like '%$q%'");
//修改為
$commend = $this->db->get_one("`typeid` = '$typeid' $sql_time $catid AND `data` like '%$q%'");
//找到83行左右
if(!empty($segment_q)) {
    $sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND MATCH (`data`) AGAINST ('$segment_q' IN BOOLEAN MODE)";
    } else {
    $sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND `data` like '%$q%'";
}
//修改為:
$sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $catid $sql_time AND `data` like '%$q%'";
//這樣修改可以防止分詞搜尋不到結果的情況

六、修改資料庫_search增加欄位catid int(4)並且做個索引,已經有欄目的資料可以用資料庫查詢程式碼匯入,沒有資料的,後臺提交會自動生成索引

注意:要安裝phpcms的全站搜尋,並且對需要搜尋的欄目新增搜尋分類

前臺呼叫程式碼:


{php $cat_id = 6;}<!--此處是一級欄目id,可以自己設定-->
<form name="search" id="" action="" method="get">
        <li>關 鍵 詞 :<input name="q" value="請輸入查詢關鍵詞" type="text"  onclick="javascript:document.getElementById('q').value='';" id="q" style="width:150px;"/></li>
        <li>產品類別:<select name="catid" style=" width:150px;">
          <option value="{$cat_id}">所有產品分類</option>
         {loop subcat($cat_id) $v} 
            {php if($v['type']!=0) continue;} 
                 <option value="{$v[catid]}">{$v[catname]}</option>
            {/loop}        
        </select></li>
        <input type="hidden" value="search" name="m">
        <input type="hidden" value="index" name="c">
        <input type="hidden" value="init" name="a">
        <input id="typeid" type="hidden" value="1" name="typeid">
        <input id="siteid" type="hidden" value="1" name="siteid">
        <li><input type="submit" name="submit" id="submit" value=""></li>        
</form>

OK,大功告成!

相關推薦

PHPcms v9欄目搜尋功能記錄

之前做過一個搜尋功能,是直接呼叫PHPcms v9本身的全文搜尋,通過自定義typeid來定義自己所要搜尋的欄目,無意間在網上發現一個自定義catid來搜尋的,感覺十分不錯。 一、 修改phpcms/model/content_model.class.ph

TP5 自帶搜尋功能實現

HTML部分: <form class="layui-form" > <div class="layui-form-item"> <label class="la

thymeleaf實現簡單的條件搜尋搜尋功能

首先看一下模板: 大致就是可以通過上面的某個或者多個條件實現按條件分頁搜尋的功能。因為前端介面用的是HTML並沒有用jsp所以沒辦法使用c:標籤,那麼怎麼通過thymeleaf實現jsp的功能呢? 好吧看一下程式碼: <form th:action="@{/per

phpcms-v9phpcms-v9欄目頁的靜態化生成

一、phpcms-v9中欄目頁的靜態化生成在phpcms/modules/content/create_html.php控制器中的category()方法 有時候我們不希望某些特定的欄目生成靜態頁,這時候我們該怎麼辦呢?為了測試方便,複製category(),並命名為ca

PHPCMS V9關於欄目圖片呼叫的方法

今天突然遇到一個需要呼叫欄目圖片的地方,在論壇上搜索了半天也沒有找到相關的文章,就自己去摸索了下,現在把方法分享給大家,希望可以幫助到那些還沒有解決和將要用到的朋友們!本人也是菜鳥,所以高手請見涼,不要扔磚頭啊!怕!怕!對程式編寫不懂,現在只是會用PHPCMS,基本使用是沒

phpcms-v9】為phpcms-v9新增熱門搜尋關鍵詞

目前正在用phpcms v9,需要顯示熱門搜尋關鍵詞,Google了幾下沒找到完善的解決辦法。 還是DIY吧。 通過觀察可以發現系統是自帶了關鍵詞模型的,只是沒有實現。 或許是放在下一個版本里,呵呵~ DIY就從 /phpcms/model/keyword_mode

phpcms v9欄目新增自定義英文欄目名稱欄位圖文教程

本文通過phpcms v9給欄目新增自定義英文欄目名稱欄位來教大家如何給欄目新增自定義欄位後臺效果展示:前臺效果展示:修改方法:1、通過 phpmyadmin 給 v9_category 表新增英文欄目自定義欄位 catname_en2、開啟 /phpcms/languag

PHPCMS V9頻道頁迴圈子欄目內容(子欄目為單頁則輸出標題和內容,為列表則輸出欄目名稱和頁列表)

注意:頻道下的子欄目最多隻能有一個分頁列表欄目(否則分頁會有問題),單頁面不限。效果如下圖:頻道頁模板如下:<div class="prointro"> <?php $page = $

phpcms v9按照新增的欄目搜尋

1、修改後臺新增、修改內容時新增欄目id到搜尋表中   找到  phpcms\model\content_model.class.php 大概113、302行左右,一共兩處   $this->search_api($id,$inputinfo);   修改為:   $

phpcms V9 get 實現前臺搜索結果

phpcms v9 get 實現前臺搜索結果分頁<?php $keywords=$_GET[‘keywords‘];?> {pc:get sql="Select * from `v9_news` where `title` like ‘%$keywords%‘" num="20" page="$p

原生javascript實現頁效果+搜尋功能

一、概述 首先,我們要明確為何需要分頁技術,主要原因有以下:   1、分頁可以提高客戶體驗度,適當地選擇合適的資料條數,讓頁面顯得更有條理,使得使用者體驗感良好,避免過多資料的冗餘。   2、提高效能的需要。 為何需要搜尋技術,主要原因有以下: 1、搜尋功能,能準確的根據使用

在前後端分離的專案中用vue寫電商的搜尋功能

1,在mock.js中模擬資料 //搜尋商品初始化資料 Mock.mock("/search-service/goods", "get", { "count": "@integer(100,200)", "data|5-15": [{ "id|+1": 1

Django 實現搜尋功能功能和個人理解

最近在研究django的功能,分頁功能根據官方文件可以簡單的實現,但是如果配合上搜尋,對搜尋結果分頁就要稍微費點周折。 話不多少,先上程式碼。 一、搜尋配合分頁 # 獲取、判斷並封裝關keyword鍵搜尋 kw = request.GET.get("keyword",

MyBatis實現使用者的動態搜尋頁等功能(7)

實現使用者的動態修改功能 思路分析 點選修改,獲取要修改的使用者id 我們需要新建一個 update.jsp先顯示要修改的使用者資訊,讓後讓使用者選擇性修改 兩個頁面跳轉我們需要servlet處理,所以要新建一個UpdateUserShow.java 實現u

電商專案day11(商品搜尋功能實現&排序&結果頁)

今日目標:     完成關鍵字搜尋功能     能夠實現高亮顯示效果     完成查詢分類列表的功能     完成條件過濾構建功能     完成分頁動態

PHPCMS v9 手機端欄目綁定模板

設置 emp default sub efault 方便 -- nbsp temp phpcms的手機端,模塊是有了,但是有些地方用的還不是很舒服,其中移動端欄目無法綁定模板就不是很方便。如圖,所有的欄目綁定的模板是固定的。這次咱們就來處理下,移動端如何設置相應的模板。這裏

PHPCMS V9迴圈呼叫指定欄目下的所有單頁資訊

<!-- 由於catid是欄目表索引,所以$ck這裡相當於catid的值 --> {loop subcat(1) $ck $carr} {pc:get sql="SELECT * FROM

PHPCMS V9單頁作為欄目無法編輯欄目內容的解決方法

轉載自 瘋子的部落格  http://blog.sina.com.cn/s/blog_632d132c0101a7up.html 首先說一下,pc團隊對單頁的理解,真的讓我蛋疼,單頁下面有了子欄目,單頁就無法編輯內容,而且導航顯示二級導航的時候還要依賴這個無法編輯內容的

Ajax實現搜尋功能

//清空最大頁和當前頁,保證能夠多次搜尋 function on() { $('#pageCurrent').val(''); $('#maxys').val(''); } //首頁 function pageAjaxFirs

phpcms v9呼叫當前欄目的同級欄目的幾種方法

(1)單網頁:     {loop $arrchild_arr $cid}<!--只適應用單網頁--> <li {if $catid==$cid}class="cur_link"{/if}><a href="{$CATEGORYS[$cid][