博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dedecms关键词维护里面字数多的词优先字数少的词的解决办法 相关案例演示
阅读量:4963 次
发布时间:2019-06-12

本文共 3325 字,大约阅读时间需要 11 分钟。

织梦后台的关键词维护默认的情况是字数少的词优先于字数多的词,比如我们有两个这样的词:创业、创业方向,第二个词包含了第一个词,在文章中如果出现“创业方向”这个词,默认情况下只会给创业两个字添加关键词超链接,而不是整个词,那么我们怎么样才能实现字数多的词优先于字数少的词呢?下面就告诉大家具体的解决方法:

我们找到并打开/include/arc.archives.class.php文件,在里面找到如下代码:

01 function ReplaceKeyword($kw,&$body)
02     {
03         global $cfg_cmspath;
04         $maxkey = 5;
05         $kws = explode(",",trim($kw));    //以分好为间隔符
06         $i=0;
07         $karr = $kaarr = $GLOBALS['replaced'] = array();
08  
09         //暂时屏蔽超链接
10         $body = preg_replace("#(<a(.*))(>)(.*)(<)(\/a>)#isU"'\\1-]-\\4-[-\\6', $body);
11  
12         /*
13         foreach($kws as $k)
14         {
15             $k = trim($k);
16             if($k!="")
17             {
18                 if($i > $maxkey)
19                 {
20                     break;
21                 }
22                 $myrow = $this->dsql->GetOne("SELECT * FROM #【分隔符】@__keywords WHERE keyword='$k' AND rpurl<>'' ");
23                 if(is_array($myrow))
24                 {
25                     $karr[] = $k;
26                     $GLOBALS['replaced'][$k] = 0;
27                     $kaarr[] = "<a href='{$myrow['rpurl']}'><u>$k</u></a>";
28                 }
29                 $i++;
30             }
31         }
32         */
33         $query = "SELECT * FROM #【分隔符】@__keywords WHERE rpurl<>'' ORDER BY rank DESC";
34         $this->dsql->SetQuery($query);
35         $this->dsql->Execute();
36         while($row = $this->dsql->GetArray())
37         {
38             $key = trim($row['keyword']);
39             $key_url=trim($row['rpurl']);
40             $karr[] = $key;
41             $kaarr[] = "<a href='$key_url' target='_blank'><u>$key</u></a>";
42         }
43  
44         // 这里可能会有错误
45         $body = @preg_replace("#(^|>)([^<]+)(?=<|$)#sUe","_highlight('\\2', \$karr, \$kaarr, '\\1')", $body);
46  
47         //恢复超链接
48         $body = preg_replace("#(<a(.*))-\]-(.*)-\[-(\/a>)#isU",'\\1>\\3<\\4', $body);
49         return $body;
50     }

注意查找代码的时候先手动去掉代码里面的【分隔符】字样!

找到后将其替换为如下代码:

01     function ReplaceKeyword($kw,&$body)
02     {
03     global $cfg_cmspath,$dsql;
04     $maxkey = 5;
05     $kws = explode(",",trim($kw)); //以分好为间隔符
06     $i=0;
07     $karr = $kaarr = $GLOBALS['replaced'] = array();
08     //暂时屏蔽超链接
09     $body = preg_replace("/(<a(.*))(>)(.*)(<)(\/a>)/isU"'\\1-]-\\4-[-\\6', $body);
10     $query="SELECT * FROM #【分隔符】@__keywords WHERE rpurl<>'' and sta=1 ORDER BY length(keyword)desc";
11     $dsql->SetQuery($query);
12     $dsql->Execute();
13     while($row = $dsql->GetArray())
14     {
15     $key = trim($row['keyword']);
16     $key_url=trim($row['rpurl']);
17     $karr[] = $key;
18     $kaarr[] = "<u><a href='$key_url' target='_blank'>$key</a></u>";
19     }
20     foreach ($karr as $key => $word)
21     {
22     $body = preg_replace("/(^|>)([^<]+)(?=<|$)/sUe", "_highlight('\\2', \$karr[$key], \$kaarr[$key],
23  
24  
25 '\\1')", $body);
26     //echo $body."<br/>";
27     //恢复超链接
28     $body = preg_replace("/(<a(.*))-\]-(.*)-\[-(\/a>)/isU"'\\1>\\3<\\4', $body);//暂时屏蔽超链接
29     $body = preg_replace("/(<a(.*))(>)(.*)(<)(\/a>)/isU"'\\1-]-\\4-[-\\6', $body);
30     }
31     //恢复超链接
32     $body = preg_replace("/(<a(.*))-\]-(.*)-\[-(\/a>)/isU"'\\1>\\3<\\4', $body);
33  
34  
35     return $body;
36     }
37     }
38     //End Archives
39     //高亮专用, 替换多次是可能不能达到最多次
40     function _highlight($string, $words, $result, $pre)
41     {
42     global $cfg_replace_num;
43     $string = str_replace('\"''"', $string);
44 if($GLOBALS['replaced'][$words] == 1){
45     return $pre.$string;
46     }
47 if($cfg_replace_num > 0){
48     $string = preg_replace("/".preg_quote($words)."/", $result, $string, $cfg_replace_num);
49     if(strpos($string, $words) !== false)
50     {
51         $GLOBALS['replaced'][$words] = 1;
52         }
53         }
54 else{$string = str_replace($words, $result, $string);
55 }
56 return $pre.$string;
57 }

注意手动去掉代码里面的【分隔符】字样!

 

替换完成后保存即可,然后生成一下文章内容试试。

转载自织梦模板教程(www.dede58.com)

转载于:https://www.cnblogs.com/dede58/p/7119878.html

你可能感兴趣的文章
数据分析与展示---Pandas库数据特征分析
查看>>
二叉搜索树、B树
查看>>
cf里的一些简单组合数题
查看>>
iOS开发UI篇—在UITableview的应用中使用动态单元格来完成app应用程序管理界面的搭建...
查看>>
竞争性需求分析
查看>>
js读取解析JSON数据
查看>>
swift 获取Appstore版本号并与本地版本比较 更新跳转到Appstore
查看>>
51Node 1065----最小正子段和
查看>>
特殊乘法(数位拆解)
查看>>
【洛谷 P4342】[IOI1998]Polygon(DP)
查看>>
【洛谷 P1651】 塔 (差值DP)
查看>>
【洛谷 P3191】 [HNOI2007]紧急疏散EVACUATE(二分答案,最大流)
查看>>
【洛谷 P2512】 [HAOI2008]糖果传递(贪心)
查看>>
leetcode-数组-子集
查看>>
Socket通信
查看>>
使用git从本地上传至git码云远程仓库
查看>>
Go语言学习笔记(十五)之异常处理
查看>>
检测IE浏览器兼容Edge模式及IE11
查看>>
linux-镜像下载
查看>>
RobHess的SIFT代码解析步骤四
查看>>