我使用乌节1.9.3,并建立了几个模仿标准的页面类型与自动布线和布局等部分如何使用展示位置或模板覆盖来隐藏内容编辑器中零件的一部分?
这些类型的网页不应该被设置为主页自定义CONTENTTYPES的,所以我只想隐藏Autoroute零件的Set as home page
字段,但仅用于我的自定义类型。我不确定最有效的方法是什么去做这件事。我可以专门在展示位置文件中定位此字段吗?
我使用乌节1.9.3,并建立了几个模仿标准的页面类型与自动布线和布局等部分如何使用展示位置或模板覆盖来隐藏内容编辑器中零件的一部分?
这些类型的网页不应该被设置为主页自定义CONTENTTYPES的,所以我只想隐藏Autoroute零件的Set as home page
字段,但仅用于我的自定义类型。我不确定最有效的方法是什么去做这件事。我可以专门在展示位置文件中定位此字段吗?
可以覆盖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
};
您无法使用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