如何给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 相关文章推荐
做一个有下拉功能的留言版
Oct 09 PHP
让你同时上传 1000 个文件 (二)
Oct 09 PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
May 04 PHP
php获取中文拼音首字母类和函数分享
Apr 24 PHP
php面象对象数据库操作类实例
Dec 02 PHP
thinkphp3.2.2实现生成多张缩略图的方法
Dec 19 PHP
9个实用的PHP代码片段分享
Jan 22 PHP
php单例模式实现方法分析
Mar 14 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
Aug 31 PHP
php抽象方法和抽象类实例分析
Dec 07 PHP
完美解决在ThinkPHP控制器中命名空间的问题
May 05 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
Oct 15 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
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
Javascript Global对象
2009/08/13 Javascript
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
js中call与apply的用法小结
2013/12/28 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
JS中的继承操作实例总结
2020/06/06 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
使用Django的模版来配合字符串翻译工作
2015/07/27 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
CentOS下Python3的安装及创建虚拟环境的方法
2018/11/28 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
python同时遍历两个list用法说明
2020/05/02 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
绩效工资分配方案
2014/01/18 职场文书
房屋转让协议书
2014/04/11 职场文书
辞职信格式范文
2015/05/13 职场文书
单位政审意见范文
2015/06/04 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
uwsgi+nginx代理Django无法访问静态资源的解决
2021/05/10 Servers