zoukankan      html  css  js  c++  java
  • 给phpcms v9增加类似于phpcms 2008中的关键词表

    最近用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的时候直接调上这个表就行了。

    请得先清除全站缓存,否则修改后看不到效果。本博客文章属于原创,转载请说明出处。

  • 相关阅读:
    CodeForces 706C Hard problem
    CodeForces 706A Beru-taxi
    CodeForces 706B Interesting drink
    CodeForces 706E Working routine
    CodeForces 706D Vasiliy's Multiset
    CodeForces 703B Mishka and trip
    CodeForces 703C Chris and Road
    POJ 1835 宇航员
    HDU 4907 Task schedule
    HDU 4911 Inversion
  • 原文地址:https://www.cnblogs.com/hubj/p/2740327.html
Copyright © 2011-2022 走看看