2016-12-06 6 views
0

나는 오차드 1.9.3를 사용하고 있는데 페이지의콘텐츠 편집기에서 파트의 일부를 숨기려면 배치 또는 템플리트 재정의를 사용하는 방법은 무엇입니까?

이러한 유형은 홈페이지로 설정해서는 안 등 Autoroute를 및 레이아웃 부분에 표준 페이지 유형을 모방 사용자 정의 ContentTypes의 몇 가지를 설정 한 그래서 나는 Autoroute 부분의 Set as home page 필드를 숨기고 싶지만 내 사용자 정의 유형에만 해당됩니다. 가장 효율적인 방법이 이것에 관해서 무엇인지 모르겠습니다. 이 입력란을 게재 위치 파일에서 구체적으로 타겟팅 할 수 있습니까?

+0

이 작업은 Placement.info에서 즉시 수행 할 수 없지만 [Parts.Autoroute.Edit.cshtml] (https://github.com/OrchardCMS/Orchard/blob/dev/src/Orchard.Web)을 재정의 할 수 있습니다. /Modules/Orchard.Autoroute/Views/EditorTemplates/Parts.Autoroute.Edit.cshtml)에 논리를 포함 시키십시오. – devqon

답변

1

당신은 Parts.Autoroute.Edit.cshtml을 무시하고 일부 사용자 지정 논리를 포함 할 수 있습니다 :이를 위해

@{ 
    var canSetAsHomePage = true; 
    var myTypesToDisableHomePageFor = ["MyCustomContentType", "AnotherCustomContentType"]; 
    if (myTypesToDisableHomePageFor.Contains(Model.ContentType)) { 
     canSetAsHomePage = false; 
    } 
} 

// .. 

@if (!Model.IsHomePage && canSetAsHomePage) { 
    if (AuthorizedFor(Permissions.SetHomePage)) { 
// .. 

Orchard.Autoroute.ViewModels.AutoroutePartEditViewModel에 추가 속성을 추가 할 수도 한 작업 :

public class AutoroutePartEditViewModel { 
    ... 
    public string ContentType { get; set; } 
} 

을하고 설정해야합니다 Editor 방법은 Orchard.Autoroute.Drivers.AutoroutePartDriver :

var viewModel = new AutoroutePartEditViewModel { 
    CurrentUrl = part.DisplayAlias, 
    Settings = settings, 
    ContentType = part.ContentItem.ContentType 
}; 
+0

깨끗하고 명확한 예를 들어 주셔서 감사합니다! – Lawyerson

+0

사실,이 오버라이드를 정확히 어디에 넣으시겠습니까? Module/Views/EditorTemplates, Theme/Views/EditorTemplates, Views/Parts/Autoroute.Edit 등을 넣으려고해도 픽업되지 않는 것 같습니다. 또한, 보이지 않습니다. 모델의 ContentType에 대한 참조이므로이 기능을 사용하려면 드라이버를 확장해야한다고 생각하십니까? – Lawyerson

+1

ContentType을 얻는 방법을 모르겠습니다. 그 대신에'Model' 변수를 검사해야합니다. module.txt에 정의 된 Orchard.Autoroutes에 대한 의존성이있는 경우보기가 모듈에서 대체 가능해야합니다. – devqon