2014-02-19 20 views
1

我有一个包含一些CSS和JS的子文件夹的小部件。我想通过小部件而不是外部注册这些文件。如何使用JS.RegisterJSInclude()与Ektron v9?

首先,我把它们放在哪里。 page_load,pre render,init ???

这是我的注册脚本函数,我尝试从页面加载调用并预渲染没有成功。

private void RegisterScripts() 
    { 
     var api = new CommonApi(); 
     var sitepath = api.SitePath; 
     Css.RegisterCss(this, sitepath + "widgets/mywidget/mything.css", "MyCSS"); 
     JS.RegisterJSInclude(this, sitepath + "widgets/mywidget/thing.min.js", "MyJS1"); 
     JS.RegisterJSInclude(this, sitepath + "widgets/mywidget/otherthing.js", "MyJS2"); 
     JS.RegisterJSInclude(this, sitepath + "widgets/mywidget/morethings.js", "MyJS3"); 
    } 

即时通讯相当确信我所做的一切设置在这里: http://documentation.ektron.com/cms400/v8.50/mobile_help/Advanced/Content/Widget%20Chapter/Customizing%20Widgets/Customizing_Widgets.htm

回答

1

我不记得,如果它是8.5或之前之后,但在最新的注册方法使用登记软件包。封装CSS和JavaScript可以实现更好的缓存和资源利用率,并且有助于确保过去由于您的“密钥”中的拼写错误而导致注册多个EktronJS副本的日子不复存在。它还将多个脚本和css请求聚合到单个请求中以提高性能。

注册脚本和css(包括v9)的新方法是使用Ektron.CMS.Framework.UI方法。软件包允许您创建可重复使用的块,然后通过一次调用就可以在多个位置注册。如果其中的任何文件已经被注册,它将不会再包含它们(过去你会有这种情况)。但是,您仍然可以注册单个脚本,并且有一种方法可以这样做。

string sitePath = new Ektron.Cms.CommonApi().SitePath; 
Ektron.Cms.Framework.UI.JavaScript.Register(this, sitePath + "/widgets/myWidget/js/script.js"); 

当您使用打包方法时,可以选择使用内置资源或自定义资源。最大的优势是重用。例如,如果您在CustomPackages类中创建小包,并且想要合并项目,则可以和任何已经被其他小部件或项引用的任何内容仅包含一次。它还允许您创建用于创建和快速部署未来小部件的框架/模型。这种做法的一个简单的例子:

string sitePath = new Ektron.Cms.CommonApi().SitePath; 
Ektron.Cms.Framework.UI.Package widgetRes = new Ektron.Cms.Framework.UI.Package() 
{ 
    Components = new List<Ektron.Cms.Framework.UI.Component>() 
    { // all built-in ektron packages 
     Ektron.Cms.Framework.UI.Packages.EktronCoreJS, 
     Ektron.Cms.Framework.UI.Packages.jQuery.jQueryUI.Datepicker, 
     Ektron.Cms.Framework.UI.Packages.jQuery.jQueryUI.Dialog, 
     Ektron.Cms.Framework.UI.Packages.Ektron.JSON, 
     Ektron.Cms.Framework.UI.JavaScript.Create("/widgets/myWidget/js/script.js"), // custom JS 
     Ektron.Cms.Framework.UI.Css.Create(sitePath+"/widgets/myWidget/css/myStyles.css") // custom CSS 
    } 
}; 
widgetRes.Register(this); // register everything 
widgetRes.RegisterJS(this); // register JS only 
widgetRes.RegisterCss(this); // register CSS only 

,比尔提供的是建立该晔建在包装上,并允许在您注册的方法多了几分自由定制库,什么包,你有可用的链接,以及如何处理缓存。 Ektron方法总是在页面的头部包含脚本,这样自定义库允许您指定一个像占位符那样的控件来注册它们。然而,它是建立在现有Ektron Packaging结构之上的,而且新的包装和注册方法最终是你想要使用的,而不是解决方法。

+0

谢谢,看起来不错 – JAG