是否可以在 2sxc 的列表中创建一个列表?

Is it possible to make a list within a list in 2sxc?

DNN 9.3.2 / 2sxc 10.25.2

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

但是,在很多情况下,我需要 "list within a list" 这样我就可以在重复的内容列表中有一个重复的内容列表,并通过模板管理设计,而不是依靠我的内容编辑器来写 HTML。示例见屏幕截图。

在这个设计中,我有 1 个启用了 "List" 的模块,在那个模块中我有 3 个名为 "Spotlights" 的项目,它们只是内容项目。但是在每个 "Spotlight" 中,都有一个 "PRE-CONFERENCE SESSIONS" 的列表,每个列表都有一个标题,link,以及每个项目的特定样式(颜色)。在此设置中,我只是将 "PRE-CONFERENCE SESSIONS" 部分设为 DNN 编辑器 (tinymce),然后手动编辑 HTML 以制作 FontAwesome 插入符并指定 CSS class 样式相应地每个(每种颜色都很重要,因为它表示 session 的类型)。这种方法有效但很麻烦,并且需要我作为开发人员来维护列表,因为内容编辑不知道 HTML。

我知道我可以将这 1 个模块分成 3 个模块,其中每个 Spotlight 是 Header 内容,然后 PRE-CONFERENCE SESSIONS links 是内容项,但我希望将所有内容都包含在 1 个模块中以便于维护。我还 运行 进入设计中的其他场景,在这些场景中,某种 "sub"(或嵌套的)列表内容将非常有用。

是否可以在 2sxc 中执行此操作?或者有更好的方法来实现这个目标吗?

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

我为此使用了内容块的概念。在主 Accordion 中,我添加了另一个名为 AccordionItem 的字段,并将其设为实体类型,将输入类型设为 ContentBlocks。这使您能够 select 在您的内容中添加另一个 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)的字段,并根据需要将它们输出到模板中。希望这有帮助。

作为补充信息:2sxc 11.0 增强了列表中的列表,因此 属性 列表中的项目的编辑工具栏实际上也具有 move-up/move-down 等按钮。 享受 ;)