织梦cms顶级栏目批量删除

织梦CMS顶级栏目批量删除的方法

织梦CMS后台默认不支持批量删除栏目。当需要清理大量不再使用的顶级栏目时,可以通过数据库操作来实现。

警告:删除栏目前务必完整备份数据库和网站文件!栏目删除会级联删除其下所有子栏目和文章内容,操作不可逆。

一、通过SQL批量删除顶级栏目

-- 先查看要删除的栏目
SELECT id,typename FROM dede_arctype WHERE reid=0;

-- 删除ID为10,11,12的顶级栏目(需同时删除子栏目)
DELETE FROM dede_arctype WHERE id IN (10,11,12) OR reid IN (10,11,12);

-- 删除这些栏目下的所有文章
DELETE FROM dede_archives WHERE typeid IN (
SELECT id FROM dede_arctype WHERE id IN (10,11,12) OR reid IN (10,11,12)
);

二、通过后台逐个删除(推荐)

  1. 先删除顶级栏目下的所有子栏目(从底层往上删)。
  2. 删除顶级栏目下的所有文章。
  3. 最后删除顶级栏目本身。

三、使用PHP脚本批量删除

require_once('include/common.inc.php');
$ids=array(10,11,12); // 要删除的栏目ID
foreach($ids as $id){
$dsql->ExecuteNoneQuery("DELETE FROM dede_arctype WHERE id=$id OR reid=$id");
$dsql->ExecuteNoneQuery("DELETE FROM dede_archives WHERE typeid IN (SELECT id FROM dede_arctype WHERE id=$id OR reid=$id)");
}

四、删除后的清理

建议:如果只是想临时不显示某些栏目,可以将其"是否显示在导航"设为"否",而非删除。这样可以保留数据,需要时可以恢复。