Optimizely CMS:如何修改HyperLink Editor的Open in字段及选项文本?
修改Optimizely HyperLink Editor字段文本的需求

我一直尝试寻找方法,将HyperLink Editor中的“Open in”字段修改为“Target”,额外需求为同时修改该字段的选项文本。
我曾尝试使用EditorDescriptor方案,但“Open in”并不被视为Provider。
请问有可行的解决思路吗?
可行解决思路
1. 本地化资源文件替换(推荐)
Optimizely后台UI的文本大多由本地化资源文件管控,直接自定义资源文件覆盖默认文本即可:
- 在项目
~/Resources目录下创建对应语言的资源文件,比如中文环境用EPiServer.Cms.Shell.UI.zh-CN.resx,通用环境用EPiServer.Cms.Shell.UI.resx - 在资源文件中添加以下键值对(根据需要修改值):
- 键:
contentediting/hyperlinkeditor/openin,值:Target - 键:
contentediting/hyperlinkeditor/samewindow,值:当前窗口(替换原“Same window”) - 键:
contentediting/hyperlinkeditor/newwindow,值:新窗口(替换原“New window”)
- 键:
- 确保项目配置优先加载自定义资源文件,系统会自动替换对应文本
2. 自定义编辑器客户端视图
如果本地化方式无法满足特殊布局需求,可自定义编辑器视图:
- 复制Optimizely默认的
hyperlinkeditor.html视图代码(可从官方Shell UI源码中获取) - 修改视图里“Open in”相关的标签和选项文本
- 通过
EditorDescriptor指定使用自定义视图:
[EditorDescriptorRegistration(TargetType = typeof(Url), UIHint = "CustomHyperLink")] public class CustomHyperLinkEditorDescriptor : EditorDescriptor { public override void ModifyMetadata(ExtendedMetadata metadata, IEnumerable<Attribute> attributes) { base.ModifyMetadata(metadata, attributes); metadata.CustomEditorSettings["uiView"] = "~/Views/Editors/CustomHyperLinkEditor.html"; } }
- 在目标Url属性上添加
[UIHint("CustomHyperLink")]标记
3. 客户端脚本动态修改DOM
若不想改动资源或视图,可通过脚本在编辑器加载后修改文本:
- 编写JavaScript脚本监听编辑器渲染事件,修改对应DOM元素文本:
$(document).on("epi-property-rendered", function (e, args) { if (args.metadata.editorType === "epi-cms/contentediting/editors/HyperLinkEditor") { setTimeout(() => { // 修改字段标签 $("label:contains('Open in')").text("Target"); // 修改选项文本 $("option:contains('Same window')").text("当前窗口"); $("option:contains('New window')").text("新窗口"); }, 100); } });
- 将该脚本注册到Optimizely后台的脚本集合中
内容的提问来源于stack exchange,提问作者Emanuel Sarbu
相关产品推荐
相关产品推荐

