批量操作概述
当网站拥有大量栏目时,逐一手动管理效率极低。织梦CMS提供了多种栏目批量操作的方式,包括批量删除、批量更新缓存、批量修改属性、批量生成HTML等,能显著提升管理员的工作效率。
一、后台界面的批量操作
在 核心 > 栏目管理 中,织梦后台提供了以下批量操作功能:
- 批量生成栏目列表:
生成 > 更新栏目HTML,可选择多个栏目同时生成 - 批量删除栏目:部分版本支持多选栏目后批量删除
- 批量更新缓存:
系统 > 更新系统缓存一次性更新所有缓存 - 批量审核内容:在内容管理中选择多篇文章批量操作
二、通过SQL批量修改栏目属性
数据库操作是实现批量修改最直接的方式:
-- 批量修改栏目模板
UPDATE dede_arctype
SET templist='{style}/list_article.htm',
temparticle='{style}/article_article.htm'
WHERE reid=0;
-- 批量设置栏目为隐藏状态
UPDATE dede_arctype SET ishidden=1
WHERE id IN(5,8,12,15,20);
-- 批量修改栏目目录名
UPDATE dede_arctype
SET typedir=REPLACE(typedir, '{cmspath}/old/', '{cmspath}/new/')
WHERE typedir LIKE '{cmspath}/old/%';
-- 批量设置SEO关键词
UPDATE dede_arctype
SET keywords=CONCAT(typename, ',织梦CMS,网站建设')
WHERE reid=0;
三、批量修改栏目名称
-- 在栏目名称前批量添加前缀
UPDATE dede_arctype
SET typename=CONCAT('【推荐】', typename)
WHERE id IN(3,5,8,10);
-- 批量替换栏目名称中的文字
UPDATE dede_arctype
SET typename=REPLACE(typename, '旧名称', '新名称')
WHERE typename LIKE '%旧名称%';
四、批量删除栏目及关联数据
-- 1. 备份数据 CREATE TABLE dede_arctype_backup AS SELECT * FROM dede_arctype; CREATE TABLE dede_archives_backup AS SELECT * FROM dede_archives; -- 2. 删除指定栏目 DELETE FROM dede_arctype WHERE id IN(15,16,17); DELETE FROM dede_arctype WHERE topid IN(15,16,17); -- 删除子栏目 -- 3. 删除栏目下的文章 DELETE FROM dede_archives WHERE typeid IN(15,16,17); -- 4. 清理附加表数据(示意图,需根据模型调整) DELETE FROM dede_addonarticle WHERE aid IN( SELECT id FROM dede_archives WHERE typeid IN(15,16,17) );
危险操作:直接使用DELETE语句删除数据前,务必先用SELECT确认要删除的数据范围,并做好数据库备份。建议先在测试环境验证SQL语句的正确性。
五、批量调整栏目排序
-- 将指定栏目的sortrank设为按ID顺序
UPDATE dede_arctype SET sortrank=id * 10 WHERE reid=0;
-- 批量将子栏目排在父栏目之后
UPDATE dede_arctype a1
SET a1.sortrank=(
SELECT base_rank FROM (
SELECT id * 100 + 1 AS base_rank FROM dede_arctype WHERE reid=0
) AS tmp
)
WHERE a1.reid > 0;
六、使用PHP脚本进行复杂批量操作
当SQL无法满足需求时,可编写PHP脚本来执行复杂逻辑:
<?php
require_once(dirname(__FILE__)."/include/common.inc.php");
// 批量设置栏目属性
$dsql->SetQuery("SELECT id,typename FROM dede_arctype WHERE reid=0");
$dsql->Execute();
while($row=$dsql->GetArray()){
$sql="UPDATE dede_arctype
SET seotitle='{$row['typename']}_织梦CMS教学',
keywords='{$row['typename']},织梦,CMS,教程'
WHERE id={$row['id']}";
$dsql->ExecuteNoneQuery($sql);
echo "栏目 {$row['typename']} 更新完成
";
}
echo "全部批量操作完成!";
?>
七、批量生成栏目HTML脚本
<?php
// 批量生成所有栏目的HTML
require_once(dirname(__FILE__)."/include/common.inc.php");
require_once(DEDEINC."/arc.listview.class.php");
$dsql->SetQuery("SELECT id,typename,typedir FROM dede_arctype WHERE ishidden=0");
$dsql->Execute();
while($row=$dsql->GetArray()){
$lv=new ListView($row['id']);
$lv->CountRecord();
$lv->MakeHtml();
echo "栏目【{$row['typename']}】HTML生成完成
";
}
?>
效率建议:批量操作前先估算操作的影响范围。对于超大型网站(10万+数据),建议在服务器低峰期执行批量操作,必要时可分批处理,每批100-500条数据,避免长时间锁表。