2012-05-16 17 views
6

に含まれて私はオーチャードにテーマを作成しようとしていると、いくつかのスクリプトが私のレイアウトに含まれて追加しました:注文はオーチャード

Script.Include("//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js").AtHead(); 
using (Script.Head()) { 
    @:<script>window.jQuery || document.write('<script src="scripts/jquery-1.7.1.min.js"><\/script>')</script> 
} 

Script.Include("plugins.js").AtHead(); 
Script.Include("script.js").AtHead(); 

私はGoogleのCDNからjQueryのをロードしたいがあれば地元のフォールバックを持っていますCDNのバージョンを読み込めません。これを実現するために、jQueryスクリプトの直後にスクリプトブロックを追加しました。問題は、私はjQueryのCDNスクリプトが含まれた後、右になりたいのに対し、私のフォールバックは、他のすべてのスクリプトの後に今あるということである

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" 
type="text/javascript"></script> 
<script src="/OrchardLocal/Themes/Test/scripts/plugins.js" type="text/javascript"> 
</script> 
<script src="/OrchardLocal/Themes/Test/scripts/script.js" type="text/javascript"> 
</script> 
<!--[if lt IE 9]> 
<script src="/OrchardLocal/Core/Shapes/scripts/html5.js" type="text/javascript">  
</script> 
<![endif]--> 
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.1.min.js"><\/script>') 
</script> 

:生成されたページのソースを見ているときのようにしかし、それが見えます。

Orchardがインラインスクリプトブロックをレンダリングする場所を制御できる方法はありますか?

答えて

2

現在のところ、Script.Include()Script.Head()またはScript.Foot()を混在させているときに、スクリプトの順序を制御する方法がないようです。

しかし、オーチャードとCDNを使用する方法はあります。しかし、残念ながら、それはすべきではありません。ここで何をしようとしているのかを処理するには、Script.Require("jquery").AtHead().UseCdn()を指定する必要があります。これらの方法は既に存在しているが、彼らは2つの理由のために働いていません。

  1. jQueryのモジュール現在、CDNのURL
  2. タグのように動作しないスクリプトを生成するためにUseCdn()方法に依存する方法を指定していません彼らはする必要があります

この問題のOrchard Codeplexに既にreported issueがあります。オーチャードチームはステータスをActiveに変更しましたので、すぐにバグが解決されることを願っています。私はこの問題に投票したので、オーチャードチームにこのバグを他のバグより速く解決するように伝えることができます。 @Display(Model.Head)(これはすべてのあなたの頭のスクリプトとスタイルの場所である:この行を見つけ、(あなたが/Core/Shapes/Views/Document.cshtmlからそれをコピーすることができます)あなたのテーマにDocument.cshtmlテンプレートを追加 - 一方

、あなたは私のように同じことを行うことができます行く)と、最終的には、このコードを追加することができ、そのライン上:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script>!window.jQuery && document.write('<script src="@Url.Content("~/Themes/[NAME-OF-YOUR-THEME]/Scripts/jquery-1.7.1.min.js")"><\/script>')</script> 

そして、あなたのテーマのフォルダ名と[NAME-OF-YOUR-THEME]を変更します。