2013-09-01 49 views
0

我已經創建了自定義DNN模塊。
我想在其中使用masonry插件。
所以在VS中的模塊項目中我創建了腳本文件夾並將JS文件放在那裏。
在我加入的ascx文件的視圖:如何從ascx設置腳本的相對路徑

<script src="Scripts/jquery.infinitescroll.min.js"></script> 
<script src="Scripts/masonry.pkgd.js"></script> 
<script src="Scripts/imagesloaded.js"></script> 

但是,當我在控制檯加載頁面eith模塊我得到:

GET http://dnn7site/resources/shared/scripts/jquery/jquery.min.map 404 (Not Found) Masonry:457 
GET http://dnn7site/jquery.min.map 404 (Not Found) Masonry:464 
GET http://dnn7site/Demos/Scripts/masonry.pkgd.js 404 (Not Found) Masonry:751 
GET http://dnn7site/Demos/Scripts/imagesloaded.js 404 (Not Found) Masonry:752 
GET http://dnn7site/Demos/Scripts/jquery.infinitescroll.min.js 404 (Not Found) 

什麼是添加和設置相對路徑的方式到DNN中的腳本?

回答

0

嘗試包括完整路徑的資源文件,按照該指令的Masonry getting started documentation上:

包括在你的網站上的磚石腳本。

<script src="/path/to/masonry.pkgd.min.js"></script> 

例如:

<script src="/desktopmodules/com.demo.masonry/Scripts/jquery.infinitescroll.min.js"></script> 
<script src="/desktopmodules/com.demo.masonry/Scripts/masonry.pkgd.js"></script> 
<script src="/desktopmodules/com.demo.masonry/Scripts/imagesloaded.js"></script> 
+0

仍然404但演示路徑丟失。 – 1110

+0

我已經更新了我的答案,以包含'〜/' - 試試。顯然這隻會在'Scripts'文件夾直接離開根目錄時才起作用,我假設它是。 –

+0

儘管如此404和路徑現在爲: 'GET HTTP://dnn7site/Demos/~/Scripts/jquery.infinitescroll.min.js 404(未找到)砌體:750 GET HTTP:// dnn7site /演示/〜/ Scripts/imagesloaded.js 404(未找到)砌體:752 GET http://dnn7site/Demos/~/Scripts/masonry.pkgd.js 404(Not Found)' – 1110

2

您應該使用在客戶端的依賴框架,包括在DotNetNuke的腳本(DNN中加入功能6.1+)。它將控制優先級並允許框架將腳本組合在一起以獲得更高效的負載。

對信息的維基條目是在這裏:

http://www.dnnsoftware.com/wiki/Page/Client-Resource-Management-API

從本質上講,它是那麼容易,因爲這樣的:

<%@ Register TagPrefix="dnn" Namespace="DotNetNuke.Web.Client.ClientResourceManagement" Assembly="DotNetNuke.Web.Client" %> 

<dnn:DnnJsInclude runat="server" FilePath="~/Resources/Shared/Scripts/jquery/jquery.hoverIntent.min.js" /> 

如果你想通過代碼來做到這一點,試試這個:

RegisterStyleSheet(Page page, string filePath) //default provider and default priority 
2

對於我的自定義模塊中的腳本或CSS,我usua lly把我的控件的PreRender事件中的ClientResourceManager調用。我使用ControlPath來獲取模塊控件的相對路徑以引用腳本。例如:

protected override void OnPreRender(EventArgs e) 
{ 
    ClientResourceManager.RegisterStyleSheet(this.Page, this.ControlPath + "css/view.css"); 
    ClientResourceManager.RegisterScript(this.Page, this.ControlPath + "js/view.js"); 
}