# Eigen content met Objecten

Met de module Objecten model je content die geen product is: diensten, boekingen, projecten, teamleden, landingspagina's, alles wat je storefront nodig heeft. Je definieert een **objecttype** (het model: de naam en de eigenschappen) en maakt vervolgens **records** van dat type aan (de daadwerkelijke items). Elk type krijgt een eigen item in de zijbalk onder **Content** → **Objecten**, onder zijn meervoudsnaam, en je storefront kan de records uitlezen via de [Objects API](/nl/api/objects/records). Drie pagina's gaan dieper: [Publiceren en adressen](/nl/docs/objects/publishing), [Vertalingen](/nl/docs/objects/translations) en [Veldsoorten en herhaalblokken](/nl/docs/objects/field-kinds).

Objecten verschijnt in de zijbalk onder de groep **Content** wanneer de module is ingeschakeld voor het actieve bedrijf. Elk lid van het bedrijf ziet dezelfde schermen en acties.

## Een objecttype aanmaken

1. Open **Content** → **Objecten** in de zijbalk.
2. Klik op **Nieuw type**. Er opent een venster met de titel **Nieuw objecttype** met één naamveld (placeholder: **Naam (bijv. Service)**). De knop **Aanmaken** blijft uitgeschakeld totdat je een naam typt.
3. Klik op **Aanmaken**. Je komt direct op de bouwpagina van het nieuwe type terecht, waar je de eigenschappen definieert.

Het Objecten-overzicht toont al je typen in een tabel:

| Kolom | Beschrijving |
| --- | --- |
| Naam | De meervoudsnaam van het type. Klik op de rij om de recordlijst te openen. |
| Sleutel | De identifier van het type. Wordt bij het aanmaken vastgelegd en kan daarna niet meer worden gewijzigd. |
| Eigenschappen | Aantal actieve (niet-gearchiveerde) eigenschappen van het type. |
| Records | Aantal records van dit type. |

Het tandwielicoon aan het einde van elke rij opent de typebouwer.

## Een type bewerken in de typebouwer

In de typebouwer geef je een type vorm nadat je het hebt aangemaakt. Open de bouwer via het tandwielicoon op het Objecten-overzicht, of via de knop **Type** op de recordlijst van het type. Vanuit de bouwer brengt **Records bekijken** je de andere kant op, naar de recordlijst.

Je kunt de **Naam** en **Meervoudsnaam** van het type bewerken en op **Opslaan** klikken (een korte "Opgeslagen." bevestigt dit). De sleutel kan niet worden gewijzigd; de bouwer toont **Sleutel: {key} (kan niet worden gewijzigd)**.

### Een eigenschap toevoegen

1. Klik op **Eigenschap toevoegen**.
2. Vul het **Label** in (placeholder: **Label (bijv. Budget)**). Het veld **Sleutel** wordt automatisch ingevuld op basis van het label terwijl je typt, totdat je de sleutel zelf bewerkt.
3. Kies een **Type** (zie de tabel hieronder) en vul de eventuele typespecifieke velden in. Zet **Vertaalbaar** aan voor een eigenschap die je in meerdere talen wilt schrijven (zie [Vertalingen](/nl/docs/objects/translations)).
4. Vink optioneel **Verplicht** aan.
5. Klik op **Toevoegen**. De knop blijft uitgeschakeld totdat zowel Label als Sleutel zijn ingevuld.

Eigenschapssleutels zijn, net als typesleutels, definitief zodra ze zijn aangemaakt.

| Eigenschapstype | Wat het opslaat | Opmerkingen |
| --- | --- | --- |
| Tekst | Een korte regel tekst | |
| Lange tekst | Tekst met meerdere regels | Kan niet worden gebruikt als sorteerkolom of lijstfilter. |
| Opgemaakte tekst | Opgemaakte tekst | |
| Getal | Een getal | |
| Geld | Een bedrag | Ingevoerd met een punt of komma als decimaalteken (bijv. `4950.00`), in lijsten getoond als een in EUR opgemaakt bedrag. |
| Ja/nee | Een selectievakje | In lijsten getoond als Ja of Nee. |
| Keuzelijst | Eén keuze uit een vaste lijst | Voer de opties in in het tekstvak van het venster, één optie per regel. |
| Datum | Een datum | |
| Datum en tijd | Een datum en een tijd | |
| Klant | Een koppeling naar een klant | Alleen beschikbaar wanneer de module Klanten is ingeschakeld. Lijsten tonen de naam van de klant. |
| Afbeelding, Afbeeldingenlijst | Eén of meer afbeeldingen uit de mediabibliotheek | |
| Link, Pictogram, Kleur, E-mail, Telefoon, Tags | Een link, pictogramnaam, kleur, e-mailadres, telefoonnummer of lijst met tags | |
| Recordverwijzing, Lijst met recordverwijzingen | Een koppeling naar een of meer records van andere typen | |
| Herhaalblok | Een lijst rijen met dezelfde velden | |
| Secties | Een pagina opgebouwd uit contentsecties | Zie [Secties-eigenschappen](#secties-eigenschappen) hieronder. |

Elke soort, de limieten ervan en hoe de API ze teruggeeft staan in [Veldsoorten en herhaalblokken](/nl/docs/objects/field-kinds).

### Secties-eigenschappen

Een Secties-eigenschap maakt van een deel van een record een kleine paginabouwer. Bij het toevoegen vraagt het venster **Welke secties mag deze pagina gebruiken?** met een lijst aanvinkbare sectievormen; je moet er minstens één kiezen. Je stelt ook een **Minimum** (0-100) en **Maximum** (1-100) aantal items in; het maximum moet groter dan of gelijk aan het minimum zijn.

Sectievormen zelf beheer je niet op deze schermen. Als er nog geen bestaan, meldt het venster **Er bestaan nog geen sectievormen. Maak er eerst een voordat je een secties-eigenschap toevoegt.**

Secties-eigenschappen verschijnen nooit als kolommen in de recordlijst.

### De ingebouwde naam-eigenschap

Elk type heeft een `name`-eigenschap. Die kan niet worden gearchiveerd en de verplicht-instelling kan niet worden gewijzigd; wanneer de eigenschap verplicht is, toont hij simpelweg een `verplicht`-badge. De naam van het record wordt gebruikt als titel op de detailpagina en wordt vetgedrukt weergegeven in de recordlijst.

### Eigenschappen herordenen, verplicht maken en archiveren

- **Herorden** eigenschappen met de sleepgreep (gripicoon) of de pijltjes omhoog/omlaag per rij. De wijziging geldt direct en wordt teruggedraaid als het opslaan mislukt.
- **Verplicht** is een selectievakje op elke eigenschapsrij.
- **Archiveer** een eigenschap met het archiveericoon per rij. Archiveren is omkeerbaar: de eigenschap verdwijnt uit formulieren en lijstkolommen, maar de data die hij op bestaande records bevat, blijft bewaard. Gearchiveerde eigenschappen staan in een sectie **Gearchiveerd** van de bouwer, waar je ze met het herstelicoon kunt dearchiveren. Eigenschappen worden nooit individueel definitief verwijderd.

### Publiceren en adressen

De kaart **Publiceren en adressen** op de bouwpagina zet **Publiceren** voor het type aan of uit en bepaalt hoe de records een adres krijgen. Zie [Publiceren en adressen](/nl/docs/objects/publishing).

### Een type verwijderen

Klik op **Type verwijderen** in de bouwer. De bevestiging luidt: **"{pluralName}" en de bijbehorende {count} record(s) verwijderen? Dit kan niet ongedaan worden gemaakt.** Anders dan bij het archiveren van een eigenschap is het verwijderen van een type definitief en worden alle bijbehorende records mee verwijderd.

## Werken met records

Klik op een type in het Objecten-overzicht (of op het item in de zijbalk) om de recordlijst te openen. De kolommen worden gegenereerd uit de actieve eigenschappen van het type (Secties-eigenschappen uitgezonderd), waarbij lege waarden worden getoond als `-`. Een type met Publiceren aan heeft ook een kolom **Status** met de badges **Concept**, **Gepubliceerd** en **Ingepland**.

Vanuit de lijst kun je:

- **Zoeken** in de tabel.
- **Filteren** met de automatisch gegenereerde filters: een filterknop per Keuzelijst-eigenschap (kies een van de opties van die eigenschap) en een datumfilter per Datum-eigenschap, dat een kalender opent. Een type met Publiceren aan heeft ook een filter **Status** (**Concept** of **Gepubliceerd**).
- **Sorteren** op elke kolom, behalve op Lange tekst- en Klant-eigenschappen.
- **Bulksgewijs verwijderen**: selecteer rijen met de selectievakjes en gebruik daarna de bulkactie **Verwijderen** (vraagt om bevestiging).
- Klik op **Nieuw(e) {name}** om een record aan te maken, of klik op een rij om het record te openen.

### Een record aanmaken

1. Klik op **Nieuw(e) {name}** op de recordlijst.
2. Vul het formulier in. Het wordt gegenereerd uit de eigenschappen van het type; verplichte velden tonen een rood sterretje. Bijzondere invoervelden:
   - **Geld**: typ het bedrag met een punt of komma als decimaalteken, bijv. `4950.00`. Ongeldige invoer blokkeert het opslaan met **Ongeldige prijs "{price}". Gebruik een punt of komma voor decimalen: 4950.00**.
   - **Vertaalbare eigenschappen**: heeft het bedrijf meer dan één contenttaal, dan verschijnen er taaltabbladen boven het formulier. Zie [Vertalingen](/nl/docs/objects/translations).
   - **Afbeelding**: **Kies afbeelding** opent een kiezer over je mediabibliotheek; **Afbeelding wijzigen** en **Afbeelding verwijderen** bewerken haar daarna.
   - **Herhaalblok**: rijen toevoegen, herordenen en verwijderen. Zie [Veldsoorten en herhaalblokken](/nl/docs/objects/field-kinds#herhaalblokken).
   - **Keuzelijst**: een dropdown met de placeholder **Kiezen...**, plus een optie **Geen** wanneer de eigenschap niet verplicht is.
   - **Klant**: zoeken terwijl je typt (minimaal 2 tekens), met naam en e-mailadres; klik op **Wijzigen** om een andere klant te kiezen.
   - **Secties**: een sectiecanvas. Klik op **Sectie toevoegen** om de kiezer **Sectie toevoegen** met vorm- en weergavetegels te openen; herorden secties door te slepen of met de pijlknoppen; dupliceer, verwijder of verberg/toon elke sectie; klap een sectiekaart uit om de velden te bewerken. Wanneer meer dan één contenttaal is ingeschakeld, kun je met een taalschakelaar de content per taal bewerken.
3. Klik op **Aanmaken**. Bij succes kom je op de detailpagina van het nieuwe record terecht. Bij een type met Publiceren aan is het nieuwe record een **Concept** tot je het publiceert. Validatiefouten van een mislukte opslag verschijnen onder de betreffende velden; een ongeldige sectie krijgt een badge **Bevat een fout** en klapt automatisch uit.

### Een record bewerken of verwijderen

De detailpagina van een record toont hetzelfde gegenereerde formulier. Bewerk een veld en klik op **Opslaan** (een korte "Opgeslagen." bevestigt dit). **Verwijderen** vraagt: **"{title}" verwijderen? Dit kan niet ongedaan worden gemaakt.**

Bij een type met Publiceren aan staat boven het formulier de kaart **Gepubliceerd op** met **Publiceren**, **Depubliceren** en **Datum bijwerken**, en een type met adressen toont ook de kaart **Adressen**. Zie [Publiceren en adressen](/nl/docs/objects/publishing).

Als gearchiveerde eigenschappen nog een waarde op het record bevatten, staan ze alleen-lezen in een paneel **Gearchiveerde eigenschappen** (gearchiveerde Secties-eigenschappen worden niet getoond).

## Records importeren en exporteren

Elke recordlijst heeft de knoppen **CSV exporteren** en **CSV importeren**. Exporteren downloadt de lijst als CSV-bestand, vernoemd naar de sleutel van het type. Importeren opent een venster met de titel **{pluralName} importeren**: upload één `.csv`-bestand met een kopregel. Rijen worden onafhankelijk van elkaar verwerkt: geldige rijen worden geïmporteerd, ook als andere mislukken, en het resultaat toont aantallen aangemaakte, bijgewerkte en mislukte rijen plus een foutmelding per mislukt rijnummer. De lijst wordt na een geslaagde import ververst.
