首页建站经验 DEDE文章中的keywords与tags

DEDE文章中的keywords与tags

DEDE的“关键词”是个多处使用、容易混淆的概念,起码我知道的常用在这几处:1、文章中作为SEO关联词来替换链接的,叫关键词,代码是keyword。需要在后台手工添加关键词和相应链接,…

DEDE的“关键词”是个多处使用、容易混淆的概念,起码我知道的常用在这几处:

1、文章中作为SEO关联词来替换链接的,叫关键词,代码是keyword。需要在后台手工添加关键词和相应链接,生成文章时把这些词自动替换为锚文本,可指定替换次数。

2、文章中关联其它文章的词,也叫关键词,代码有两个,是keywords和tags。

3、用来搜索的词,叫关键词,代码还没去查。

我主要讲讲与文章有关的关键词,keywords和tags。

在DEDE的发布文章中,填写的是tags,然后写入tag相关的两个表,一个是tag表名,一个是文章列表。但tags与文章主表不相关,所以平时调用文章内容时,都是无法调用tags的。

调用文章时调的是keywords,这个是文章主表dede_archives中有字段。但keywords又不是独立存在的,是依附于tags。如果发文章时填写了tags,则keywords自动变成一样,相当于把tags复制一份。在调用文章、处理自由列表时,都是用的keywords而不是tags,就是因为keywords可以直接从主表中读取。

那么问题来了:如果是采集的文章,keywords有可能是一些乱七八糟的词,不管是在后台一篇篇文章打开,还是把数据表下载回来一个个整理,都是非常麻烦的事,相对来说整理dede_tagindex和dede_taglist这两个容易得多,删除乱词就行了。

但这样一来,keywords与tags就不一致了。tags是正确的,而keywords却很乱。但文章生成时,显示的还是keywords,前台看到的tag这个标签还是乱的,自由列表、相关文章调用时就不是预期的结果。

研究了各个相关代码后发现,DEDE把tags复制一份再写入keywords其实是一个多余的做法,只要稍微修改一下调用代码,这个keywords就可以废弃不用。

比如生成文章的arc.archives.class.php本身有一个调用tags的函数$this->Fields['tags'] = GetTags($aid);根本不需要keywords这一步就把tags调出来了,而且模板代码都解析好了。文章模板默认是调用的keywords字段,换成tags字段一样可显示。

改成如下就可以了

至于相关文章、自由列表什么的,同样只需要添加GetTags($aid)这个函数就可以读出来,完全没keywords什么事,主表中的keywords这个字段可以删除或清空了。

在采集的时候,默认是写入keywords字段而不理会tags的,很多人采集回来的文章只在文章页面显示所谓的tag,但真正的tag列表页tags.php中却看不到,再次说明keywords的用处真的很小。

也就是说,keywords能发挥作用的地方,用tags替代的效果是一样一样的。而tags发挥作用的地方,keywords无能为力。那keywords其实就是一个多余的东西嘛!

采集时只写入keywords不写入tags怎么办呢?当然有办法。因为DEDE默认就有写入tags的函数InsertTags($tag, $aid),只需要在采集文件中添加两行代码就可以了。思路就是:

1、让tags=keywords

2、添加函数InsertTags($tag, $aid)

这样凡是有keywords的,tags也一样有了。总之就是keywords就是多余了。

如果追求完美主义,非要保留keywords字段且非要跟tags内容相同,也容易:在生成文章的文件arc.archives.class.php中添加一个写入代码,让读取出来的tags写进keywords里就可以了。写法是这样的:找到以下代码

$this->dsql->ExecuteNoneQuery("Update `dede_archives` SET ismake=1 WHERE id='".$this->ArcID."'");

这个代码是在生成文章以后,把文章状态修改为“已生成”,那就可以同时把keywords也变一变,改成这样:

$this->dsql->ExecuteNoneQuery("Update `dede_archives` SET ismake=1,keywords='{$this->Fields[tags]}' WHERE id='".$this->ArcID."'");

以上修改我已经实施了,原因就是采集时不小心采了很多乱乱的keywords回来,留着恶心,清空了,连带tags的相应内容也删除了。然后利用“批量添加tags”的功能添加了很多,由于是在列表页添加的,keywords还是为空,非要打开文章编辑页才会把keywords变得跟tags一致。由于文章有几千篇,这显示是不可能的事,所以就添加这个写入代码,然后在把这几千篇文章重新生成一遍,keywords就跟tags一样了。

如果文章都生成静态的话,其实真的可以把keywords这个字段删除,只使用tags就可以了。

本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/jianzhan/jingyan/16068.html
上一篇php比较两个文件夹的差异
下一篇 Discuz! X3.1排行榜设置
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部