如何给phpcms v9增加类似于phpcms 2008中的关键词表


Posted in PHP onJuly 01, 2013

最近用phpcms v9二次开发一个人站点,之前用2008中有个比较舒服的关键词全部显示出来功能,而v9将关键词列表功能增加到了搜索中,如果搜索一个关键词就会自动产生一个增加到了search_keyword表中,这一点不是很喜欢v9;站内搜索功能,我觉得一般会用得比较少,而我们在增加文章的时候实际上就把关键词分隔开了,为什么还要多此一举了,其实改起来也比较简单

在model文件夹中增加一个keyword_ext_model.class.php。keyword_model实际是存在model文件夹中的,不知道为什么没有keyword这张表?

所以还是不要在这个基本上增加,也许将来这个model会用上

<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class keyword_ext_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_ext';
        parent::__construct();
    }
}
?>

然后创建一张表
CREATE TABLE `t_v9_keyword_ext` (
  `tagid` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `tag` char(50) NOT NULL,
  `style` char(5) NOT NULL,
  `usetimes` smallint(5) unsigned NOT NULL DEFAULT '0',
  `lastusetime` int(10) unsigned NOT NULL DEFAULT '0',
  `hits` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `lasthittime` int(10) unsigned NOT NULL DEFAULT '0',
  `listorder` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `modelid` smallint(6) DEFAULT '0',
  PRIMARY KEY (`tagid`),
  UNIQUE KEY `tag` (`tag`),
  KEY `usetimes` (`usetimes`,`listorder`),
  KEY `hits` (`hits`,`listorder`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

最后一步在phpcms/modules/content/fields/keyword 中增加一个 input.inc.php
function tags($field, $value)
    {
        if(!$value) return '';
        if(strpos($value, ','))
        {
            $s = ',';
        }
        else
        {
            $s = ',';
        }        $keywords = isset($s) ? array_unique(array_filter(explode($s, $value))) : array($value);
        $keyword_db = pc_base::load_model('keyword_ext_model');
        foreach($keywords as $tag)
        {
            $tag = trim($tag);
            $keyword_db->delete(array("tag"=>$tag,"modelid"=>$this->modelid));
            $c=$this->db->count("keywords like '%".$tag."%'");
            $keyword_db->insert(array("modelid"=>$this->modelid,"tag"=>$tag,"usetimes"=>$c,"lastusetime"=>SYS_TIME),false,true);
        }
        return implode($s, $keywords);
}

这样在文章增加关键词的时候,会自动增加到keyword_ext中一份,调用全站tags的时候直接调上这个表就行了。请得先清除全站缓存,否则修改后看不到效果。
PHP 相关文章推荐
php 处理上百万条的数据库如何提高处理查询速度
Feb 08 PHP
php检测用户是否用手机(Mobile)访问网站的类
Jan 09 PHP
php实现文件下载简单示例(代码实现文件下载)
Mar 10 PHP
php基于base64解码图片与加密图片还原实例
Nov 03 PHP
php使用Imagick生成图片的方法
Jul 31 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
PHP实现通过URL提取根域名
Mar 31 PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 PHP
详解PHP防止直接访问.php 文件的实现方法
Jul 28 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
Sep 29 PHP
php文件上传原理与实现方法详解
Dec 20 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 PHP
解析php做推送服务端实现ios消息推送
Jul 01 #PHP
php ios推送(代码)
Jul 01 #PHP
PHP分页效率终结版(推荐)
Jul 01 #PHP
解析php防止form重复提交的方法
Jul 01 #PHP
PHP以指定字段为索引返回数据库所取的数据数组
Jun 30 #PHP
php设计模式之单例、多例设计模式的应用分析
Jun 30 #PHP
php获取$_POST同名参数数组的实现介绍
Jun 30 #PHP
You might like
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
实用函数2
2007/11/08 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
php网页病毒清除类
2014/12/08 PHP
php 防止表单重复提交两种实现方法
2016/11/03 PHP
PHP实现微信退款功能
2018/10/02 PHP
用Laravel轻松处理千万级数据的方法实现
2020/12/25 PHP
使用IE的地址栏来辅助调试Web页脚本
2007/03/08 Javascript
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
学习并汇集javascript匿名函数
2010/11/25 Javascript
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
2010/12/02 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
angularjs基础教程
2014/12/25 Javascript
Vue.js 父子组件通讯开发实例
2016/09/06 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
会计自我鉴定
2013/11/02 职场文书
水务局局长岗位职责
2013/11/28 职场文书
医院检讨书范文
2014/02/01 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
一年级下册数学教学反思
2016/02/16 职场文书
vue实现同时设置多个倒计时
2021/05/20 Vue.js
如何利用python实现列表嵌套字典取值
2022/06/10 Python