2015-02-07 1 views
1

보기가없는 모듈을 만들고 있지만 모든 페이지에 일부 자바 스크립트를 삽입하고 있습니다. 이 자바 스크립트에는 JQuery가 필요합니다. 이를 위해 Orchard에게 jquery 모듈을로드해야한다고 지시하고 싶습니다. 나는 그것을 할 수있는 몇 가지 방법을 찾았지만, 그들 모두는 관점에 들어갔다.오차드에 jquery 라이브러리 추가하기

orchard에게 컨트롤러, 또는 FilterProvider에서 jquery 라이브러리를로드하는 방법이 있습니까? 모듈이 ResourceManifest.cs을에

답변

1

물론이

using Orchard.UI.Resources; 

public class ResourceManifest : IResourceManifestProvider 
{ 
    public void BuildManifests(ResourceManifestBuilder builder) 
    { 
     var manifest = builder.Add(); 

     manifest.DefineScript("MyScript") 
      .SetUrl("myscript.min.js", "myscript.js") // Or just use one 
      .SetVersion("1.0.0") 
      .SetDependencies("jQuery"); 
    } 
} 

는 그런 다음에 자원 관리자와 MyScript을 포함하여 FilterProvider

public class MyScriptFilter : FilterProvider, IResultFilter 
{ 
    private readonly IResourceManager resourceManager; 

    public MyScriptFilter(IResourceManager resourceManager) 
    { 
     this.resourceManager = resourceManager; 
    } 

    public void OnResultExecuting(ResultExecutingContext filterContext) 
    { 
     if (!(filterContext.Result is ViewResult) || !UI.Admin.AdminFilter.IsApplied(filterContext.RequestContext)) 
     { 
      // Control where when it should and shouldn't appear, like exclude admin and any non-ViewResult 
      return; 
     } 

     this.resourceManager.Require("script", "MyScript"); 
    } 

    public void OnResultExecuted(ResultExecutedContext filterContext) 
    { 
    } 
} 

가 컴파일하는 경우이 그렇게 확실하지 테스트하지 않았습니다 ,하지만 트릭을해야합니다.

+1

솔루션을 사용할 수 있지만 특히 jQuery에 의존하는 스크립트를 선언하는 방법은 스크립트가 대개보기에 속하는 것을 포함하여 정확하게 맞습니다. 따라서 두 번째 부분을 반드시 추천하지는 않습니다. if if 사이트 제작자는 자신의 테마에서 다른 스크립트를 사용하는 다른보기로보기를 바꾸시겠습니까? –

+0

레이아웃에 Resource를 간단히 포함시킬 수 있습니다 : Script.Require ("MyScript"); – mberacochea