【问题标题】:How to get the current field name in Tridion?如何获取 Tridion 中的当前字段名称?
【发布时间】:2012-04-18 12:11:38
【问题描述】:

我在 Tridion 2011 SP1 的功能区工具栏中添加了一个按钮。当我单击按钮时,它将打开一个 aspx 页面。在该 aspx 页面中,我需要访问光标当前所在的当前字段名称。请提供我要使用的对象?对于架构名称,我使用了$display.getView().getItem().getSchemaId()。同样有没有办法获取当前字段名?

【问题讨论】:

  • 你能提供更多细节吗?我们是否假设这是组件视图的功能区栏?功能区栏有很多位置,因此了解上下文对于回答问题很重要。您可以相应地修改您的问题吗?可能值得包含您的 editor.config 的片段,以便我们可以看到您的按钮的应用位置。
  • @ChrisSummers 感谢您的回复。是的,我正在将我的按钮添加到组件视图的功能区栏中。
  • @ChrisSummers 你能告诉我如何在子字段的情况下获取父字段名称。结构如下所示: 正文:名称:值:在上述情况下,值字段是一个 RTF。如果我单击功能区工具栏按钮,从值字段如何获取父字段名称(即“正文”)?请在这个问题上帮助我。提前致谢。

标签: tridion


【解决方案1】:

我得到的最接近的是使用此代码(在组件编辑窗口中):

$display.getView().getSourceEditorName()

这将返回当前字段的名称,即使方法名称表明它做了其他事情。

如果您想从弹出窗口中获取相同的值,请在 opener 上调用它,如下所示:

opener.$display.getView().getSourceEditorName()

更好的解决方案

您应该在调用命令时将其作为参数传递到弹出窗口中,而不是从弹出窗口中查找字段名称。您可以从传递给您的命令的_execute 方法的target 参数中获取它。

GUI.Extension.prototype._execute = function GUI$Extension$_execute(target) {
    target.editor.setFocus();
    var fieldName = target.item.getSourceEditorName();
    var popup = $popup.create("/WebUI/Editors/GUI.Extensions/Extension.aspx",
                "width=400px,height=150px,resizable=0",
                { fieldName: fieldName });
}

然后在弹出窗口的 JavaScript 中使用:

var fieldName = window.dialogArguments.fieldName;

【讨论】:

  • 以上答案将有助于找到当前字段名称。您能否告诉我如何在子字段的情况下获取父字段名称。结构如下所示: 正文:名称:值:在上述情况下,值字段是一个 RTF。如果我单击功能区工具栏按钮,从值字段如何获取父字段名称(即“正文”)?请在这个问题上帮助我。提前致谢。
  • 您能告诉我如何获取父字段名称吗?提前致谢
  • 你已经尝试了什么?为了让你得到上面的答案,我做了很多基础工作。您不能一直依赖其他人为您深入研究 Tridion 的 GUI 代码。搜索字段之间的关系,记录您的发现,然后提出后续问题。
  • @Puff 感谢上述解决方案。我能够将值发送到弹出脚本。但我想在页面后面的代码中使用该值,我该如何使用它?提前致谢。
  • 在这种情况下,您可以在打开弹出窗口时将其作为 URL 的一部分简单地传递给服务器: $popup.create("/WebUI/Editors/GUI.Extensions/Extension.aspx?fieldName= "+字段名...
猜你喜欢
  • 1970-01-01
  • 2016-11-02
  • 2013-01-04
  • 1970-01-01
  • 2020-04-02
  • 2017-09-09
  • 1970-01-01
  • 1970-01-01
  • 2017-06-02
相关资源
最近更新 更多