【问题标题】:How to define alternate part shapes in Orchard如何在 Orchard 中定义替代零件形状
【发布时间】:2013-11-15 11:24:32
【问题描述】:

这是我的场景...

使用 Orchard CMS 1.7.1 我使用 Orchard UI 创建了一个名为“VistaImage”的自定义内容类型。此 Content Type 定义了一个基于 Media Library Picker Field 的字段,该字段也称为“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”,形状确实会被使用,但是我相信这会为每个内容类型更改这个形状,这不是我想要做的)。

任何关于我应该如何处理此要求的建议/指示都会受到重视。

谢谢。

【问题讨论】:

    标签: orchardcms


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 谢谢,这很有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2012-06-06
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    相关资源
    最近更新 更多