PHPCMSX文章标题自动关键词修改方法

最近用PHPCMSX部署了一些项目,可是PHPCMSX也面临了部分插件无法使用的问题,就拿常用的关键词自动分词这里,提供分词的HTTPS是无法访问了,导致分词结果是空。于是乎就想到自己改一个出来,翻看代码发现其实自己写一个也不难。步骤分为一下几步:


一、添加新方法:


找到程序位置:“api/get_keywords.php”


0, 'data'=>'', 'msg'=>'未添加百度分词系统变量');
                //exit(json_encode($data));
            }
            $client = new AipNlp($cfg_bdqc_appid, $cfg_bdqc_apikey, $cfg_bdqc_secretkey);
            $lexer = $client->lexer($words);
            $tagstr = '';
            if(isset($lexer['error_code'])) {
                $data = array('code'=>0, 'data'=>'', 'msg'=>"请检查百度分词API设置:".$lexer['error_msg']);
            }
            if(isset($lexer['items'])) {
                $items = $lexer['items'];
                $qcnum = $cfg_bdqc_qcnum ? $cfg_bdqc_qcnum : rand(1,count($items));
                $itemcount = count($items) > $qcnum ? $qcnum : count($items);
                $result = array_rand($items, $itemcount == 0 ? 1 : $itemcount);
                $resultstr = array();
                if(is_array($result)) {
                    foreach($result as $k => $v) {
                        $resultstr[] = $items[$v]['item'];
                    }
                    $tagstr = implode(',', $resultstr);
                } else {
                    $tagstr = $items[$result]['item'];
                }
            }
            $data = array('code'=>1, 'data'=>$tagstr, 'msg'=>'分词成功');
            //exit(json_encode($data));
            if ($data && $data['data']) {
                return trim($data['data'], ',');
            }
            break;
        case '2':
            $XAppid = pc_base::load_config('system', 'xunfei_appid');
            $Apikey = pc_base::load_config('system', 'xunfei_apikey');
            $fix = 0; //如果错误日志提示【time out|ilegal X-CurTime】,需要把$fix变量改为 100 、200、300、等等,按实际情况调试,只要是数字都行
            $XParam = base64_encode(json_encode(array(
                "type"=>"dependent",
            )));
            $XCurTime = SYS_TIME - $fix;
            $XCheckSum = md5($Apikey.$XCurTime.$XParam);
            $headers = array();
            $headers[] = 'X-CurTime:'.$XCurTime;
            $headers[] = 'X-Param:'.$XParam;
            $headers[] = 'X-Appid:'.$XAppid;
            $headers[] = 'X-CheckSum:'.$XCheckSum;
            $headers[] = 'Content-Type:application/x-www-form-urlencoded; charset=utf-8';
            $rt = json_decode(file_get_contents("https://ltpapi.xfyun.cn/v1/ke", false, stream_context_create(array(
                'http' => array(
                    'method' => 'POST',
                    'header' => $headers,
                    'content' => http_build_query(array(
                        'text' => $words,
                    )),
                    'timeout' => 15*60
                )
            ))), true);
            if (!$rt) {
                //return '接口请求失败';
            } elseif ($rt['code']) {
                //return '接口请求错误: '.$rt['desc'];
            } else {
                $msg = '';
                foreach ($rt['data']['ke'] as $t) {
                    $msg.= ','.$t['word'];
                }
                return trim($msg, ',');
            }
            return '';
            break;
        default:
            $data = trim(strip_tags($words));
            if(empty($words)) return '';
            $http = pc_base::load_sys_class('http');
            if(CHARSET != 'utf-8') {
                $data = iconv('utf-8', CHARSET, $data);
            }
            $number = pc_base::load_config('system', 'baidu_qcnum') ? pc_base::load_config('system', 'baidu_qcnum') : 4;
            $number -= 1;
            $http->post(API_URL_GET_KEYWORDS, array('siteurl'=>SITE_URL, 'charset'=>CHARSET, 'data'=>$words, 'number'=>$number));
            if($http->is_ok()) {
                if(CHARSET != 'utf-8') {
                    return iconv('gbk','utf-8',$http->get_data());
                } else {
                    return $http->get_data();
                }
            }
            return '';
         case '3':
            $get_url = 'http://fenci.exv5.com/api_fenci.html?str=' . urlencode($words);
            $ch = curl_init();
            curl_setopt_array($ch, [
                CURLOPT_URL => $get_url,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_TIMEOUT => 10,
                CURLOPT_HTTPHEADER => [
                    'Content-Type: application/json',
                ]
            ]);
            
            $response = curl_exec($ch);
            curl_close($ch);
            $res = preg_replace('/\s+/', '', $response);
            return $res;
        }
}
?>


替换成以上内容,其中case '3'是新增接口,如果有自己的接口或其他网站接口,可以直接在这里修改成自己的接口,如果需要但对为接口设置appkey,需要在系统文件中增加对应接口的配置appkey。


系统配置appkey位置:“caches/configs/system.php”

//关键词提取接口配置
'cwsapi' => '3', //1讯飞,2百度,3南方海豹
'xunfei_appid' => '',	//讯飞开放平台 APPID
'xunfei_apikey' => '',//讯飞开放平台 APIKey
'baidu_appid' => '',	//百度关键词提取 APPID
'baidu_apikey' => '',	//百度关键词提取 APIKey
'baidu_secretkey' => '', //百度关键词提取 Secret Key
'baidu_qcnum' => '4',	//百度关键词提取 百度分词数量

在上面这个位置自行添加,名称请自定义不要重复。


二、修改后台接口选择:


后台系统配置页面:“phpcms/modules/admin/templates/system.tpl.php",搜索“PHPCMSX接口”,在这段上方粘贴如下代码:


                南方海豹接口:                                    <input type="radio" name="setconfig[cwsapi]" value="3"> 南方海豹 智能分词 [推荐:永久免费/更加人性化]   
                                                                        PHPCMSX接口:                                    <input type="radio" name="setconfig[cwsapi]" value="0"> PHPCMSX 智能分词 [推荐:永久免费/更加人性化]   
                                            



粘贴后保存即可,保存后进入测试接口环节。


三、测试结果:


新建一篇文章,使用浏览器的开发者模式,选择“Network”模式后,在标题处随意输入一些词语(乱输入可能无效),然后点击关键词。在查看提交的结果。最后看看我的图。


1741853169779276.png


在此就全部结束了,希望你们能够成功!

快速仿站

相关推荐

Copyright © 2019-2024 贵州海豹文化传播有限公司 版权所有 · 黔ICP备2022002053号-1
Hello,欢迎来咨询~
新手教程 技术支持 回到顶部