如何在Orchard中定义备用零件形状

时间:2013-11-15 11:24:32

标签: orchardcms

这是我的情景......

使用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',形状确实被使用了,但是这样,我相信为每个内容类型改变这个形状,这不是我想做的。)

关于我应该如何处理这一要求的任何建议/指示都将被适用。

感谢。

1 个答案:

答案 0 :(得分:1)

从个人经验来看,当你的形状处于较低水平时,替代品不会很好地工作,如果有的话。我最好处理这些场景的唯一方法是选择它上面的下一个适用的形状,然后执行if语句来确定它是否是你想要的内容,在这种情况下删除默认的形状显示并实现你自己的硬编码布局

例如,如果形状simplay说@display(Model.whatever)并且您知道显示对您来说是垃圾,请查看模型。

例如,我无法为bootstrap创建一个4级菜单,因为它通常仅处理2个级别,所以我操纵了最低级别的形状。即:

if{Model.Items.Any()}{
   //code to generate another submenu for that menuItem
}

这甚至可能不是解决这个问题的最正确方法,只是我找到的解决方案已经有效。

因此,在您的情况下,我会使用VS调试和断点来呈现媒体字段选择器,并查明模型是否包含任何信息,让您知道它的VistaImage内容。