Saber 酱的抱枕

Fly me to the moon

11/23
2016
学习

dedecms如何在数据库复制文章

dedecms如何在数据库复制文章

昨天我准备把一个网站做个demo,先在dedecms的后台里添加了一篇文章,之后我想把它复制多次,可是dedecms没有复制文章的功能。于是我从数据库里操作,最后搞明白了。

dedecms关于文章的信息储存在三个表里:

dede_addonarticle:主要存储文章正文;
dede_archives:储存文章诸多次要信息,如标题、简介、flag等。
dede_arctiny:储存的信息较少,添加文章时dedecms会从这个表里判断哪些文章id被用过了。

虽然大佬们可能用sql语句来复制数据,不过作为主键的文章id(aid字段)不能重复,栏目id(typeid)也有好几个,所以我这弱鸡还是用可视化工具操作的。

下面以Navicat for MySQL为例讲解一下具体的操作。

先从简单的开始,打开dede_arctiny表,我们可以看到它前两个字段是id和typeid(其他两个表是aid和typeid,不过当成一样的就行了)。id和typeid我们得按需要改,后面的值都不用改。

dedecms如何在数据库复制文章

如下图,点击第一行最左侧的小方块,这一条记录就被选中了。

dedecms如何在数据库复制文章

按ctrl+c复制,然后粘贴到文本编辑器里编辑。可以看到粘贴出来的是如下文字:

dedecms如何在数据库复制文章

每一行就是一条记录,每个tab是一个值。我们可以把这段文字复制多次,然后修改id(文章id)和typeid(所属栏目)就行了,如下:

dedecms如何在数据库复制文章

编辑完文字版的记录之后我们全选复制,然后回到dede_arctiny表,将光标移至新的一行,如下:

dedecms如何在数据库复制文章

粘贴即可,一下子把插入了多条记录。别忘了粘贴后ctrl+s储存一下~

接下来dede_archives表和dede_addonarticle表也如法炮制,复制记录然后只修改id和typeid字段就行了。当然这三个表的数据要对应,这样才能正常生成页面。

不过有个地方要注意,就是dede_addonarticle表的body字段(文章正文),值通常是多行的(只是Navicat for MySQL默认只显示第一行):

dedecms如何在数据库复制文章

我们复制出来的body是多行的,但是每个换行都会被Navicat for MySQL认为是一条新纪录,这样粘贴进去的时候会报错。

我们可以在编辑器里面先把body随便改成个不换行的文字,然后粘贴到表里。粘贴之后再点击原始纪录(第一条纪录)的“表单查看”(上图红框处),复制body的完整内容,最后依次修改底下的body的值。

dedecms如何在数据库复制文章

dedecms如何在数据库复制文章