如何在Ektron v9中使用JS.RegisterJSInclude()



我有一个小部件,它有一个子文件夹,其中包含一些css和JS。我想通过小部件而不是外部注册这些文件。

首先,我把它们放在哪里。页面加载,预渲染,初始化???

这是我的register脚本函数,我曾尝试从页面加载和预渲染中调用该函数,但没有成功。

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

我记不起它是在8.5之后还是之前,但最新的Register方法使用包进行注册。打包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

Bill提供的链接是一个自定义库,它建立在Ektron构建的包上,允许在哪里注册方法、可用的包以及如何处理缓存方面有更多的自由度。Ektron方法总是在页面的头部包含脚本,因此自定义库允许您指定一个控件(如占位符)来注册它们。然而,它是在现有Ektron打包结构的基础上构建的,新的打包和注册方法最终是您想要使用的,而不是解决方法。

最新更新