织梦栏目如何批量移动

业务场景

站点改版、栏目合并、内容重组时,需要把一个栏目下的全部文章批量移动到另一个栏目。例如把「公司新闻」和「行业资讯」合并为「新闻动态」,就需要把原有两个栏目的所有文章移动到新栏目下。手动一篇篇改栏目效率太低,必须用批量操作。

原因分析

1. 栏目结构调整

改版后栏目层级或名称变化,原文章需要归属到新栏目。

2. 内容整合

多个相似栏目合并,减少栏目碎片化。

3. 误归类修正

历史文章分类错误,需要批量迁移到正确栏目。

移动方法

方法一:后台批量操作

  1. 进入「核心 → 内容管理 → 文档列表」。
  2. 顶部筛选栏选择源栏目,列出该栏目下所有文章。
  3. 勾选需要移动的文章(可全选当前页)。
  4. 底部「属性批量设置」中选择「移动到栏目」。
  5. 选择目标栏目,点击「确定」。

方法二:SQL 批量移动

适合大批量文章,速度最快:

-- 把 typeid=5 的所有文章移动到 typeid=8
UPDATE dede_archives SET typeid=8 WHERE typeid=5;

-- 同步更新附加表(如多模型)
UPDATE dede_addonarticle SET typeid=8 WHERE typeid=5;

-- 更新文档摘要表
UPDATE dede_arctiny SET typeid=8 WHERE typeid=5;

方法三:栏目合并功能

进入「核心 → 栏目管理 → 合并栏目」,选择源栏目和目标栏目,系统会自动把源栏目文章迁移到目标栏目,并删除源栏目。适合栏目精简场景。

配置示例

移动后需要重新统计栏目文章数:

-- 重新统计各栏目文章数
UPDATE dede_arctype t
SET t.count=(
  SELECT COUNT(*) FROM dede_archives a WHERE a.typeid=t.id AND a.arcrank>-1
);

同时更新栏目 HTML 缓存:

-- 清空栏目缓存
DELETE FROM dede_cache WHERE cachekey LIKE 'arctype_%';

移动后必须做的事

  1. 重新生成移动源栏目与目标栏目的列表页 HTML。
  2. 重新生成被移动文章的详情页 HTML,URL 可能变化。
  3. 更新站点地图 sitemap.xml。
  4. 如果文章 URL 规则包含 typeid,需要做 301 重定向避免死链。
  5. 提交百度站长平台的「死链提交」与「URL 更新」。

注意事项

  • 移动前务必备份数据库,避免误操作导致数据丢失。
  • 移动自定义模型文章时,附加表是 dede_addonXXX(XXX 为模型 ID),不要漏改。
  • 移动后文章的上一页、下一页关系会变化,需要重新生成。
  • URL 规则中包含 {typeid} 的站点,移动后 URL 必然变化,要做好 301。
  • 跨顶级栏目移动可能影响面包屑导航,需检查模板调用。
建议在低峰期操作,避免移动过程中用户访问到不完整数据。

建议与展望

批量移动栏目是站点重构的核心操作,要做好「备份 - 测试 - 执行 - 验证 - 重定向」五步走。建议先在测试环境演练一遍流程,确认 SQL 与生成步骤无误后再在生产环境执行。对于 SEO 敏感的站点,移动后必须做 301 重定向,把旧 URL 的权重传递到新 URL,避免流量损失。今天就先盘点一下需要移动的栏目与文章数量,制定一份操作清单,按步骤有序推进。