这是我的情景......
使用Orchard CMS 1.7.1我使用Orchard UI创建了一个名为“VistaImage”的自定义内容类型。此内容类型基于媒体库选取器字段定义一个字段,该字段也称为“VistaImage”。
Vista图像组的投影作为Widget参考放置在“特色”区域中并且运行良好。
在结果页面上使用Shape Tracer,形状层次结构如下所示:
Zone [Featured]
Widget
List
Content Alt: Content-VistaImage
Fields_MediaLibraryPicker Alt: Fields.MediaLibraryPicker-VistaImage
Media
Parts_Image_Summary
我想要做的是从内容形状向下提供替代形状。对于内容本身和Fields_MediaLibraryPicker来说这很容易(因为Shape Tracer会自动提供适用的替代方案(如上所示))。
我的问题在于为Media和Parts_Image_Summary部分提供替代方案。
在Orchard网站上查看Alternates的文档,我想如果我在/Views/Parts/Image.Summary-VistaImage.cshtml的主题中创建了一个新形状,那么这将被引用,但它没有(虽然如果我删除'-VistaImage',形状确实被使用了,但是这样,我相信为每个内容类型改变这个形状,这不是我想做的。)
关于我应该如何处理这一要求的任何建议/指示都将被适用。
感谢。
答案 0 :(得分:1)
从个人经验来看,当你的形状处于较低水平时,替代品不会很好地工作,如果有的话。我最好处理这些场景的唯一方法是选择它上面的下一个适用的形状,然后执行if语句来确定它是否是你想要的内容,在这种情况下删除默认的形状显示并实现你自己的硬编码布局
例如,如果形状simplay说@display(Model.whatever)并且您知道显示对您来说是垃圾,请查看模型。
例如,我无法为bootstrap创建一个4级菜单,因为它通常仅处理2个级别,所以我操纵了最低级别的形状。即:
if{Model.Items.Any()}{
//code to generate another submenu for that menuItem
}
这甚至可能不是解决这个问题的最正确方法,只是我找到的解决方案已经有效。
因此,在您的情况下,我会使用VS调试和断点来呈现媒体字段选择器,并查明模型是否包含任何信息,让您知道它的VistaImage内容。