博客的碎语墙栏目以前是在文章模型下,后来发现发心情只需要配图和文字即可,文章模型涉及的东西太多,用文章模型来发心情有些大才小用,而且不便于后期调用,就重新做了一个自定义模型来专门发心情。出现的一个问题就是,如何把已经发布的文章来迁移到这个新模型的数据表中呢?
今天余斗就教大家如何实现DedeCMS栏目文章转入新的自定义模型:
假设以前的栏目为文章模型,栏目ID为5, 新建模型ID为17(默认的文章模型为1,模型ID可以在内容模型管理最左侧看到),数据库中新模型附加表为dede_addon17(一般均为dede_addon加新建模型的ID,如果不同,则自行替换一下SQL语句中的表名)。
一、首先,我们先在后台备份好数据库(系统--数据库备份/还原),备份好数据库后,我们先将原文章模型下的栏目ID为5的内容全部转移到新的自定义模型附加表dede_addon17中,在系统——SQL命令行工具中输入以下SQL语句:
INSERT INTO dede_addon17(aid,typeid,redirecturl,userip,body) SELECT aid,typeid,redirecturl,userip,body FROM dede_addonarticle where dede_addonarticle.typeid =5;
这里需要注意的是,一定会一点SQL语句基础,如果你的自定义模型的body部分被你换成自定义的名字比如content,那么SQL语句就该改为:
INSERT INTO dede_addon17(aid,typeid,redirecturl,userip,content) SELECT aid,typeid,redirecturl,userip,body FROM dede_addonarticle where dede_addonarticle.typeid =5;
对比一下即知道,怎么把老数据对应到新的数据表中来。
二、删除原栏目下的全部内容(已经成功复制一份到新模型下了):
DELETE FROM `dede_addonarticle` WHERE typeid =5;
三、将关联模型的地方全部改写一遍,将原来栏目ID为5对应的频道模型全部由1改成17:
update dede_arctiny set channel=17 where typeid=5; update dede_archives set channel=17 where typeid=5; update dede_arctype set channeltype =17 where id =5;
做到这里就完美实现了将原来文章模型下的内容转移到新的自定义模型下。
四、如果你想把原来栏目ID为6的内容迁移到新的自定义模型ID为17,栏目ID为5的栏目下,则还需要执行以下SQL语句:
update dede_addon17 set typeid=5 where typeid=6; update dede_archives set typeid=5 where typeid=6; update dede_arctiny set typeid=5 where typeid=6;
这里是为了修改关联栏目,将原来调用ID为6的栏目的地方,全部改为ID为5的栏目。
五、删除旧栏目:
DELETE FROM dede_arctype WHERE id=6;
完成以上步骤后,如果网站后台新模型栏目下没有出现迁移来的文章列表,则需要执行到系统——系统错误修复下执行修复工作:
然后再将data/cache/listcache下的缓存文件全部删除(建议在服务器或虚拟空间控制面板、FTP中操作):
本文DedeCMS栏目文章转入新的自定义模型的方法到此结束。繁华过处,总有一些人会成为回忆,也许不该沉迷于过去,花开花落,云卷云舒,淡然才是最美的风景;总有一些情会成为曾经,也许不该执着于忆念,来者珍惜,去者放下,惜缘才是最好的记取。人生无常,自当且行且珍惜。小编再次感谢大家对我们的支持!