在octobercms上,静态页面插件呈现一组内部带有转发器的字段

时间:2017-12-01 17:30:27

标签: octobercms octobercms-plugins octobercms-backend octobercms-viewbag

在“content / static-pages / index.htm”上,我可以看到可以在页面上呈现的已保存字段:

然后在部分我可以使用{{data.section_color}}来渲染一个字段。

现在我想在“meta / groups.yaml”中创建一个转发器字段,如下所示:

carousel2:
  name: Carousel2
  description: Carousel2
  icon: icon-file-image-o
  fields:
    section_carousel2:
       type: repeater
       prompt: Add new subitem
       form:
          fields:
            section_carouselimage2:
              label: Image2
              type: mediafinder
              mode: image
            section_carouseltitle2:
              label: Title2
              type: text
            section_carouselsubtitle2:
              label: Subtitle2
              type: textarea
              size: small

我可以在后端看到该字段,我可以用它保存数据。在“content / static-pages / index.htm”现在我有:

[viewBag]
title = "Home"
url = "/"
layout = "static"
is_hidden = 0
navigation_hidden = 0
sections[0][section_carousel2][1][section_carouselimage2] = "/carousel/bg-1.jpg"
sections[0][section_carousel2][1][section_carouseltitle2] = "Carousel2 Title"
sections[0][section_carousel2][1][section_carouselsubtitle2] = "Carousel2 Subitle"
sections[0][section_carousel2][2][section_carouselimage2] = "/carousel/bg-2.jpg"
sections[0][section_carousel2][2][section_carouseltitle2] = "Carousel2 Title2"
sections[0][section_carousel2][2][section_carouselsubtitle2] = "Carousel2 Subtitle2"
sections[0][_group] = "carousel2"
==

问题是我无法找到渲染此字段的方法。如何在转发器组中呈现转发器字段?我如何渲染例如“section_title2”字段?

1 个答案:

答案 0 :(得分:1)

嗯,以免假设您要添加 carousel2

好的,我们在 meta / groups.yaml 中添加了它的标记,所以基本上我们正在制作 carousel2 组。

所以现在解决方案,我们如何显示其信息/数据。

  

首先我们需要在cms blocks / carousel2 中创建部分,因此carousel2将被放置在其他部分所在的块文件夹中(simple / react / etc ...)。

现在我们需要在其中添加此内容

<section>
  <!-- render inner section -->
    {% for slide in data.section_carousel2 %}
        <!-- this block will repeat / based on added slides( so probably slider markup will be here) -->
        <p>{{ slide.section_carouselimage2 }}</p>
        <p>{{ slide.section_carouseltitle2 }}</p>
        <p>{{ slide.section_carouselsubtitle2 }}</p>        
    {% endfor %}
</section>

好了,现在你可以访问for循环中的所有字段了。我们使用循环,因为你的组是转发器。

让我们理解一下。

  

data:=将此变量传递给每个部分。关于您的小组的数据,在我们的案例中是 carousel2

现在数据 2件事 第一件 团体名称 第二我们的我们保存在页面中的 真实数据

要获取保存的数据,我们现在可以使用 data.section_carousel2 ,因为我们知道它的转发器类型,以便获取我们需要为循环添加的数据。

现在在for循环中我们使用了 slide 变量,它将为每次迭代获取转发器中所有字段的所有数据。

  

所以现在在这个循环中你有你的字段 slide.section_carouselimage2 ,就像我们在 meta / groups.yaml 文件中声明的那样。

如果有任何不清楚或不起作用请发表评论。