【问题标题】:Is it possible to make a list within a list in 2sxc?是否可以在 2sxc 的列表中创建列表?
【发布时间】:2020-05-01 16:15:16
【问题描述】:

DNN 9.3.2 / 2sxc 10.25.2

使用 2sxc Content 和 c# Razor 模板,我能够创建包含一些字段的内容类型并在模板上启用列表模式,以便我可以拥有项目列表并对其进行管理。这很棒,因为它让我可以在页面上拥有一 (1) 个 2sxc 内容模块,并根据需要列出尽可能多的内容。

但是,在许多情况下,我需要一个“列表中的列表”,以便我可以在重复的内容列表中拥有重复的内容列表,并通过模板管理设计,而不是依赖我的内容编辑器来编写HTML。示例见截图。

在这个设计中,我有 1 个启用了“列表”的模块,在该模块中,我有 3 个名为“Spotlights”的项目,它们只是内容项目。但是在每个“Spotlight”中,都有一个“会前会议”列表,每个项目都有一个标题、链接和每个项目的特定样式(颜色)。在此设置中,我只是将“会前会议”部分设置为 DNN 编辑器(tinymce),然后手动编辑 HTML 以制作 FontAwesome 插入符号并分配一个 CSS 类以相应地设置每个样式(每种颜色都很重要,因为它表示会话类型)。这种方法有效但很麻烦,并且需要我作为开发人员来维护列表,因为内容编辑器不知道 HTML。

我知道我可以将这 1 个模块分成 3 个模块,其中每个 Spotlight 是标题内容,然后 PRE-CONFERENCE SESSIONS 链接是内容项,但我希望将所有内容都包含在 1 个模块中以方便使用的维护。我还遇到了设计中的其他场景,其中一种“子”(或嵌套)列表内容非常有用。

是否可以在 2sxc 中执行此操作?还是有更好的方法来实现这一点?

【问题讨论】:

    标签: razor dotnetnuke 2sxc


    【解决方案1】:

    我做了类似的事情,我创建了一个 Bootstrap Accordion,然后在其中还有一个嵌套的 Bootstrap Accordion。这是一个例子,也许它会有所帮助。 https://www.crawfordinsurancegroup.com/commercial-insurance 展开 Target Markets Accordion,您会在其中看到一个嵌套的。

    我为此使用了内容块的概念。在主 Accordion 中,我添加了另一个名为 AccordionItem 的字段,并将其设为实体类型,并将输入类型设为 ContentBlocks。这使您能够在您的内容中选择另一个 2sxc 实体, https://www.screencast.com/t/iwCn2zmH8H

    在您的模板中,您可以添加一个 foreach 来遍历内容项并呈现它们

     @foreach(var cb in AsDynamic(Content.AccordionItem)){
                                <div class="panel panel-default">
                                    <div class="panel-heading" role="tab" id="headingOne">
    
                                    <a role="button" data-toggle="collapse" data-parent="#accordion-@(Dnn.Module.ModuleID)" href="#collapse-@cb.EntityId" aria-expanded="true" aria-controls="collapseOne">
                                        <strong>@cb.Title</strong> 
                                    </a>
                                    <div class="panel-title"></div>
                                    </div>
    
    
                                    <div id="collapse-@cb.EntityId" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne">
                                        <div class="panel-body">
                                            @Html.Raw(cb.Content) 
                                        </div>
                                    </div>
                                </div>
    
                            }
    

    所以在我的示例中,我正在创建新的 Bootstrap 手风琴。您可以引用作为嵌套实体一部分的字段(在我的情况下为 cb),并根据需要将它们输出到模板中。希望这会有所帮助。

    【讨论】:

    • 这是一个很好的解决方案!我能够在我的暂存环境中轻松实现这一点。
    【解决方案2】:

    正如附加信息:2sxc 11.0 增强了列表中的列表,因此项目中的属性列表的编辑工具栏实际上也获得了上移/下移等按钮。 享受;)

    【讨论】:

    • 我看到了,它非常有用!
    猜你喜欢
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 2015-01-20
    相关资源
    最近更新 更多