DEDECMS 内容中的关键字自动加上链接
比如我在文档关键词维护里添加一个关键词给了链接地址然后我想添加文档之后在浏览的时候内容出现这个关键词并有我给的链接地址请详解或者给个方法我实现之后加分...
比如 我在文档关键词维护里添加一个关键词 给了链接地址 然后我想 添加文档之后在浏览的时候 内容出现这个关键词 并有我给的链接地址 请详解 或者给个方法 我实现之后 加分
展开
展开全部
1、后台-采集-文档关键词维护 添加关键词及链接
2、后台-系统-核心设置 关键字替换(是/否)使用本功能会影响HTML生成速度: 是
3、后台-系统-其他选项 文档内容同一关键词替换次数(0为全部替换): 设置一个数值 (这里顺便提一下,比如一篇文章含有互相包含关键词,比如dede和dedecms,系统会把后面的dedecms会被dede替代,我的做法是,关键词替换次数设置为1次,然后文档关键词维护那里把dede和dedecms的频率设置成一样,就搞定了。)
修改文件:/include/arc.archives.class.php
查找以下代码:
引用
foreach($kws as $k)
{
$k = trim($k);
if($k!="")
{
if($i > $maxkey)
{
break;
}
$myrow = $this->dsql->GetOne("select * from #@__keywords where keyword='$k' And rpurl<>'' ");
if(is_array($myrow))
{
$karr[] = $k;
$GLOBALS['replaced'][$k] = 0;
$kaarr[] = "<a href='{$myrow['rpurl']}'><u>$k</u></a>";
}
$i++;
}
}
将以上代码替换为以下代码:
引用
global $dsql;
$query="SELECT * FROM dede_keywords WHERE rpurl<>'' ORDER BY rank DESC";
$dsql->SetQuery($query);
$dsql->Execute();
while($row = $dsql->GetArray())
{
$key = trim($row['keyword']);
$key_url=trim($row['rpurl']);
$karr[] = $key;
$kaarr[] = "<a href='$key_url' target='_blank'><u>$key</u></a>";
}
2、后台-系统-核心设置 关键字替换(是/否)使用本功能会影响HTML生成速度: 是
3、后台-系统-其他选项 文档内容同一关键词替换次数(0为全部替换): 设置一个数值 (这里顺便提一下,比如一篇文章含有互相包含关键词,比如dede和dedecms,系统会把后面的dedecms会被dede替代,我的做法是,关键词替换次数设置为1次,然后文档关键词维护那里把dede和dedecms的频率设置成一样,就搞定了。)
修改文件:/include/arc.archives.class.php
查找以下代码:
引用
foreach($kws as $k)
{
$k = trim($k);
if($k!="")
{
if($i > $maxkey)
{
break;
}
$myrow = $this->dsql->GetOne("select * from #@__keywords where keyword='$k' And rpurl<>'' ");
if(is_array($myrow))
{
$karr[] = $k;
$GLOBALS['replaced'][$k] = 0;
$kaarr[] = "<a href='{$myrow['rpurl']}'><u>$k</u></a>";
}
$i++;
}
}
将以上代码替换为以下代码:
引用
global $dsql;
$query="SELECT * FROM dede_keywords WHERE rpurl<>'' ORDER BY rank DESC";
$dsql->SetQuery($query);
$dsql->Execute();
while($row = $dsql->GetArray())
{
$key = trim($row['keyword']);
$key_url=trim($row['rpurl']);
$karr[] = $key;
$kaarr[] = "<a href='$key_url' target='_blank'><u>$key</u></a>";
}
展开全部
1 进入后台,系统,系统基本参数,核心设置,关键字替换(是/否),这里选择“是”。
2 修改文件 /include/arc.archives.class.php ,找到这一段:
以下为引用的内容:
foreach($kws as $k)
{
$k = trim($k);
if($k!=”")
{
if($i > $maxkey)
{
break;
}
$myrow = $this->dsql->GetOne(“select * from cz_keywords where keyword=’$k’ And rpurl<>” “);
if(is_array($myrow))
{
$karr[] = $k;
$GLOBALS['replaced'][$k] = 0;
$kaarr[] = “<a href=’{$myrow['rpurl']}’><u>$k</u></a>”;
}
$i++;
}
}
把它替换成:
以下为引用的内容:
global $dsql;
$query=”SELECT * FROM cz_keywords WHERE rpurl<>” ORDER BY rank DESC”;
$dsql->SetQuery($query);
$dsql->Execute();
while($row = $dsql->GetArray())
{
$key = trim($row['keyword']);
$key_url=trim($row['rpurl']);
$karr[] = $key;
$kaarr[] = “<a href=’$key_url’ target=’_blank’><u>$key</u></a>”;
}
2 修改文件 /include/arc.archives.class.php ,找到这一段:
以下为引用的内容:
foreach($kws as $k)
{
$k = trim($k);
if($k!=”")
{
if($i > $maxkey)
{
break;
}
$myrow = $this->dsql->GetOne(“select * from cz_keywords where keyword=’$k’ And rpurl<>” “);
if(is_array($myrow))
{
$karr[] = $k;
$GLOBALS['replaced'][$k] = 0;
$kaarr[] = “<a href=’{$myrow['rpurl']}’><u>$k</u></a>”;
}
$i++;
}
}
把它替换成:
以下为引用的内容:
global $dsql;
$query=”SELECT * FROM cz_keywords WHERE rpurl<>” ORDER BY rank DESC”;
$dsql->SetQuery($query);
$dsql->Execute();
while($row = $dsql->GetArray())
{
$key = trim($row['keyword']);
$key_url=trim($row['rpurl']);
$karr[] = $key;
$kaarr[] = “<a href=’$key_url’ target=’_blank’><u>$key</u></a>”;
}
追问
你认为有用? 我改了没用 再说了 你这都是复制的
追答
好吧 我看下我本机的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一楼的方法可以 我也用过这个方法 但是提醒下楼主 这样生成速度会减慢很多很多
关键词多了的话生成速度会变成蜗牛速度 如果是动态或者伪静态 读取速度会慢很多
我以前就碰到这样的问题 目前还没解决 如果不嫌弃的话就用1楼这个方法把
关键词多了的话生成速度会变成蜗牛速度 如果是动态或者伪静态 读取速度会慢很多
我以前就碰到这样的问题 目前还没解决 如果不嫌弃的话就用1楼这个方法把
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
dedecms版本5.6,比如你有三个关键字:我,我们,我们的。可以实现优先匹配长的关键字,同时支持关键字替换。
修改文件 /include/arc.archives.class.php
添加:
function cmp($a, $b)
{
$a=strlen($a);
$b=strlen($b);
if ($a== $b) {
return 0;
}
return ($a > $b) ? -1 : 1;
}
然后修改方法ReplaceKeyword为:function ReplaceKeyword($kw,&$body)
{
global $cfg_cmspath;global $dsql;
$maxkey = 5;
$kws = explode(",",trim($kw)); //以分好为间隔符
$kws2=array(); //duqiang
$i=0;
$karr = $kaarr = $GLOBALS['replaced'] = array();
$body = preg_replace("/(<a(.*))(>)(.*)(<)(\/a>)/isU", '\\1-]-\\4-[-\\6', $body);
$query="SELECT * FROM #@__keywords WHERE rpurl<>'' ORDER BY rank DESC";
$dsql->SetQuery($query);
$dsql->Execute();
while(uksort($row = $dsql->GetArray(),"cmp"))
{
$key = trim($row['keyword']);
$key_url=trim($row['rpurl']);
$karr[] = $key;
$kaarr[] = "<a href='$key_url' title='$key' target='_blank'>$key</a>";
$body = preg_replace("/(^|>)([^<]+)(?=<|$)/sUe", "_highlight('\\2', \$karr, \$kaarr, '\\1')", $body);
$body = preg_replace("/(<a(.*))-\]-(.*)-\[-(\/a>)/isU", '\\1>\\3<\\4', $body);
$body = preg_replace("/(<a(.*))(>)(.*)(<)(\/a>)/isU", '\\1-]-\\4-[-\\6', $body);
}
$body = preg_replace("/(^|>)([^<]+)(?=<|$)/sUe", "_highlight('\\2', \$karr, \$kaarr, '\\1')", $body);
//恢复超链接
$body = preg_replace("/(<a(.*))-\]-(.*)-\[-(\/a>)/isU", '\\1>\\3<\\4', $body);
return $body;
}
修改文件 /include/arc.archives.class.php
添加:
function cmp($a, $b)
{
$a=strlen($a);
$b=strlen($b);
if ($a== $b) {
return 0;
}
return ($a > $b) ? -1 : 1;
}
然后修改方法ReplaceKeyword为:function ReplaceKeyword($kw,&$body)
{
global $cfg_cmspath;global $dsql;
$maxkey = 5;
$kws = explode(",",trim($kw)); //以分好为间隔符
$kws2=array(); //duqiang
$i=0;
$karr = $kaarr = $GLOBALS['replaced'] = array();
$body = preg_replace("/(<a(.*))(>)(.*)(<)(\/a>)/isU", '\\1-]-\\4-[-\\6', $body);
$query="SELECT * FROM #@__keywords WHERE rpurl<>'' ORDER BY rank DESC";
$dsql->SetQuery($query);
$dsql->Execute();
while(uksort($row = $dsql->GetArray(),"cmp"))
{
$key = trim($row['keyword']);
$key_url=trim($row['rpurl']);
$karr[] = $key;
$kaarr[] = "<a href='$key_url' title='$key' target='_blank'>$key</a>";
$body = preg_replace("/(^|>)([^<]+)(?=<|$)/sUe", "_highlight('\\2', \$karr, \$kaarr, '\\1')", $body);
$body = preg_replace("/(<a(.*))-\]-(.*)-\[-(\/a>)/isU", '\\1>\\3<\\4', $body);
$body = preg_replace("/(<a(.*))(>)(.*)(<)(\/a>)/isU", '\\1-]-\\4-[-\\6', $body);
}
$body = preg_replace("/(^|>)([^<]+)(?=<|$)/sUe", "_highlight('\\2', \$karr, \$kaarr, '\\1')", $body);
//恢复超链接
$body = preg_replace("/(<a(.*))-\]-(.*)-\[-(\/a>)/isU", '\\1>\\3<\\4', $body);
return $body;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先在系统的性能选项中的“使用关键词关连文章”选择是。然后进入采集》文档关键词维护。后面你应该懂了,再就是别忘了重新生成和更新
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询