Orchardcms 如何在Orchard中定义替换零件形状

Orchardcms 如何在Orchard中定义替换零件形状,orchardcms,Orchardcms,这是我的场景 使用Orchard CMS 1.7.1,我使用Orchard UI创建了一个名为“VistaImage”的自定义内容类型。此内容类型基于媒体库选择器字段定义了一个字段,该字段也称为“VistaImage” Vista图像组的投影被放置在“特色”区域作为小部件参考,效果良好 使用结果页面上的形状跟踪器,形状层次结构如下所示: Zone [Featured] Widget List Content A

这是我的场景

使用Orchard CMS 1.7.1,我使用Orchard UI创建了一个名为“VistaImage”的自定义内容类型。此内容类型基于媒体库选择器字段定义了一个字段,该字段也称为“VistaImage”

Vista图像组的投影被放置在“特色”区域作为小部件参考,效果良好

使用结果页面上的形状跟踪器,形状层次结构如下所示:

Zone [Featured]
   Widget
      List
          Content                         Alt: Content-VistaImage
             Fields_MediaLibraryPicker    Alt: Fields.MediaLibraryPicker-VistaImage
                Media
                    Parts_Image_Summary
我想做的是提供从内容形状向下的替代形状。这对于内容本身和字段\u MediaLibraryPicker来说非常简单(因为形状跟踪器自动提供了适用的替代方案(如上所述))

我的问题在于为媒体和部分、图像和摘要部分提供替代方案

查看Orchard网站上的文档,我认为如果我在我的主题中创建了一个新的形状,位于at/Views/Parts/Image.Summary-VistaImage.cshtml,它会被引用,但它不会(虽然如果我删除'-VistaImage',这个形状确实会被使用,但我相信这会改变每个内容类型的形状,这不是我想要做的)

任何关于我应如何达到这一要求的建议/指示都将被告知


谢谢。

根据个人经验,当你在形状中得到那么低的级别时,如果有的话,替代方案就不能很好地工作。我处理这些情况的最佳方法是选择上面下一个适用的形状,并执行一个if语句来确定它是否是你想要的内容,在这种情况下,删除默认的形状显示和imp创建自己的硬编码布局

例如,如果simplay的形状是@display(Model.whatever),而你知道display对你来说是垃圾,那么看看这个模型

例如,我很难为引导创建4级菜单,因为它通常只处理2级,所以我操纵了最低级别的形状。即:

if{Model.Items.Any()}{
   //code to generate another submenu for that menuItem
}
这甚至可能不是解决这个问题的最正确方法,只是我找到的解决方案起了作用


因此,在您的情况下,我将使用VS debug和断点来呈现mediafield选择器,并找出模型是否包含任何信息,让您知道这是您的VistaImage内容。

谢谢,这非常有帮助