You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sitecore PowerShell脚本改模板自动生成英文版本的原因及解决方法

问题原因及解决方案

原因

当你通过PowerShell修改Sitecore项的模板ID时,Sitecore的默认行为是为所有站点启用的语言自动生成对应版本——即使原项没有该语言的版本。这是因为模板修改属于触发跨语言版本同步的操作,系统会默认尝试为所有活跃语言创建新版本以保持数据一致性。

解决方案

1. 仅在目标语言(中文)上下文下编辑项

执行编辑操作前,明确切换到中文语言版本的上下文,确保修改只作用于中文版本,避免触发其他语言的版本生成:

# 获取目标项
$item = Get-Item -Path "master:/sitecore/content/你的项路径"
# 指定目标语言为中文
$targetLang = [Sitecore.Globalization.Language]::Parse("zh-CN")
# 切换到中文版本
$targetItem = $item.Versions.GetVersion($targetLang)

if ($targetItem) {
    $targetItem.Editing.BeginEdit()
    $targetItem.TemplateId = $newTemplateId
    $targetItem.Editing.EndEdit()
}

2. 使用带语言参数的编辑重载方法

调用BeginEdit的重载版本,明确指定操作语言,并关闭自动创建新语言版本的逻辑:

$item = Get-Item -Path "master:/sitecore/content/你的项路径"
$targetLang = [Sitecore.Globalization.Language]::Parse("zh-CN")

$item.Editing.BeginEdit($targetLang, $false) # 第二个参数:不创建新语言版本
$item.TemplateId = $newTemplateId
$item.Editing.EndEdit($false, $true) # 第三个参数:保存编辑

3. 禁用站点不需要的语言

如果站点完全不需要英文版本,直接在Sitecore后台禁用英文语言:

  • 进入/sitecore/system/Languages/English节点
  • 将Enabled字段设置为No
  • 保存后,系统将不再自动生成英文版本

内容的提问来源于stack exchange,提问作者Kalaiarasi K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 23:25:02