On Octobercms Static Pages Plugin Render A Group Of Fields With A Repeater Inside
On "content/static-pages/index.htm" i can see the saved fields that can be rendered on page:
Then on partials i can use {{ data.section_color }} to render a field.
Now i want to create a repeater field inside "meta/groups.yaml" like this:
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
I can see the field on my backend and i can save data with it. On "content/static-pages/index.htm" now i have:
[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"
==
The problem is that i can't find a way to render this field. How can i render repeater field inside repeater group? How can i render for example "section_title2" field?
Answer
Hmm, lest assume that you are adding carousel2
ok we added it's markup in the meta/groups.yaml so basically we are making carousel2 group.
so now solution , how we show its information/data.
first we need to create partial in cms blocks/carousel2 so carousel2 will be placed in blocks folder where other partials are (simple / react / etc ...).
ok now we need to add this content inside it
<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>
ok now you can access all fields inside for loop. we used loop because your group is repeater.
let's understand it a bit.
data : = this variable is passed to each partial. its data regarding your group, in our case its carousel2
now data has 2 thingsfirst : group name , second our real data which we saved in page.
to get that saved data we can use data.section_carousel2 now as we know its type of repeater so to get that data we need to add for loop.
now in for loop we used slide variable which will get all data for all fields within repeater for each iteration.
so now within this loop you have your fields slide.section_carouselimage2 as we declared in meta/groups.yaml file.
If anything is not clear or if its not working please comment.
Related Questions
- → OctoberCMS Backend Loging Hash Error
- → "failed to open stream" error when executing "migrate:make"
- → OctoberCMS - How to make collapsible list default to active only on non-mobile
- → Create plugin that makes objects from model in back-end
- → October CMS Plugin Routes.php not registering
- → OctoberCMS Migrate Table
- → How to install console for plugin development in October CMS
- → OctoberCMS Rain User plugin not working or redirecting
- → October CMS Custom Mail Layout
- → October CMS - How to correctly route
- → October CMS create a multi select Form field
- → How to update data attribute on Ajax complete
- → October CMS - Conditionally Load a Different Page