11

现在我一直在实施用户界面 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-tags 之间放置一些东西,但即使不在 UI2012 中编辑它们也会显示。我一直在搜索 SDL Live 内容站点,但找不到任何参考。有人有想法吗?

4

3 回答 3

3

不支持自定义空字段的占位符文本的方式。但是您可以尝试编写一个扩展,它会覆盖以下方法:

Tridion.Web.UI.SiteEdit.ComponentField.prototype.setPlaceholderType

此方法负责设置占位符文本。

于 2012-06-25T10:48:47.827 回答
2

当我检查这个时,我一直在寻找相同的东西,但我认为这并不容易 AFAIK。我稍微深入了一下,发现标签是资源文件的一部分Tridion.Web.UI.Editors.SiteEdit.Strings.resx EmptyTextField。我没有寻求解决这个问题的选项,因为它不是受支持的方式,也不是记录在案的,最重要的是,我仍然没有为每个字段添加我自己的文本的灵活性。

回到你的问题,我提出了一个想法(不一定回答你的问题)并想在这里分享,以便专家提供一些有价值的建议。我没有尝试这个选项(我觉得工作量太大),这在我长长的待办事项列表中,并且可能也有一些缺点。

  • 创建具有“默认值”的模式字段(例如,“将位置添加到事件”)。默认文本将显示在您的 UI 中。

  • 如果 Schema 字段值与默认值相同,则以某种方式编写您的模板

@@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>
}
  • 根据启用的目标类型 UI 执行上述条件检查,因为我们不想显示实时目标等的默认文本。

此外,将 Tridion Idea 作为增强请求发布也会很棒。如果还没有的话,我会在接下来的几天内完成。

于 2012-06-22T14:16:27.177 回答
1

我喜欢这种方法,因为它是一种在现场级别给出作者指示的快速方法。我们通常使用描述字段在 CME 中提供此类帮助。

对于内联编辑,内容类型(SDL Live Content - 需要登录)是另一种选择,因为它们定义了架构(和原型组件)、模板、说明和“保存到”上下文。您可以提供作者替换的虚拟文本。

提示:

  • 在原型组件中添加示例内容和/或说明(Lorem Ipsum)。
  • 在内容类型描述中添加附加说明。
  • 选择原型组件文件夹以外的存储位置。

让我们知道怎么回事。:-)

于 2012-06-22T16:20:00.073 回答