Octobercms-在主题设置上呈现中继器组中的字段

时间:2018-09-05 20:12:35

标签: field repeater octobercms octobercms-backend

我尝试在主题设置yaml文件上使用中继器组。所以我将上面的代码添加到我的theme / config / fields.yaml:

fields:
    cont:
        tab: Content
        name: cont
        label: Content
        type: text
    content:
        tab: Content
        label: Content
        prompt: Add content block
        span: full
        type: repeater

        groups:
            textarea:
                name: Textarea
                description: Basic text field
                icon: icon-file-text-o
                fields:
                    text_area:
                        label: Text Content
                        type: textarea
                        size: large
            quote:
                name: Quote
                description: Quote item
                icon: icon-quote-right
                fields:
                    quote_position:
                        span: auto
                        label: Quote Position
                        type: radio
                        options:
                            left: Left
                            center: Center
                            right: Right
                    quote_content:
                        span: auto
                        label: Details
                        type: textarea

在主题设置后端上一切正常,我可以在字段中插入数据。

现在,我尝试在我的cms页面上呈现这些字段,但是无论如何我都无法成功。我尝试:

{% for fields in this.theme.content%}
     {{ fields.textarea }}
{% endfor %}

{% for fields in this.theme.contents %}
    {% if fields.groups == "textarea" %}
        {{fields.groups.textarea}}
    {% endif %}
{% endfor %}

但是我无法渲染字段。

1 个答案:

答案 0 :(得分:2)

嗯,似乎有些混乱,有些错误的变量名:)

让我们解决这个问题。

  

最终结果如下:

{% for field in this.theme.content %}            
    {% if field._group == "textarea" %}
        <h1>{{field.text_area}}</h1>
    {% endif %}
    {% if field._group == "quote" %}
        <h1>{{field.quote_position}}</h1>
        <h1>{{field.quote_content}}</h1>
    {% endif %}     
{% endfor %}
  

错误是什么 [如果您急着跳过此:)] (此处为您进行改进,它没有任何其他用途:)

您正在使用content,因此需要确保在此处使用正确的变量名,您可以使用this.theme.content 而不是 this.theme。>>内容<<< / strong>

下一个field._group 不是 fields.groups

最后 fields

fields:
  text_area:
  ....

所以您需要使用它们field.text_area 而不是 field.textareafield.quote_content,依此类推...

如果发现任何困难,请发表评论。