定位管理员定义的内容部分

Positioning an administrator-defined content part

我应该如何控制我使用管理界面(内容定义 -> 内容部分)创建的内容部分的位置?准确地说,我想将它从摘要视图中隐藏起来,并只显示它的详细信息。我创建该部分是为了尝试简化其字段的定位 - show/hide 一次全部设置,以便可以根据需要轻松管理字段,而无需更改任何其他内容。

我尝试使用 placement.info 来定位零件,甚至尝试添加模板都无济于事...我可能错过了零件形状的名称。查看页面的形状轨迹,该部分在模型中无处可见 - 相反,它的字段似乎直接添加到内容中。 (更正:它在模型中,但不在左侧的显示树视图中)。

有没有办法在 Orchard 中做到这一点?我使用的是最新版本 - 1.9.1.

编辑:

这是我试过的placement.info。有问题的内容部分称为 FilmData,我在调试器中注意到它确实作为 ContentPart 的一个实例出现在 Parts 集合中,但它似乎并没有作为一个整体进入形状跟踪。

<Placement>
    <Place Parts_FilmData="-"/>
    <Place Parts_FilmData_Summary="-"/>
    <Place Parts_FilmDataPart="-"/>
    <Place Parts_FilmDataPart_Summary="-"/>
    <Place Parts_ContentPart="-"/>
    <Place Parts_ContentPart_Summary="-"/>
...

这对摘要和详细视图都没有影响。

我还尝试添加一个 CSHTML 模板并调用它 -

Views\Content-FilmData.cshtml
Views\Content-FilmData.Summary.cshtml
Views\FilmData.cshtml
Views\Parts.FilmData.cshtml
Views\Parts.FilmData.Summary.cshtml
Views\DisplayTemplates\Parts\FilmData.cshtml

...但其中 none 似乎已被使用。

这是我在形状轨迹的左框架中得到的...请注意 Parts_Film 是不同的部分,它是通过编程创建的。这里能看到的字段是FilmData部分的字段。

Content
    Parts_Title
[+] Fields_MediaLibraryPicker
    Parts_Film
    Fields_Input
    Fields_Input
    Fields_Input
    Fields_Input
    Fields_Input [empty]
[+] Fields_DateTime
    Fields_TaxonomyField
    Parts_Common_Body
    Parts_Contents_Publish [empty]

这里的简短回答是,您尝试执行的操作将不起作用,因为字段即使附加到特定部分,也不会通过该部分显示,因此不会考虑该部分是否显示或没有。

如果您需要,可以提供更多细节...虽然 Orchard 中的某个部分可以存在于代码之外,但它的工作方式(它显示什么、它存储什么数据等)都是在代码中定义的。您需要的一件事是具有显示方法的驱动程序,该方法将注册内容形状。

protected override DriverResult Display(MyPart part, string displayType, dynamic shapeHelper) {
    return ContentShape("Parts_MyPart",
        () => { return shapeHelper.Parts_MyPartView(Model: part); });
}

因此 "Parts_MyPart" 位与位置相匹配,以决定是否以及在何处显示您的视图,即 Parts_MyPartView 形状。这一点很重要,因为当您发现尝试各种放置语句时,您实际上可以在那里放置任何东西(大多数人遵循所有核心部分都使用的 Orchard 约定)。至于视图,从 UI 创建一个部分实际上不会显示任何内容。您尝试的前两个模板(使用 Content- 前缀)用于覆盖主要内容模板,因此您可以在那里使用您的内容类型名称,而不是部分名称(无耻的插件:您可以阅读更多关于这些的信息)我写得不好的博客文章,http://arkleseizure.net/what-the-hell-is-an-item-template)。

希望这有助于澄清一些事情。