phpcms v9添加熱門(mén)搜索關(guān)鍵詞的方法
發(fā)布時(shí)間:2011-09-13 19:57:26 作者:佚名
我要評(píng)論

目前正在用phpcms v9,需要顯示熱門(mén)搜索關(guān)鍵詞,Google了幾下沒(méi)找到完善的解決辦法。還是DIY吧。
通過(guò)觀察可以發(fā)現(xiàn)系統(tǒng)是自帶了關(guān)鍵詞模型的,只是沒(méi)有實(shí)現(xiàn)。
或許是放在下一個(gè)版本里,呵呵~ DIY就從 /phpcms/model/keyword_model.class.php入手了。
看一下keyword_model.class.php的內(nèi)容
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class keyword_model extends model {
public $table_name = '';
public function __construct() {
$this->db_config = pc_base::load_config('database');
$this->db_setting = 'default';
$this->table_name = 'keyword';
parent::__construct();
}
}
從代碼可以看出關(guān)鍵詞表名叫 keyword 可是我們查看數(shù)據(jù)庫(kù)里沒(méi)有這樣的表名。
那就參照相關(guān)搜索數(shù)據(jù)表 tb_search_keyword(我安裝的時(shí)候用的是tb做表前綴)
新建一個(gè)熱門(mén)搜索關(guān)鍵詞數(shù)據(jù)表 keyword
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `tb_keyword`
-- ----------------------------
DROP TABLE IF EXISTS `tb_keyword`;
CREATE TABLE `tb_keyword` (
`keyword` char(20) NOT NULL,
`typeid` tinyint(4) NOT NULL default '0',
`searchnums` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`keyword`),
UNIQUE KEY `keyword` (`keyword`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
這樣數(shù)據(jù)表就建好了,接下來(lái)就是添加和調(diào)用數(shù)據(jù)了。
打開(kāi)文件 /phpcms/models/search/index.php
找到
//如果開(kāi)啟相關(guān)搜索功能
if($setting['relationenble']) {
在它上面加入以下代碼
//加入搜索關(guān)鍵詞記錄 imbin 2011/9/13
if(!empty($result)){
$this->keyword_log_db = pc_base::load_model('keyword_model');
$res = $this->keyword_log_db->get_one(array('keyword'=>$q,'typeid'=>$typeid));
if($res) {
//關(guān)鍵詞搜索數(shù)+1
$this->keyword_log_db->update(array('searchnums'=>'+=1'), array('keyword'=>$q));
} else {
$this->keyword_log_db->insert(array('keyword'=>$q,'typeid'=>$typeid, 'searchnums'=>1));
}
}
這樣就實(shí)現(xiàn)了搜索關(guān)鍵詞的添加
再來(lái)看看模板調(diào)用的實(shí)現(xiàn),我用的是 get 標(biāo)簽。
首先看搜索結(jié)果頁(yè):/phpcms/templates/default/search/list.html
{pc:get sql="SELECT keyword,typeid FROM tb_keyword WHERE typeid=$typeid AND searchnums > 5 ORDER BY rand()" num="5" return="keywords"}
{loop $keywords $k=>$v}<a href="/index.php?typeid={$v['typeid']}&m=search&c=index&a=init&q={$v['keyword']}">{$v['keyword']}</a>{/loop}
{/pc}
這里的排序我用了隨機(jī),因?yàn)槲也幌朊看味汲霈F(xiàn)一樣的,呵呵。
附上按搜索次數(shù)排序的Sql語(yǔ)句:SELECT keyword,typeid FROM tb_keyword WHERE typeid=$typeid ORDER BY searchnums DESC
如果是在首頁(yè)調(diào)用,需要去掉$typeid。BTW:如果要在非搜索結(jié)果頁(yè)都要去掉$typeid
{pc:get sql="SELECT keyword,typeid FROM tb_keyword ORDER BY searchnums DESC" num="8" return="keywords"}
{loop $keywords $k=>$v}<a href="/index.php?typeid={$v['typeid']}&m=search&c=index&a=init&q={$v['keyword']}">{$v['keyword']}</a>{/loop}
{/pc}
OK了,DIY完成!
或許是放在下一個(gè)版本里,呵呵~ DIY就從 /phpcms/model/keyword_model.class.php入手了。
看一下keyword_model.class.php的內(nèi)容
復(fù)制代碼
代碼如下:defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class keyword_model extends model {
public $table_name = '';
public function __construct() {
$this->db_config = pc_base::load_config('database');
$this->db_setting = 'default';
$this->table_name = 'keyword';
parent::__construct();
}
}
從代碼可以看出關(guān)鍵詞表名叫 keyword 可是我們查看數(shù)據(jù)庫(kù)里沒(méi)有這樣的表名。
那就參照相關(guān)搜索數(shù)據(jù)表 tb_search_keyword(我安裝的時(shí)候用的是tb做表前綴)
新建一個(gè)熱門(mén)搜索關(guān)鍵詞數(shù)據(jù)表 keyword
復(fù)制代碼
代碼如下:SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `tb_keyword`
-- ----------------------------
DROP TABLE IF EXISTS `tb_keyword`;
CREATE TABLE `tb_keyword` (
`keyword` char(20) NOT NULL,
`typeid` tinyint(4) NOT NULL default '0',
`searchnums` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`keyword`),
UNIQUE KEY `keyword` (`keyword`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
這樣數(shù)據(jù)表就建好了,接下來(lái)就是添加和調(diào)用數(shù)據(jù)了。
打開(kāi)文件 /phpcms/models/search/index.php
找到
復(fù)制代碼
代碼如下://如果開(kāi)啟相關(guān)搜索功能
if($setting['relationenble']) {
在它上面加入以下代碼
復(fù)制代碼
代碼如下://加入搜索關(guān)鍵詞記錄 imbin 2011/9/13
if(!empty($result)){
$this->keyword_log_db = pc_base::load_model('keyword_model');
$res = $this->keyword_log_db->get_one(array('keyword'=>$q,'typeid'=>$typeid));
if($res) {
//關(guān)鍵詞搜索數(shù)+1
$this->keyword_log_db->update(array('searchnums'=>'+=1'), array('keyword'=>$q));
} else {
$this->keyword_log_db->insert(array('keyword'=>$q,'typeid'=>$typeid, 'searchnums'=>1));
}
}
這樣就實(shí)現(xiàn)了搜索關(guān)鍵詞的添加
再來(lái)看看模板調(diào)用的實(shí)現(xiàn),我用的是 get 標(biāo)簽。
首先看搜索結(jié)果頁(yè):/phpcms/templates/default/search/list.html
復(fù)制代碼
代碼如下:{pc:get sql="SELECT keyword,typeid FROM tb_keyword WHERE typeid=$typeid AND searchnums > 5 ORDER BY rand()" num="5" return="keywords"}
{loop $keywords $k=>$v}<a href="/index.php?typeid={$v['typeid']}&m=search&c=index&a=init&q={$v['keyword']}">{$v['keyword']}</a>{/loop}
{/pc}
這里的排序我用了隨機(jī),因?yàn)槲也幌朊看味汲霈F(xiàn)一樣的,呵呵。
附上按搜索次數(shù)排序的Sql語(yǔ)句:SELECT keyword,typeid FROM tb_keyword WHERE typeid=$typeid ORDER BY searchnums DESC
如果是在首頁(yè)調(diào)用,需要去掉$typeid。BTW:如果要在非搜索結(jié)果頁(yè)都要去掉$typeid
復(fù)制代碼
代碼如下:{pc:get sql="SELECT keyword,typeid FROM tb_keyword ORDER BY searchnums DESC" num="8" return="keywords"}
{loop $keywords $k=>$v}<a href="/index.php?typeid={$v['typeid']}&m=search&c=index&a=init&q={$v['keyword']}">{$v['keyword']}</a>{/loop}
{/pc}
OK了,DIY完成!
相關(guān)文章
完美解決phpcms圖片太大撐破表格圖片自適應(yīng)圖片按比例縮小
下面小編就為大家?guī)?lái)一篇完美解決phpcms圖片太大撐破表格圖片自適應(yīng)圖片按比例縮小。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-18- 這篇文章主要介紹了PHPCMS v9 安全設(shè)置、防范教程,需要的朋友可以參考下2016-09-05
PHPCMS V9 全站 Sitemaps生成實(shí)現(xiàn)代碼[服務(wù)器端版]
這篇文章主要介紹了PHPCMS V9 全站 Sitemaps生成實(shí)現(xiàn)代碼[服務(wù)器端版],需要的朋友可以參考下2016-06-08phpcms內(nèi)容詳情頁(yè)只顯示日期不顯示時(shí)間的方法
這篇文章主要介紹了phpcms內(nèi)容詳情頁(yè)只顯示日期不顯示時(shí)間的方法,即格式化時(shí)間輸出的方法,需要的朋友可以參考下2015-06-19- 這篇文章主要介紹了PHPCMS制作網(wǎng)站地圖的簡(jiǎn)單方法,本文給出了操作步驟及標(biāo)簽源碼,需要的朋友可以參考下2015-06-19
- 這篇文章主要介紹了PHPCMSV9父欄目調(diào)用子欄目的方法,本文講解了在二級(jí)欄目列表頁(yè)調(diào)用、在一級(jí)欄目列表頁(yè)調(diào)用兩種方法方式,需要的朋友可以參考下2015-06-19
PHPCMS使用date函數(shù)實(shí)現(xiàn)自動(dòng)更新頁(yè)腳年月的方法
這篇文章主要介紹了PHPCMS使用date函數(shù)實(shí)現(xiàn)自動(dòng)更新頁(yè)腳年月的方法,本文主要還是可以學(xué)習(xí)到date函數(shù)的用法了,需要的朋友可以參考下2015-06-19- 這篇文章主要介紹了phpsso忘記密碼的解決辦法,本文用PHPCMS的密碼及encrypt值替換數(shù)據(jù)表解決了這個(gè)問(wèn)題,方法還是挺靠譜的,只是操作要求有點(diǎn),需要的朋友可以參考下2015-06-19
phpcms 退出無(wú)法同步通知discuz問(wèn)題的解決方法
這篇文章主要介紹了phpcms 退出無(wú)法同步通知discuz問(wèn)題的解決方法,需要的朋友可以參考下2014-12-15phpcms v9列表頁(yè)如何調(diào)用子欄目如首頁(yè)>產(chǎn)品中心>產(chǎn)品類型a
phpcms v9列表頁(yè)如何調(diào)用子欄目如:首頁(yè)>產(chǎn)品中心>產(chǎn)品類型a>產(chǎn)品類型a11,在列表頁(yè)產(chǎn)品類型a中,包括產(chǎn)品類型a1、產(chǎn)品類型a2、產(chǎn)品類型a32014-09-24