我正在自定义Tridion功能区工具栏以添加按钮。如何在.NET ASPX页面中访问Tridion控件,如按钮和下拉列表?
答案 0 :(得分:4)
您的问题对于您要完成的内容有点模糊,在功能区工具栏中添加一个按钮,您不需要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 manager控件:
<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 View扩展,例如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));
答案 1 :(得分:2)
这篇文章可以帮助您http://www.tridiondeveloper.com/ribbon-item-group
虽然我相信存储在编辑器中的任何ASPX或ASCX的输出都是高速缓存的,但创建CM功能的首选方法是使用存储在模型中的JavaScript和后台服务,你可能想看一下开源PowerTools项目提供了更多想法(http://code.google.com/p/tridion-2011-power-tools/)。