GVKun编程网logo

解析dedecms使用Keywords关联新闻无效的解决办法

16

想了解解析dedecms使用Keywords关联新闻无效的解决办法的新动态吗?本文将为您提供详细的信息,此外,我们还将为您介绍关于dedecmstagskeywords问题修正方法、DedeCMSV5

想了解解析dedecms使用Keywords关联新闻无效的解决办法的新动态吗?本文将为您提供详细的信息,此外,我们还将为您介绍关于dedecms tags keywords问题修正方法、DedeCMS V5.7 sp1 修改文档Keywords频率办法、dedecms v5.7水印功能无效的解决办法、DedeCms 设置附件上传目录无效的解决办法的新知识。

本文目录一览:

解析dedecms使用Keywords关联新闻无效的解决办法

解析dedecms使用Keywords关联新闻无效的解决办法

 

前段时间因为一直没用这个使用关键词关联文章的功能,所以一直没在意,但*近发现内连建设好了,对于文章的排名起很大的作用,于是就开始整理内链,但是在操作过程中遇到了很多问题,dede无法自动替换关键词,无法使用关键词关联文章等等,于是就开始在网上找,找了很多方法,不能说没有用,但是每个都有缺点,于是自己就开始研究了,经过半天的努力,终于让我搞明白了,今天就给大家分享出来。

按dede默认的如何才能正确替换关键词? 1.需要你在后台设置关键词链接地址,2。需要你在系统的基本参数设置里找到 核心设置---关键字替换(是/否)使用本功能会影响HTML生成速度:选是,3.需要你在系统基本参数里 找到性能选项----使用关键词关连文章: 是。 4.然后再发布内容的时候 需要你在内容的tags里填上 你想替换的关键词(V5.7以下版本) V5.7以上版本的需要你在文章的关键词里填入你想替换的关键词或者关键词不能为空。只有满足这些时,dede才会替换你想要替换的关键词。比如我在我的网站发布一篇文章,我想把里面的 名词,代词等几个关键词连接到我想要的页面,但是我发布的时候很懒,也不想填tags和关键词,这样发布的时候就无法替换关键词链接了,通过以下方法就可以不用填tags和关键词就能替换。

很多朋友在发布文章时,一半不填写关键词,或者Tags,那么久这个功能就无效了。那么如何解决呢? 让我们先看下 解决钱的dede默认的代码,和解决后的代码,分析以下 就明白了。。

代码有2个部分,一是在arc.archives.class。php 里第204行左右。一个是在*后面的function ReplaceKeyword($kw,&$body)函数,让我们看看解决前和解决后的代码的不同吧。

解决前:204行代码:

Copy to ClipboardLiehuo.Net Codes引用的内容:[] if($arr['type']=='htmltext' && $GLOBALS['cfg_keyword_replace']=='Y' && !empty($this->Fields['keywords'])) { $this->Fields[$nk] = $this->ReplaceKeyword($this->Fields['keywords'],$this->Fields[$nk]); }  

解决前 ReplaceKeyword函数的代码:

Copy to ClipboardLiehuo.Net Codes引用的内容:[] function ReplaceKeyword($kw,&$body) { global $cfg_cmspath; $maxkey = 5; $kws = explode(",",trim($kw)); //以分好为间隔符 $i=0; $karr = $kaarr = $GLOBALS['replaced'] = array(); //暂时屏蔽超链接 $body = preg_replace("/(<a(.*))(>)(.*)(<)(\/a>)/isU", '\\1-]-\\4-[-\\6', $body); foreach($kws as $k) { $k = trim($k); if($k!="") { if($i > $maxkey) { break; } $myrow = $this->dsql->GetOne("select * from [url=mailto:dede_keywords]dede_keywords[/url] 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++; } } $body = preg_replace("/(^|>)([^<]+)(?=<|$)/sUe", "_highlight('\\2', \$karr, \$kaarr, '\\1')", $body); //恢复超链接 $body = preg_replace("/(<a(.*))-\]-(.*)-\[-(\/a>)/isU", '\\1>\\3<[url=file://\\4]\\4'[/url], $body); return $body; }  

解决后 204行代码:

Copy to ClipboardLiehuo.Net Codes引用的内容:[] if($arr['type']=='htmltext' && $GLOBALS['cfg_keyword_replace']=='Y') { $this->Fields[$nk] = $this->ReplaceKeyword($this->Fields['keywords'],$this->Fields[$nk]); }  

解决后 ReplaceKeyword函数的代码

Copy to ClipboardLiehuo.Net Codes引用的内容:[] function ReplaceKeyword($kw,&$body) { global $cfg_cmspath; $maxkey = 5; $kws = explode(",",trim($kw)); //以分好为间隔符 $i=0; $karr = $kaarr = $GLOBALS['replaced'] = array(); //暂时屏蔽超链接 $body = preg_replace("/(<a(.*))(>)(.*)(<)(\/a>)/isU", '\\1-]-\\4-[-\\6', $body); global $dsql; $query="SELECT * FROM [url=mailto:dede_keywords]dede_keywords[/url] 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>"; } $body = preg_replace("/(^|>)([^<]+)(?=<|$)/sUe", "_highlight('\\2', \$karr, \$kaarr, '\\1')", $body); //恢复超链接 $body = preg_replace("/(<a(.*))-\]-(.*)-\[-(\/a>)/isU", '\\1>\\3<[url=file://\\4]\\4'[/url], $body); return $body; }  

#p#分页标题#e#

先分析204行的代码,细心的朋友可能已经发现,解决后的代码比解决前少了&& !empty($this->Fields['keywords'] 对就是这个原因,dede获取关键词的时候要判断你这篇文章是否填了关键词,这个我们一半不填,所以把他去掉就行了,还有的朋友说应该把cfg_keyword_replace 换成 cfg_keyword_like  他认为是dede的人写错了,其实是自己没有看清罢了,其实不用换这个的,因为他们代表的就不是一个意思。
cfg_keyword_replace是指关键字替换(是/否)使用本功能会影响HTML生成速度: 这项 而cfg_keyword_like 是指使用关键词关连文章:

然后我们在分析ReplaceKeyword  原本的dede是从你所填的tag里 遍历tags,然后与你设置的文档关键词相比较,如果找到了,就将这个关键词替换成带链接的关键词,如果tags为空,就无法执行了。这就是为什么大家使用文档关键词关联文章失败的原因,而解决方法中,直接不让他遍历tags,直接去替换,这样就解决了。

但是出现了几个问题。1,这样解决在生成文章的时候速度会降低,2,无法控制总的关键词链接数量。希望有高手能够解决下。

本文章网址:http://www.ppssdd.com/code/7522.html。转载请保留出处,谢谢合作!

dedecms tags keywords问题修正方法

dedecms tags keywords问题修正方法

下面是修改方法:
原来只是只要我们在添加,修改信息时,增加个keywords为空判断,如果keywords为空,则将tags的字段赋值给keywords具体代码,一般在是入库的sql语句中,增加一段这样的代码
复制代码 代码如下:

if ($keywords==""){
$keywords=$tag;
}
您可能感兴趣的文章:
  • DeDecms中利用关键词实现简单tag功能的php代码
  • DEDECMS TAG伪静态 IIS_rewrite配置方法附rewrite下载
  • Javascript让DEDECMS告别手写Tag

DedeCMS V5.7 sp1 修改文档Keywords频率办法

DedeCMS V5.7 sp1 修改文档Keywords频率办法

 

DedeCMS V5.7 sp1 修改文档Keywords频率办法,请按照以下步骤操作:

打开dede/article_keywords_main.php,找到如下代码:

//更新链接URL 
if($rpurl!=$rpurlold) 

$query1 = “UPDATE `dede_keywords` SET rpurl=’$rpurl’ WHERE aid=’$aid’ “; 
$dsql->ExecuteNoneQuery($query1); 
}

DedeCMSV5.7 sp1文档Keywords频率修改办法 
修改为:

//更新链接URL、频率 
$rank = ${‘rank_’.$aid}; 
if($rpurl!=$rpurlold) 

$query1 = “UPDATE `dede_keywords` SET rpurl=’$rpurl’,rank=’$rank’ WHERE aid=’$aid’ “; 
$dsql->ExecuteNoneQuery($query1); 

else 

$query1 = “UPDATE `dede_keywords` SET rank=’$rank’ WHERE aid=’$aid’ “; 
$dsql->ExecuteNoneQuery($query1); 
}

保存后就可以在后台修改频率了

本文章网址:http://www.ppssdd.com/code/13688.html。转载请保留出处,谢谢合作!

dedecms v5.7水印功能无效的解决办法

dedecms v5.7水印功能无效的解决办法

 

今天测试dedecms的水印功能,发现在实际的生产环境中没有效果啦,之前在使用dedecms v5.6的时候,没有该情况,按以下顺序检查相关功能是否已经打开。 登陆网站管理后台,点击系统--系统设置--...

今天测试dedecms的水印功能,发现在实际的生产环境中没有效果啦,之前在使用dedecms v5.6的时候,没有该情况,按以下顺序检查相关功能是否已经打开。

 

登陆网站管理后台,点击系统-->系统设置-->系统基本参数-->附件设置,

 

找到图集是否使用水印(小图也会受影响)这项,我们选择“是”,



点击系统-->系统设置-->图片水印设置,

 

看一下DedeCMS系统配置参数 - 图片水印设置中的相应功能是否已经打开,

 

 

上传的图片是否使用图片水印功能:开启

 

采集的图片是否使用图片水印功能:开启



检查选择水印的文件类型是否正确及水印文件是否存在。

 

以上设置好之后,我们需要打开dede\swfupload.php文件,找到

 

//WaterImg($cfg_basedir.$fileurl, 'up');

 

把前面的//去掉保存,覆盖原文件,

 

    $fileurl = $filedir.'/'.$filename.$sname;

    $rs = copy($FiledataNew, $cfg_basedir.$fileurl);

    unlink($FiledataNew);

    if(!$rs)

    {

        echo "ERROR: Copy Uploadfile Error! ";

        exit(0);

    }

    WaterImg($cfg_basedir.$fileurl, 'up');

    $title = $filename.$sname;

 

    $inquery = "INSERT INTO `dede_uploads`(title,url,mediatype,width,height,playtime,filesize,uptime,mid)

        VALUES ('$title','$fileurl','$ftype','0','0','0','".filesize($cfg_basedir.$fileurl)."','".time()."','".$cuserLogin->getUserID()."'); ";

 if(!empty($arcid))

 {

  $inquery = "INSERT INTO `dede_uploads`(arcid,title,url,mediatype,width,height,playtime,filesize,uptime,mid)

        VALUES ('$arcid','$title','$fileurl','$ftype','0','0','0','".filesize($cfg_basedir.$fileurl)."','".time()."','".$cuserLogin->getUserID()."'); ";

 }

 

测试上传图片水印功能成功!

 

本文章网址:http://www.ppssdd.com/code/21228.html。转载请保留出处,谢谢合作!

DedeCms 设置附件上传目录无效的解决办法

DedeCms 设置附件上传目录无效的解决办法

 Dedecms已经升级到5.7版本了..
可惜附件的目录还是不统一,比如我们从后台把附件目录调整为Ym(默认为Ymd)
然而我们的附件路径依然是不一样的
比如:
Ymd代表年月日
从文章里上传
路径为:/Ym/1.jpg
从附件里上传呢
路径为:/Ymd/1.jpg(还是系统默认的)
采集来的呢?
路径为:/cYmd/1.jpg(也是系统默认)
首先,咱们来修复附件上传
要修改的文件为/dede/media_add.PHP
找到$dpath = MyDate("ymd",$uptime);
修改为$dpath = MyDate($cfg_addon_savetype,$uptime);
保存,上传,从附件上传路径不对的问题就解决了.

下面是采集部分(如果不用采集的话就不必看下去了~~)
修改的文件为/include/dedecollection.class.PHP 
找到global $cfg_image_dir,$cfg_dir_purview;
修改为global $cfg_image_dir,$cfg_dir_purview,$cfg_addon_savetype; //增加全局变量cfg_addon_savetype的读取
然后找:
$timedir = "c".MyDate("ymd",time());
修改为$timedir = "c".MyDate($cfg_addon_savetype,time());
如果想去掉前面的c的话修改为$timedir = MyDate($cfg_addon_savetype,time());

还有一个地方.就是自动获取和下载文章内的图片和资源.
这里也要改一下:
修改的文件为/dede/inc/inc_archives_functions.PHP
找到global $cfg_multi_site,$cfg_basehost,$cfg_basedir,$cfg_image_dir;
修改为global $cfg_multi_site,$cfg_image_dir,$cfg_addon_savetype;
找到$imgurl = $cfg_uploaddir.'/'.MyDate("ymd",time());
修改为$imgurl = $cfg_uploaddir.'/'.MyDate($cfg_addon_savetype,time());

OK,finish,试试 吧~

关于解析dedecms使用Keywords关联新闻无效的解决办法的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于dedecms tags keywords问题修正方法、DedeCMS V5.7 sp1 修改文档Keywords频率办法、dedecms v5.7水印功能无效的解决办法、DedeCms 设置附件上传目录无效的解决办法的相关信息,请在本站寻找。

本文标签:

上一篇DedeCms中data目录下的sessions是什么文件?(data session)

下一篇DEDECMS使用Keywords关连新闻修改的问题正确解析