0

这是我的场景...

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

一组 Vista 图像的投影被放置在“精选”区域中作为小部件参考并且效果很好。

在结果页面上使用 Shape Tracer,形状层次结构如下所示:

Zone [Featured]
   Widget
      List
          Content                         Alt: Content-VistaImage
             Fields_MediaLibraryPicker    Alt: Fields.MediaLibraryPicker-VistaImage
                Media
                    Parts_Image_Summary

我想要做的是从内容形状向下提供替代形状。这对于 Content 本身和 Fields_MediaLibraryPicker 来说很容易(因为 Shape Tracer 会自动提供适用的替代方案(如上所示))。

我的问题在于为 Media 和 Parts_Image_Summary 部分提供替代品。

查看Orchard 网站上Alternates的文档,我想如果我在 /Views/Parts/Image.Summary-VistaImage.cshtml 的主题中创建一个新形状,这将被引用,但它没有(尽管如果我删除了形状确实使用的“-VistaImage”,但我相信这会为每个内容类型更改这个形状,这不是我想要做的)。

任何关于我应该如何处理这个要求的建议/指导都会得到重视。

谢谢。

4

1 回答 1

1

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

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

例如,我在为引导程序创建 4 级菜单时遇到了麻烦,因为它通常只处理 2 级,所以我操纵了最低级别的形状。IE:

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

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

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

于 2014-02-06T00:17:46.203 回答