如何在Kentico 10中基于文档名动态设置页面标题?
嘿,针对你在Kentico 10里要给1000个文档自动设置页面标题的需求,我给你整理了几个靠谱的自动实现方案,不用一个个手动折腾:
1. 用内置批量更新工具(零开发快速搞定)
这是最适合非开发人员的方法,Kentico后台自带批量操作能力:
- 进入后台的Content模块,定位到你的目标节点,筛选出所有需要更新的子文档(可以用顶部的筛选器缩小范围,或者直接勾选全选按钮)
- 点击顶部的「Bulk actions」按钮,选择「Update」选项
- 在弹出的批量更新窗口里,找到页面标题对应的字段(通常是
DocumentPageTitle,如果是自定义字段就选你对应的字段名) - 设置字段的更新值为宏表达式,比如你想用文档名称加固定后缀,就写
{% DocumentName %} - 你的站点名称;如果要结合其他自定义字段,比如分类,就写{% DocumentName %} | {% DocumentCategory %} - 先预览更新效果确认没问题,再点击执行,就能一次性更新所有选中文档的标题了
2. 自定义API脚本(适合复杂逻辑)
如果你的标题规则比较复杂(比如需要调用外部数据、多字段复杂拼接),可以用Kentico的API写个脚本批量处理:
// 替换成你的目标节点ID int targetNodeId = 123; // 替换成你的站点文化代码 string cultureCode = "en-US"; // 查询目标节点下的所有文档 var targetDocuments = DocumentHelper.GetDocuments() .Path(targetNodeId, PathTypeEnum.Children) .OnCurrentSite() .Culture(cultureCode) .ToList(); foreach (var doc in targetDocuments) { // 这里写你的动态标题生成逻辑,示例用文档名称+自定义字段 string dynamicTitle = $"{doc.DocumentName} - {doc.GetValue("ProductBrand", "默认品牌")}"; // 设置页面标题字段 doc.SetValue("DocumentPageTitle", dynamicTitle); // 保存文档,true表示跳过工作流(根据你的站点需求调整) DocumentHelper.UpdateDocument(doc, TreeProvider.Static, true); }
你可以把这段代码放到后台的Customization → Custom code里的脚本执行器运行,或者做成一个简单的后台自定义页面执行一次即可。
3. 宏规则自动生成(兼顾新增和现有文档)
如果想让未来新增的文档自动生成标题,同时也能批量更新现有文档,可以这么做:
- 进入Settings → Content → Content types,找到你对应的文档类型
- 编辑该类型,找到页面标题字段,设置「Default value」为宏表达式(比如
{% DocumentName %} - 站点后缀) - 对于现有文档,还是用批量更新工具,把标题字段设置为这个宏表达式,批量更新;之后新增的文档会自动套用这个规则生成标题
注意事项
- 操作前一定要备份数据库,批量操作万一出错能快速回滚
- 如果你的文档启用了工作流,批量更新时要注意是否需要提交到工作流,或者在脚本里设置跳过工作流(根据站点配置调整)
- 宏表达式支持很多内置变量和自定义字段,你可以根据需求灵活组合,比如
{% DocumentName %} | {% DateTime.Now.ToString("yyyy-MM-dd") %}
内容的提问来源于stack exchange,提问作者Deivi Robles
相关产品推荐
相关产品推荐

