站长之家 - 站长资讯 - 易采站长站

当前位置: > 建站教程 > 源码教程 > 博客日志 >

DEDE文章中的keywords与tags

2015-04-18 13:26 | 来源:网络整理 | 编辑:秋军 |

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字段一样可显示。

<meta name="keywords" content="{dede:field.keywords/}" />

改成如下就可以了

<meta name="keywords" content="{dede:field.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就可以了。

  • WordPress 自定义文章列表列的实现方法
  • wordpress静态化首页及去除url中的index.html
  • WORDPRESS文章中微信打赏功能的2种实现方法
  • WordPress实现评论后可显示内容中附件下载地址的方法
  • WordPress之给文章内容中间插入广告的实现方法
  • WordPress使用自定义文章类型实现任意模板的方法
  • WordPress实现回复文章评论后发送邮件通知的功能
  • WordPres限制非管理员访问管理面板的方法
  • WordPress实现搜索结果只有一篇文章时自动跳转到文章的方法
  • 分享一些实用WordPress SQL查询语句
  • 网友评论

    关于我们 - 联系我们 - 广告服务 - 版权声明 - 人才招聘 - 友情链接 - 网站地图 - 帮助 - -

    CopyRight © 2010-2016 源码下载 easck.com , All Rights Reserved

    蒙公网安备 15052402000103号

    蒙ICP备14002389-1号