home-icon
Datacollections
Last updated: Feb 09, 2024

Introduction

Datacollections are a great way of organizing similar data like for example faq entries, customer reviews, etc..

If you have a FAQ datacollection for example, you can make an infinite amount of entries within this datacollection, representing your FAQ entries. All of these entries will have the same amount and types of elements that you have specified. Remember that a datacollection consists of entries. The datacollection holds the global settings and the entries within the datacollection hold the specific FAQ entries in this example.

Adding datacollections

Adding a datacollection only requires a name. After adding the datacollection, you can click 'configure' and then 'add element'.

Adding an element to a datacollection works in the same way as when you would add an element to a section or form for example. You simply choose the type of element, specify a name and optionally a tooltip and validation.

These elements will be presented to the content manager when they add a datacollection entry.

Then click save and the datacollection is ready for use.

Datacollection entries

To add a datacollection entry, go to the specific datacollection and click 'add entry'.

Now all of the elements you added to this datacollection are presented.
When the user has completed all required fields, and saves the entry, it will be stored.

Remember that new entries are unpublished by default, meaning they are not visible on the website. If you want to publish an entry, edit the entry and toggle the published status.

Using datacollections

Datacollections are only usefull if you can include them in you sections. This is how you can include the datacollection data in your section(s).

<?php foreach($webigniter->getDatacollectionEntries(name: 'FAQ', limit: 10) as $faq_item):?>
   <h1><?=$faq_item['data']['question'];?></h1>
   <p><?=$faq_item['data']['answer'];?></p>
<?php endforeach; ?>

Let's brake it down into piecies.

The PHP foreach statement tells the section to loop through all entries and store each entry in the variable $faq_item
Within the foreach a Webigniter method is called: $webigniter->getDatacollectionEntries(name: 'FAQ', limit: 10).
This will get the FAQ entries from the datacollection with the name 'FAQ. Limit: 10 means that it will retreive no more that 10 entries of this datacollection. You can also add:
unpublished: true
to also retreive unpublished entries.
orderBy: datacollection field name to order the results by.
orderType: specify how you want to order the results (allowed values: ASC, DESC and RAND).
filterBy: datacollection field names you want to use for filtering (must be an array, ['name', 'title'] for example).
filterValue: specify the value the filtered fields should contain (also an array, ['john', 'mark'] for example.

When orderType is ASC or DESC, specify an orderBy, this is not necessary when orderType is RAND.
You can also use id in the filterBy parameter to search for a specific entry.

Now that we have our faq items stored in $faq_item, we can start displaying our entries.
All data provided by the user in the CMS is stored in $faq_item['data'], this means you can display the entry data, by using <?=$faq_item['data']['question'];?> to display the element in the entry with the name 'question'. In this case the element 'question' is a simple text element, so I can access by just using 'question', other element types may need a different approach, check the manual to find out how each elementtype should be retreived.

There are also 3 extra elements added by default, 'id', 'created_at' and 'updated_at'. These three can be displayed using <?=$faq_item['id'];?>, <?=$faq_item['created_at'];?>and <?=$faq_item['updated_at'];?>.

1