现在我一直在实施用户界面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>
}
Run Code Online (Sandbox Code Playgroud)
当位置字段为空时,它只是说<add text>.我想改变它<Add location to event>.
我已经尝试在tcdl-tags之间放置一些东西,但即使在UI2012中没有编辑它们也会显示.我一直在搜索SDL Live内容网站,但我找不到任何参考.有人有想法吗?
当我检查这个时,我也在寻找同样的东西,但我认为这并不容易做到。我深入了解了一下,发现标签是资源文件的一部分Tridion.Web.UI.Editors.SiteEdit.Strings.resx EmptyTextField。我没有选择摆弄这个,因为它不是受支持的方式,也没有记录在案,而且最重要的是,我仍然没有为每个字段添加自己的文本的灵活性。
回到你的问题,我正在折腾一个想法(不一定回答你的问题)并想在这里分享,以便专家可以提供一些有价值的建议。我没有尝试这个选项(我觉得工作量太大),这在我很长的待办事项列表中,并且可能也有一些缺点。
创建具有“默认值”的架构字段(例如“将位置添加到事件”)。默认文本将显示在您的 UI 中。
如果架构字段值与默认值相同,则编写模板
@@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>
}
Run Code Online (Sandbox Code Playgroud)
另外,将 Tridion Idea 作为增强请求发布也很棒。如果还没有的话,我会在接下来的几天内完成。