我们可以替换SiteEdit 2012中的<add text =“”>标签(在Tridion 2011上)吗?</add>

时间:2012-06-22 08:25:25

标签: tridion siteedit

现在我一直在实施用户界面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内容网站,但我找不到任何参考。有人有想法吗?

3 个答案:

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

此外,发布Tridion Idea作为增强请求将会很棒。如果不存在,我将在未来几天内完成。

答案 2 :(得分:1)

我喜欢这种方法,因为它是在现场级别提供作者指示的快捷方式。我们使用说明字段通常在CME中提供此类帮助。

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

提示:

  • 在原型组件中添加样本内容和/或说明(Lorem Ipsum)。
  • 在内容类型说明中添加其他说明。
  • 选择原型组件文件夹以外的存储位置。

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