现在我一直在实施用户界面2012,经过一些障碍后,它运行得很好。我一直在寻求优化任何UI可编辑字段的可用性,并遇到相关的挑战。
在一个组件中,有几个非强制字段,因此当它们为空时不应显示。只要编辑者输入UI并选择包含所述字段的组件,就会出现<add text>
和<add internal link to component media>
等多个标签。
我希望将这些标签更改为更能描述其内容的内容,因为当字段不为空时,会在页面中添加其他html。
例如(使用Razor Mediator):
@if(Component.Fields.location != null) {
<span class="row">
<strong>Where:</strong>
<span>@RenderComponentField("location", 0)</span>
</span>
} else {
<tcdl:ComponentField name="location"></tcdl:ComponentField>
}
当位置字段为空时,它只显示<add text>
。我想将其更改为<Add location to event>
。
我已尝试在tcdl标签之间放置一些东西,但即使不在UI2012中进行编辑也会显示。我一直在搜索SDL Live内容网站,但我找不到任何参考。有人有想法吗?
答案 0 :(得分:3)
没有支持的方法来自定义空字段的占位符文本。但是你可以尝试编写一个扩展,它会覆盖以下方法:
Tridion.Web.UI.SiteEdit.ComponentField.prototype.setPlaceholderType
此方法负责设置占位符文本。
答案 1 :(得分:2)
当我检查这个时,我一直在寻找相同的东西,但我认为这不容易AFAIK。我走得很深,发现标签是资源文件Tridion.Web.UI.Editors.SiteEdit.Strings.resx
EmptyTextField
的一部分。我没有追求选择,因为它不是受支持的方式,也没有记录,除此之外我仍然没有为每个字段添加我自己的文本的灵活性。
回到你的问题,我正在抛出一个想法(不一定回答你的问题),并想在这里分享,以便专家可以提供一些有价值的建议。我没有尝试这个选项(我感觉太多工作),这是我的长期待办事项清单,也可能有一些缺点。
使用“默认值”创建架构字段(例如“将位置添加到事件”)。默认文本将显示在您的用户界面中。
以模式字段值与默认值相同的方式编写模板
@@if(Component.Fields.location.value == [Compare the schema field definition - default value of the field]) {
//--> Note: I could not find a straight API for this.. but I am assuming it should be there.
@RenderComponentField("location", 0)
} else {
<span class="row">
<strong>Where:</strong>
<span>@RenderComponentField("location", 0)</span>
</span>
}
此外,发布Tridion Idea作为增强请求将会很棒。如果不存在,我将在未来几天内完成。
答案 2 :(得分:1)
我喜欢这种方法,因为它是在现场级别提供作者指示的快捷方式。我们使用说明字段通常在CME中提供此类帮助。
对于内联编辑, content types (SDL Live Content - 需要登录)是另一种选择,因为它们定义了架构(和原型组件),模板,说明,以及“保存到”上下文。您可以提供作者替换的虚拟文本。
提示:
让我们知道它是怎么回事。 : - )