学习如何将DedeCMS文章模型中的内容迁移到新的自定义模型中是一项重要的技能,特别是在需要对网站结构进行调整时。以下是一个详细的步骤指南,帮助您完成这一任务。

假设原始栏目为文章模型,其栏目ID为5,新创建的模型ID为17(默认的文章模型ID为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;
    

第二步:处理自定义字段

如果您在自定义模型中更改了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文章模型中的内容迁移到新的自定义模型中。