使用织梦自带的“文档复制”功能(最推荐,最安全)
这是最标准、最安全的方法,它会自动处理所有相关的字段,包括副表(如文章内容、缩略图等),确保复制的文章完整无误。
适用场景:在后台管理界面中,对已有的文章进行复制。
操作步骤:
-
登录织梦后台:使用您的管理员账号登录织梦CMS后台。
-
进入文章管理:在左侧菜单栏中,找到并点击 管理] -> [普通文章]。
-
定位目标文章:在文章列表中,找到您想要复制的文章。
-
点击“复制”:在该文章所在行的 “复制” 按钮上单击。
-
填写复制信息:
- 栏目选择:选择您希望将文章复制到哪个栏目。(非常重要!) 请确保目标栏目与源文章的栏目模型一致(都是“文章模型”),否则可能会出错。
- 标题处理:系统通常会自动在原标题后加上“副本”字样,如“原标题副本”,您也可以手动修改。
- 其他信息:作者、来源、发布时间等信息会默认继承原文章,您也可以根据需要修改。
- 内容处理会完整复制过来,您也可以进行编辑。
-
确定复制:检查无误后,点击页面底部的 “确定” 按钮。
优点:
- 官方功能:稳定可靠,由织梦官方提供。
- 自动处理:会自动处理主表和副表的数据,无需担心遗漏。
- 简单直观:在后台界面操作,无需编写代码。
缺点:
- 一次只能复制一篇文章,如果批量复制会比较繁琐。
通过SQL直接复制数据库记录(适合批量或高级用户)
如果您需要批量复制文章,或者对数据库操作比较熟悉,这是一个非常高效的方法。
⚠️ 重要警告: 在执行任何SQL操作之前,务必备份数据库!以防操作失误导致数据丢失。
操作步骤:
- 登录phpMyAdmin:通过您的服务器控制面板(如cPanel、宝塔面板等)进入phpMyAdmin。
- 选择数据库:在左侧列表中选择您的织梦网站所使用的数据库。
- 执行SQL语句:点击顶部的 “SQL” 标签,进入SQL查询执行页面。
我们将分两步执行,因为织梦的文章内容存储在两个表中:dede_archives (主表) 和 dede_addonarticle (副表,针对文章模型)。
第一步:复制主表记录 (dede_archives)
假设您要复制的文章ID是 123。
-- 1. 首先获取当前最大的ID,用于生成新的ID
SET @new_id = (SELECT MAX(id) FROM dede_archives) + 1;
-- 2. 复制主表记录,并生成新的ID和标题
INSERT INTO dede_archives (id, typeid, arctypeid, channel, senddate, sortrank, mid, click, ismake, channeltype, rank, ishtml, filename, title, shorttitle, color, writer, source, litpic, pubdate, sendrank, iscommend, notpost, description, keyword, templet, userip, likeid, pagestyle, maxpage, pageword, mtype, money, arcpubdate, payrank, uptime, adminid, memberid, tname, mrank, ishtml, ismobile, channeltype, click, lastpost)
SELECT
@new_id,
typeid,
arctypeid,
channel,
UNIX_TIMESTAMP(), -- 发布时间设为当前时间
sortrank,
mid,
0, -- 点击数重置为0
ismake,
channeltype,
rank,
ishtml,
CONCAT('copy_', filename), -- 文件名前加copy_避免冲突
CONCAT(title, '_副本'), -- 标题加后缀
shorttitle,
color,
writer,
source,
litpic,
UNIX_TIMESTAMP(), -- 发布时间设为当前时间
sendrank,
iscommend,
notpost,
description,
keyword,
templet,
userip,
likeid,
pagestyle,
maxpage,
pageword,
mtype,
money,
UNIX_TIMESTAMP(), -- 发布时间设为当前时间
payrank,
UNIX_TIMESTAMP(), -- 更新时间设为当前时间
adminid,
memberid,
tname,
mrank,
ishtml,
ismobile,
channeltype,
0, -- 点击数重置为0
UNIX_TIMESTAMP() -- 最后评论时间设为当前时间
FROM dede_archives
WHERE id = 123;
第二步:复制副表记录 (dede_addonarticle)
使用上一步生成的新ID @new_id 来复制副表内容。
-- 3. 复制副表记录
INSERT INTO dede_addonarticle (aid, body, templet, userip)
SELECT
@new_id,
body,
templet,
userip
FROM dede_addonarticle
WHERE aid = 123;
如何执行:
- 将上面的SQL代码复制到phpMyAdmin的SQL输入框中。
- 将代码中的
123替换为您想要复制的文章的真实ID。 - 点击 “执行” 按钮。
优点:
- 高效:可以一次性复制大量文章(通过修改
WHERE id IN (123, 124, 125))。 - 灵活:可以在复制时精确地修改任何字段的值(如发布时间、点击数等)。
缺点:
- 风险高:操作不当可能导致数据错乱或丢失。
- 需要技术基础:需要了解SQL语句和数据库结构。
手动导出并导入(适合跨站或复杂场景)
这种方法适用于将文章从一个网站(或一个测试环境)迁移到另一个网站。
操作步骤:
-
导出数据:
- 在phpMyAdmin中,选择
dede_archives和dede_addonarticle这两个表。 - 点击 “导出” 选项卡。
- 选择 “快速” 导出方式,格式选择 “SQL”。
- 点击 “执行”,将生成的SQL文件下载到本地。
- 在phpMyAdmin中,选择
-
修改SQL文件:
- 用文本编辑器(如VS Code、Notepad++)打开下载的SQL文件。
- 找到
INSERT INTO dede_archives (...) VALUES (...)这部分。 - 修改ID:将
id = 123改为一个新的、未被占用的ID,id = 1000。 - :将
title = '原标题'改为title = '新标题'。 - 修改栏目ID:将
typeid = 5改为目标网站的栏目ID。 - 对
dede_addonarticle表中的记录也做相应修改,确保它的aid字段与dede_archives中新设置的ID一致。
-
导入数据:
- 在目标网站的phpMyAdmin中,选择对应的数据库。
- 点击 “导入” 选项卡。
- 选择您刚刚修改好的SQL文件,然后点击 “执行”。
优点:
- 跨平台:可以在不同网站间迁移内容。
- 可控性高:可以在导入前对数据进行全面的检查和修改。
缺点:
- 过程繁琐:需要手动修改文件,容易出错。
- 不适合站内快速复制。
总结与建议
| 方法 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| 后台复制 | 安全、简单、官方 | 一次只能复制一篇 | 日常使用,复制少量文章 |
| SQL复制 | 高效、灵活、可批量 | 风险高,需要技术 | 批量复制,或有特殊修改需求时 |
| 导出导入 | 可跨站,可控性强 | 繁琐,易出错 | 网站迁移,或复杂的数据处理 |
对于绝大多数用户,强烈推荐使用【方法一:后台复制】,因为它最安全、最直接,只有在需要处理大量数据或进行特殊定制时,才考虑使用【方法二:SQL复制】,并且操作前一定要备份数据库!
