文章关键字链接替换次数控制【附代码】
这个看起来好像很有用哦。
DEDE自带关键字替换链接功能,默认是把文章里关键字每出现一次就添加一次链接,这个在关键字出现比较频密的文章里,显得有些乱,因此希望能控制这个替换的次数。
以下方法在DEDE5.1里调试通过,可以按以下方法自行修改,但要确保修改前把涉及文件先行备份。
打开 include/inc_funtions.php
原代码:
修改后:
附加说明,关键字链接替换功能需要设置三个地方:
1、 在后台的“系统管理”的“过滤设置 ”里,设置“关键字替换(是/否)”为“是”;
2 、在后台的“内容维护”的“搜索关键词管理”里,点“文档关键字维护”,然后添加或修改关键字和链接地址的对应关系
3、 添加和修改文章时,在“其它参数”里,填写“关键字”项,多个关键字之间用空格分隔;
这些都设置完毕之后,文章在生成的时候,如果就会把把它正文里的设置的带有链接地址的关键字,自动添加上链接地址。
以下方法在DEDE5.1里调试通过,可以按以下方法自行修改,但要确保修改前把涉及文件先行备份。
打开 include/inc_funtions.php
原代码:
Copy code
function highlight($string, $words, $hrefs='',$pretext='', $step='')
{
//后两个变量为系统继承变量,不可指定
if($step != 'me'){
return preg_replace('/(^|>)([^<]+)(?=<|$)/sUe', "highlight('\\2',\$words, \$hrefs, '\\1', 'me')", $string);
}
if(is_array($words)){
$string = str_replace('\"', '"', $string);
foreach($words as $k => $word){
if(empty($hrefs[$k])){
$string = preg_replace('/(^|>)([^<]+)(?=<|$)/sUe', "highlight('\\2',\$word, '', '\\1', 'me')", $string);
}else{
$string = preg_replace('/(^|>)([^<]+)(?=<|$)/sUe', "highlight('\\2',\$word, \$hrefs[\$k], '\\1', 'me')", $string);
}
}
return $pretext.$string;
}else{
if($hrefs == ''){
$string = str_replace($words,'<strong><font color="#ff0000">'.$words.'</font></strong>',$string);
}else{
if(strpos($string, $words) !== false){
$string = str_replace($words, '<a href="'.$hrefs.'" _fcksavedurl=""'.$hrefs.'"" style="color:#ff0000;font-weight:bold;">'.$words.'</a>', $string);
}
}
return $pretext.$string;
}
}
修改后:
Quote:
$highlight_array=array();
$replace_times=2; //替换次数
function highlight($string, $words, $hrefs='',$pretext='', $step='')
{
global $highlight_array,$replace_times;
//后两个变量为系统继承变量,不可指定
if($step != 'me'){
return preg_replace('/(^|>)([^<]+)(?=<|$)/sUe', "highlight('\\2',\$words, \$hrefs, '\\1', 'me')", $string);
}
if(is_array($words)){
$string = str_replace('\"', '"', $string);
foreach($words as $k => $word){
if(empty($hrefs[$k])){
$string = preg_replace('/(^|>)([^<]+)(?=<|$)/sUe', "highlight('\\2',\$word, '', '\\1', 'me')", $string);
}else{
$string = preg_replace('/(^|>)([^<]+)(?=<|$)/sUe', "highlight('\\2',\$word, \$hrefs[\$k], '\\1', 'me')", $string);
//}
}
}
return $pretext.$string;
}else{
if($hrefs == ''){
$string = str_replace($words,'<strong><font color="#ff0000">'.$words.'</font></strong>',$string);
}else{
$keyword_pos=strpos($string, $words);
if( ($keyword_pos!== false)){
if ((empty($highlight_array[$words]))||(!isset($highlight_array[$words]))) {
$highlight_array[$words]=1;
}
if ($highlight_array[$words]<=$replace_times){
$highlight_array[$words]++;
$string = str_replace($words, '<a href="'.$hrefs.'" style="color:#ff0000;font-weight:bold;">'.$words.'</a>', $string);
}
}
}
return $pretext.$string;
}
}
附加说明,关键字链接替换功能需要设置三个地方:
1、 在后台的“系统管理”的“过滤设置 ”里,设置“关键字替换(是/否)”为“是”;
2 、在后台的“内容维护”的“搜索关键词管理”里,点“文档关键字维护”,然后添加或修改关键字和链接地址的对应关系
3、 添加和修改文章时,在“其它参数”里,填写“关键字”项,多个关键字之间用空格分隔;
这些都设置完毕之后,文章在生成的时候,如果就会把把它正文里的设置的带有链接地址的关键字,自动添加上链接地址。
