2013-11-15 54 views
0

来定义备用零件形状这里是我的情况...如何在果园

利用果园CMS 1.7.1我已经创建了一个名为“VistaImage”使用果园UI自定义的内容类型。此内容类型基于媒体库选取器字段定义一个字段,该字段也被命名为'VistaImage'。

A投影Vista图像组作为Widget引用放置在'精选'区域并且运行良好。

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

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

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

谢谢。

回答

1

从个人的经验来看,当你在形状上达到那么低的水平时,如果有的话,替代品的效果并不好。我最好处理这些场景的唯一方法是选择上面的下一个适用形状,并执行if语句以确定是否需要其内容,在这种情况下,可以移除默认形状显示并实现自己的硬编码布局。

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

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

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

这可能不是解决这个问题的最正确的方法,只是我找到的解决方案工作。

所以在你的情况下,我会使用VS调试和断点来呈现mediafield选择器,并找出模型是否包含任何让你知道它是你的VistaImage内容的信息。

+0

谢谢,这一直很有帮助 – Neilski