如何从Orchard CMS中的分配的contentpart中获取值

健八上尉

我正在使用Orchard CMSv1.8.x。我们添加了FlexSlider模块,并使其链接到站点的特定区域,我们在FlexSliderPart对象中添加了一个名为“幻灯片链接”的字段。

在此处输入图片说明

现在,所有这些工作都非常简洁。但是我绝对不知道如何在前端引用这个新领域。FlexSliderWidgetViewModel仅包含“标题”和“图像路径”的字段。我不知道如何检索SlideLink(和SubTitle)字段:

namespace Tekno.FlexSlider.ViewModels
{
    public class FlexSliderWidgetViewModel
    {
        public string Title { get; set; }
        public string ImagePath { get; set; }


    }
}

我的看法:

@using Tekno.FlexSlider.ViewModels

@{
    Style.Require("FlexSlider");
    Script.Require("FlexSlider");

    var items = (IEnumerable<FlexSliderWidgetViewModel>)Model.SlideItems;
}
<div class="flexslider">
    <ul class="slides">
        @foreach (var item in items)
        {
            <li>
                @if (item.ImagePath != "")
                {
                    <a href="@(/*what must I do here?*/)"><img src="@Display.ResizeMediaUrl(Path: item.ImagePath, Height: 400, Mode: "crop")" /></a>
                }
                <span class="slide-text">@item.Title</span>
            </li>
        }
    </ul>
    <span class="slide-text-bottom"></span>
</div>

驾驶员显示功能:

protected override DriverResult Display(FlexSliderWidgetPart part, string displayType, dynamic shapeHelper)
        {
            var items = _contentManager.Query<FlexSliderPart, FlexSliderPartRecord>("FlexSlider")
                                       .Where(i => i.GroupId == part.GroupId).OrderBy(i => i.Sort)
                                       .List()
                                       .Select(i => new FlexSliderWidgetViewModel()
             {
                 ImagePath = ((MediaLibraryPickerField)i.Fields.Single(f => f.Name == "Picture"))
                                                        .MediaParts
                                                        .FirstOrDefault() == null ? "" : ((MediaLibraryPickerField)i.Fields.Single(f => f.Name == "Picture")).MediaParts.First().MediaUrl,
                 Title = i.Get<TitlePart>().Title

             });

            return ContentShape("Parts_FlexSliderWidget",
                () => shapeHelper.Parts_FlexSliderWidget(SlideItems: items));
        }
哈扎

我快速浏览了一下代码,您将无法以模块当前的工作方式访问这些字段。基本上,它是在驱动程序显示方法中访问内容项,然后使用认为发送到视图所必需的两部分数据(标题和图像)创建视图模型。我建议更改驱动程序的Display方法,以发回整个内容项而不是该视图模型,然后可以直接访问从视图附加的字段。

如果您没有访问该驱动程序的权限,那么我想可以抓住视图中的内容管理器并重做该驱动程序正在执行的所有工作,以便可以访问内容项。我不推荐这种方法。。。

抱歉,这可能不是您想要的答案。

编辑

这基本上是伪代码,因为我无权访问该模块以实际查看其是否有效,但它应该为您指明某种方向。

protected override DriverResult Display(FlexSliderWidgetPart part, string displayType, dynamic shapeHelper)
{
    var items = _contentManager.Query<FlexSliderPart, FlexSliderPartRecord>("FlexSlider")
                               .Where(i => i.GroupId == part.GroupId).OrderBy(i => i.Sort)
                               .List();

    return ContentShape("Parts_FlexSliderWidget",
        () => shapeHelper.Parts_FlexSliderWidget(SlideItems: items));
}

然后在您看来:

@using Tekno.FlexSlider.ViewModels

@{
    Style.Require("FlexSlider");
    Script.Require("FlexSlider");

}
<div class="flexslider">
    <ul class="slides">
        @foreach (var part in Model.SlideItems)
        {
            dynamic item = part.ContentItem;

            <li>
                <a href="@item.FlexSliderPart.SlideLink.Value"><img src="@Display.ResizeMediaUrl(Path: item.FlexSliderPart.MediaParts[0].MediaUrl, Height: 400, Mode: "crop")" /></a>
                <span class="slide-text">@item.TitlePart.Title</span>
            </li>
        }
    </ul>
    <span class="slide-text-bottom"></span>
</div>

这里重要的是将内容项强制转换为动态项,以便您可以访问所有字段等。我也从未使用过1.8中的新Media项,所以...不知道我是否正确地访问了它。我不喜欢^^

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Orchard CMS中处理来自JS的跨域Web服务调用

来自分类Dev

如何从Orchard URL中删除OrchardLocal?

来自分类Dev

如何在Orchard CMS中从数据库中获取表数据?

来自分类Dev

Orchard中的静态页面-如何实现它们

来自分类Dev

如何在Orchard CMS上使用Lucene查询语法

来自分类Dev

Orchard CMS:如何实现自定义字段索引?

来自分类Dev

在Orchard CMS中的Createing事件期间如何访问零件属性

来自分类Dev

在Orchard CMS中,如何根据附加零件的属性值获取特定内容类型的所有项目

来自分类Dev

如何将Live Writer连接到Orchard CMS

来自分类Dev

如何使用查询/投影从Orchard 1.7+ CMS中的分类术语创建菜单?

来自分类Dev

如何在Orchard中获取用户创建日期?

来自分类Dev

您如何仅在Orchard CMS中获得图像URL?

来自分类Dev

如何在python Windows 64位中安装Orchard?

来自分类Dev

在Orchard CMS中访问HttpConfiguration

来自分类Dev

如何在Orchard模块中实现多线程?

来自分类Dev

如何在Orchard CMS中跳过显示内容项?

来自分类Dev

如何在Orchard视图覆盖中获取夏季图像URL

来自分类Dev

如何将Orchard CMS Admin控件内联

来自分类Dev

如何在Orchard CMS中从数据库中获取表数据?

来自分类Dev

如何在Orchard cms数据库中检测已删除的数据条目?

来自分类Dev

如何在Orchard中获取用户创建日期?

来自分类Dev

如何在Orchard中获取CurrentSite对象?

来自分类Dev

在Orchard CMS中访问HttpConfiguration

来自分类Dev

如何通过Orchard CMS中的代码或配方将权限分配给自定义角色?

来自分类Dev

Orchard CMS-如何访问容器中的物品?

来自分类Dev

如何从内部函数分配的html页面中获取值

来自分类Dev

如何从字段中获取值并分配给TStringList?

来自分类Dev

覆盖 Orchard CMS 中的 Orchard Setup 视图

来自分类Dev

如何为数组中创建的对象分配和获取值?

Related 相关文章

  1. 1

    如何在Orchard CMS中处理来自JS的跨域Web服务调用

  2. 2

    如何从Orchard URL中删除OrchardLocal?

  3. 3

    如何在Orchard CMS中从数据库中获取表数据?

  4. 4

    Orchard中的静态页面-如何实现它们

  5. 5

    如何在Orchard CMS上使用Lucene查询语法

  6. 6

    Orchard CMS:如何实现自定义字段索引?

  7. 7

    在Orchard CMS中的Createing事件期间如何访问零件属性

  8. 8

    在Orchard CMS中,如何根据附加零件的属性值获取特定内容类型的所有项目

  9. 9

    如何将Live Writer连接到Orchard CMS

  10. 10

    如何使用查询/投影从Orchard 1.7+ CMS中的分类术语创建菜单?

  11. 11

    如何在Orchard中获取用户创建日期?

  12. 12

    您如何仅在Orchard CMS中获得图像URL?

  13. 13

    如何在python Windows 64位中安装Orchard?

  14. 14

    在Orchard CMS中访问HttpConfiguration

  15. 15

    如何在Orchard模块中实现多线程?

  16. 16

    如何在Orchard CMS中跳过显示内容项?

  17. 17

    如何在Orchard视图覆盖中获取夏季图像URL

  18. 18

    如何将Orchard CMS Admin控件内联

  19. 19

    如何在Orchard CMS中从数据库中获取表数据?

  20. 20

    如何在Orchard cms数据库中检测已删除的数据条目?

  21. 21

    如何在Orchard中获取用户创建日期?

  22. 22

    如何在Orchard中获取CurrentSite对象?

  23. 23

    在Orchard CMS中访问HttpConfiguration

  24. 24

    如何通过Orchard CMS中的代码或配方将权限分配给自定义角色?

  25. 25

    Orchard CMS-如何访问容器中的物品?

  26. 26

    如何从内部函数分配的html页面中获取值

  27. 27

    如何从字段中获取值并分配给TStringList?

  28. 28

    覆盖 Orchard CMS 中的 Orchard Setup 视图

  29. 29

    如何为数组中创建的对象分配和获取值?

热门标签

归档