2016-12-06 3 views
0

Я использую сад 1.9.3 и создал несколько пользовательских ContentTypes, имитирующую стандартный тип страницы с автомагистралью и Layout частью и т.д.Как использовать переопределение мест размещения или шаблонов, чтобы скрыть часть части в редакторе содержимого?

Этих типов страниц никогда не должны быть установлены в качестве домашней страницы, так что я хотите скрыть только поле Set as home page части Autoroute, но только для моих пользовательских типов. Я не уверен, что самый эффективный способ это сделать. Можно ли настроить таргетинг на это поле в файле места размещения?

+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' для этого. Представление должно быть переопределяемым из вашего модуля, если у вас есть зависимость от Orchard.Autoroutes, определенных в вашем модуле. Txt – devqon

 Смежные вопросы

  • Нет связанных вопросов^_^