在我的皮肤中,我有一个模块容器,我想添加一个JavaScript文件。
没问题,我用:
<%@ Register TagPrefix="dnn" Namespace="DotNetNuke.Web.Client.ClientResourceManagement" Assembly="DotNetNuke.Web.Client" %>
<dnn:DnnJsInclude runat="server" FilePath="script.js" PathNameAlias="SkinPath" />
唯一的问题是,脚本位于皮肤文件夹中不是:
Portals\_default\Skins\MySkin\script.js
但在容器文件夹中:
Portals\_default\Containers\MySkin\script.js
添加上面的代码无效,因为它会生成一个指向皮肤文件夹的链接:
<script src="/Portals/_default/Skins/MySkin/script.js?cdv=18" type="text/javascript"></script>
如果我使用这个简单的代码,它确实有效:
<script src='<%= SkinPath %>script.js' />
但后来我失去了ClientResourceManagement
的所有优势!
查看来源和documentation,只有两种PathNameAlias
类型,而且没有一种用于容器。
我将脚本添加到容器文件夹的原因是它只用在那个容器中,而不是其他容器。
任何人都知道解决方案吗?
是否可以轻松实现我自己的PathNameAlias
?
答案 0 :(得分:0)
您可以使用代码中的Client Resource Manager API在站点目录中的任何位置注册脚本和/或样式表。
在模块的代码隐藏中,使用此
override protected void OnInit(EventArgs e)
{
ClientResourceManager.RegisterScript(Parent.Page, "~/Portals/-default/Containers/MySkin/script.js");
base.OnInit(e);
}