我正在自定义 Tridion 功能区工具栏以添加一个按钮。如何在 .NET ASPX 页面中访问 Tridion 控件,例如按钮和下拉菜单?
2 回答
您的问题对于您到底想要完成什么有点模糊,要向功能区工具栏添加一个按钮,您不需要 ASPX 页面。
但是,如果您的功能区按钮打开一个弹出窗口,您想在其中使用 Tridion 控件,您将必须从导入 Tridion.Web.UI 命名空间开始。
在您的 ASPX 页面中,您可以添加:
<%@ Import Namespace="Tridion.Web.UI" %>
<%@ Register TagPrefix="ui" Namespace="Tridion.Web.UI.Editors.CME.Controls" Assembly="Tridion.Web.UI.Editors.CME" %>
在您的 ASPX 页面的头部,您应该提到 tridion 管理器控件:
<cc:tridionmanager runat="server" editor="ExampleEditor" isstandaloneview="true">
<dependencies runat="server">
<dependency runat="server">Tridion.Web.UI.Editors.CME</dependency>
<dependency runat="server">Tridion.Web.UI.Editors.CME.Controls</dependency>
</dependencies>
</cc:tridionmanager>
然后您可以使用页面中的控件。确保不要忘记命名空间引用
xmlns:c="http://www.sdltridion.com/web/ui/controls"
然后,您背后的代码应该从 Tridion 视图扩展,例如 Tridion.Web.UI.Editors.CME.Views.Popups.PopupView
using Tridion.Web.UI.Core;
using Tridion.Web.UI.Controls;
using Tridion.Web.UI.Core.Controls;
using Tridion.Web.UI.Editors.CME.Views.Popups;
namespace Extensions.Example.Views
{
[ControlResources("Extensions.Example.Views.ExampleDialog")]
[ControlResourcesDependency(typeof(Stack))]
public class ExampleDialog : PopupView
{
}
}
这一切都是可能的,但不确定重用 Tridion 控件的支持级别。据我所知,它们不是公共 API 的一部分,也没有任何内容记录在任何地方(您可以查看 ..\Tridion\web\WebUI\Editors\CME\Views 目录中的 ASPX 页面,但您没有任何东西背后的代码示例,这些代码基本上都不存在)。因此,如果您想在此处使用 .NET,我实际上会建议您不要重用现有控件和 ASPX 页面中的控件。在这种情况下,只需使用您自己的控件。如果这些控件需要访问 Tridion CMS,您应该让他们为此使用核心服务。
当然可以将 Tridion 控件与 JavaScript API 结合使用,如现有视图中所示。如果您在页面上使用c:Button
控件,则可以在 JavaScript 代码中访问它,如下所示:
var p = this.properties;
var c = p.controls;
c.BtnExmpl = $controls.getControl($("#BtnID"), "Tridion.Controls.Button");
// add an event handler like this
$evt.addEventHandler(c.BtnExmpl, "click", this.getDelegate(this._onExmplClicked));
这篇文章可能会对您有所帮助http://www.tridiondeveloper.com/ribbon-item-group
虽然我相信存储在编辑器本身中的任何 ASPX 或 ASCX 的输出都会被缓存,因此创建 CM 功能的首选方法是使用存储在模型中的 JavaScript 和后台服务,您可能需要查看开源 PowerTools项目以获得更多想法(http://code.google.com/p/tridion-2011-power-tools/)。