Aangepaste velden in Joomla
Aangepaste velden (Custom Fields) maken van Joomla meer dan een standaard contentmanagementsysteem. Ze veranderen het in een flexibel contentplatform. Je kunt gestructureerde gegevens toevoegen aan artikelen, gebruikers, contacten en categorieën, zonder één regel code te schrijven.
In dit artikel lees je hoe Joomla Custom Fields echt werken. Het behandelt de basis voor redacteuren en beheerders, de 18 standaard veldtypen in Joomla 6, de weergave-opties voor ontwerpers en de hooks voor ontwikkelaars om eigen veldtypen te bouwen. Je leert ook hoe de gegevens worden opgeslagen, hoe toegangsbeheer werkt en hoe je de meest voorkomende fouten voorkomt.
Custom Fields vormen de flexibele contentmodelleringslaag van Joomla
Het doel is simpel: je voldoende inzicht geven in Custom Fields zodat je met vertrouwen je content kunt modelleren.
1. De basis
1.1 Wat is een Custom Field?
Een Custom Field is een extra invoerveld, naast titel en inhoud, dat je kunt koppelen aan een Joomla-item. Elk veld heeft een type (tekst, lijst, afbeelding, datum enzovoort), een naam, een label en een aantal configuratieopties.
Je kunt Custom Fields koppelen aan:
- Artikelen (
com_content.article) - Categorieën (
com_content.categories) - Contacten (
com_contact.contact) - Gebruikers (
com_users.user) - Externe componenten die ondersteuning bieden
De context-string (component.view) bepaalt aan welk doel een veld wordt gekoppeld. Dezelfde veldengine wordt gebruikt voor al deze doelen.
1.2 Welk probleem lossen ze op?
Vóór Custom Fields hadden redacteuren drie opties om extra gegevens aan een artikel toe te voegen:
- Een eigen component bouwen.
- HTML verstoppen in de artikeltekst.
- Een externe content construction kit (CCK) installeren, zoals K2, Seblod of Fabrik.
Sinds Joomla 3.7 zit deze functionaliteit standaard ingebouwd in het CMS. Je hebt geen extra extensie nodig.
Zonder Custom Fields hebben redacteuren de neiging om:
- Alles in de artikeltekst te proppen.
- De introtekst verkeerd te gebruiken.
- Te vertrouwen op kopieer-en-plaksjablonen.
- Verplichte informatie te vergeten.
- Inconsistente content te produceren.
Met Custom Fields krijg je gestructureerde data, voorspelbare layouts, validatie, formulieren per categorie en weergave zonder code.
1.3 Waar vind ik Custom Fields?
In de Joomla 6-backend heeft elke ondersteunde component zijn eigen verzameling velden en veldgroepen:
Content → Fields (artikelvelden)
Content → Field Groups (velden groeperen)
Components → Contacts → Fields (contactvelden)
Users → Manage → Fields (gebruikersprofielvelden)
1.4 De vier concepten achter elk Custom Field
Elk Custom Field wordt bepaald door vier keuzes:
| Concept | Vraag die het beantwoordt |
|---|---|
| Type | Wat voor soort invoer is het? (Tekst, lijst, media, subformulier enzovoort.) |
| Veldgroep | Hoe wordt het gegroepeerd in de editorinterface? |
| Categorie | Waar verschijnt het? Welke items tonen dit veld? |
| Toegang | Wie mag het zien en bewerken? |
Heb je deze vier goed ingesteld, dan zijn de rest vooral details.
1.5 Veld versus veldgroep
Het helpt om deze twee begrippen vanaf het begin uit elkaar te houden:
| Concept | Wat is het? |
|---|---|
| Veld | Eén enkel invoerveld, bijvoorbeeld "Telefoonnummer". |
| Veldgroep | Een verzameling velden die samen als één blok worden weergegeven. |
Veldgroepen geven je een gedeelde koptekst, één template override per groep en een logische indeling in de editorinterface.
Naar boven2. Een Custom Field aanmaken
2.1 De minimale stappen
Om een nieuw artikelveld aan te maken, ga je naar:
Content → Fields → New
- Kies een Type (Tekst, Lijst, Kalender enzovoort).
- Vul een Titel in, zichtbaar voor redacteuren.
- Vul een Naam in, de systeemnaam die wordt gebruikt in
en template overrides. - Kies een Veldgroep (optioneel).
- Koppel het veld aan één of meer Categorieën, of aan "Alle".
- Sla op.
Het veld verschijnt nu op het bewerkscherm van elk bijpassend artikel.
2.2 Het veld-bewerkscherm
Het bewerkscherm is verdeeld in tabbladen. Elk tabblad beheert een ander onderdeel van het veld:
| Tabblad | Wat het beheert |
|---|---|
| Field | Type, titel, naam, label, standaardwaarde en beschrijving. |
| Options | Type-specifieke instellingen zoals lijstwaarden, minimum, maximum en formaat. |
| Assigned Categories | Welke categorieën dit veld tonen. |
| Publishing | Status, toegang, taal en informatie over aanmaken en wijzigen. |
| Permissions | ACL per gebruikersgroep: waarde bewerken, veld bewerken, status wijzigen en verwijderen. |
2.3 Belangrijke veldinstellingen
- Type: kan niet veilig worden gewijzigd zodra er gegevens zijn opgeslagen.
- Name: wordt gebruikt als sleutel voor de shortcode
en in overrides. Gebruik kleine letters en geen spaties. - Label: wordt naast het invoerveld getoond. Valt terug op de titel als het leeg is.
- Required: Joomla weigert het item op te slaan zonder een waarde.
- Default Value: vult het invoerveld automatisch in bij nieuwe items.
- Filter: regel voor opschoning van invoer (Tekst, Raw, HTML, Integer enzovoort).
- Automatic Display: After Title, Before Display, After Display of Do not automatically display.
3. De 18 standaard veldtypen in Joomla 6
Joomla 6 wordt geleverd met 18 standaard veldtypen, waaronder twee nieuwe: Number en Note. Elk type is een plugin onder plugins/fields/.
3.1 Basisinvoer
| Type | Doel | Voorbeeld |
|---|---|---|
| Text | Tekstinvoer op één regel | Subtitel, SKU, korte code |
| Textarea | Tekstvak met meerdere regels | Korte beschrijving, samenvatting |
| Editor | WYSIWYG rich-text invoer | Auteursbio, uitgebreide beschrijving |
3.2 Keuzevelden
| Type | Doel | Voorbeeld |
|---|---|---|
| Checkboxes | Meerdere opties kiezen uit een vaste lijst | "Beschikbare functies" bij een product |
| Radio | Precies één optie kiezen uit een zichtbare lijst | "Sidebar tonen?" Ja / Nee |
| List | Dropdown voor één of meerdere keuzes | Moeilijkheid: Makkelijk / Gemiddeld / Moeilijk |
3.3 Mediavelden
| Type | Doel | Voorbeeld |
|---|---|---|
| Imagelist | Een afbeelding kiezen uit een specifieke map | Icoon selecteren, banner kiezen |
| Media | Kiezen vanuit de Media Manager | Productafbeelding, promovideo, downloadbare PDF |
Het Media-veld gebruikt de Media Manager-modal van Joomla 6, ondersteunt submappen en slaat een padstring op.
3.4 Relationele velden
| Type | Doel | Voorbeeld |
|---|---|---|
| User | Koppelen aan een Joomla-gebruikersaccount | Toegewezen auteur, accountmanager |
| User Groups | Eén of meer gebruikersgroepen kiezen | "Toegestane rollen" bij een artikel |
| SQL | Dropdown gevuld met een SQL-query | Een artikel koppelen aan andere artikelen |
3.5 Nummervelden
| Type | Doel | Voorbeeld |
|---|---|---|
| Integer | Alleen hele getallen | Voorraad, aantal zitplaatsen |
| Number (nieuw in Joomla 6) | Numerieke invoer met decimalen | Prijs, gewicht, percentage |
Gebruik Number in plaats van Integer wanneer decimalen belangrijk zijn. Vóór Joomla 6 moest je dit nabootsen met een Text-veld plus een filter.
3.6 Datum, kleur en URL
| Type | Doel | Voorbeeld |
|---|---|---|
| Calendar | Datum- of datum/tijd-kiezer | Evenementdatum, publicatiedeadline |
| Colour | Hex-kleurkiezer | Merkkleur per artikel of categorie |
| URL | Gevalideerde URL met optioneel doelvenster | Officiële website, boekingspagina |
3.7 Hulp- en structuurvelden
| Type | Doel | Voorbeeld |
|---|---|---|
| Note (nieuw in Joomla 6) | Niet-bewerkbare notitie in het beheerformulier | Uitleggen hoe bijbehorende velden moeten worden ingevuld |
| Subform | Een mini-formulier ingebed in een veld, herhaalbaar | Teamleden, agendapunten |
Het Note-veld is puur bedoeld als instructie. Het slaat geen waarde op. Het bestaat om redacteuren te helpen, niet om data vast te leggen.
Het Subform-veld is de krachtpatser voor situaties waarin "één artikel meerdere onderdelen heeft". De waarden worden opgeslagen als JSON, daar komen we later op terug.
3.8 Het SQL-veld
Het SQL-veld toont een dropdown die wordt gevuld met een databasequery die je zelf schrijft. Een typische query ziet er zo uit:
SELECT id AS value, title AS text
FROM `#__content`
WHERE catid IN (8) AND state = 1
ORDER BY title ASC;
Het SQL-veld is krachtig, maar risicovol:
- De query draait met siterechten bij elke keer dat het formulier wordt geladen.
- Alleen Super Users mogen SQL-velden aanmaken.
- Bouw de query nooit op basis van ongefilterde gebruikersinvoer.
Heb je alleen een simpele lookup nodig, gebruik dan liever een normaal List-veld.
3.9 Overzicht in één oogopslag
| # | Type | Categorie | Nieuw in Joomla 6? |
|---|---|---|---|
| 1 | Text | Basis | |
| 2 | Textarea | Basis | |
| 3 | Editor | Basis | |
| 4 | Checkboxes | Keuze | |
| 5 | Radio | Keuze | |
| 6 | List | Keuze | |
| 7 | Imagelist | Media | |
| 8 | Media | Media | |
| 9 | User | Relationeel | |
| 10 | User Groups | Relationeel | |
| 11 | Integer | Nummer | |
| 12 | Number | Nummer | ja |
| 13 | Calendar | Datum | |
| 14 | Colour | Visueel | |
| 15 | URL | Web | |
| 16 | Note | Hulp | ja |
| 17 | Subform | Structuur | |
| 18 | SQL | Relationeel, geavanceerd |
4. Velden aan categorieën koppelen
4.1 Het tabblad Assigned Categories
Bij elk veld kun je kiezen uit twee strategieën:
- Alle categorieën: het veld verschijnt overal binnen die component.
- Specifieke categorieën: alleen bij items in de geselecteerde categorieën.
Zo geef je "Events"-artikelen hun start_date-veld zonder "News"-artikelen ermee te vervuilen.
4.2 Contenttypes via categorie
Met dit patroon bouw je meerdere "contenttypes" binnen één component:
Articles
├── News → fields: source, byline
├── Events → fields: start_date, location, ticket_url
└── Team members → fields: photo, role, bio_summary
Eén component, drie contenttypes, allemaal aangestuurd door categoriegebonden velden.
4.3 Overerving en standaardinstellingen
- Een veld dat is toegewezen aan "Alle categorieën" geldt overal binnen de component.
- Een veld dat is toegewezen aan specifieke categorieën geldt alleen voor die categorieën. Het erft niet over naar onderliggende categorieën.
- Als je categorieën nestelt, koppel het veld dan aan elk niveau waar het nodig is.
5. Custom Fields weergeven
5.1 Automatische weergave
De optie Automatic Display plaatst de gerenderde output op één van vier posities:
- After Title: tussen de titel en de introtekst.
- Before Display Text: boven de artikeltekst.
- After Display Text: onder de artikeltekst.
- Do not automatically display: zelf renderen.
Een volledige Field Group wordt samen als één blok weergegeven, in de ingestelde volgorde.
5.2 Handmatige plaatsing met shortcodes
In de artikeltekst kun je eenvoudige shortcodes plaatsen:
→ rendert veld-id 5 (label + waarde)
→ rendert alle velden in veldgroep-id 2
Je kunt lopende tekst en velduitvoer combineren:
Spreker:
Datum:
5.3 Layout overrides
Veldweergave gebruikt layouts onder:
layouts/com_fields/
render.php (wrapper)
field/
render.php (enkele veldrij)
list.php (lijstveldtype)
media.php
subform.php
...
Je overschrijft ze in je template:
templates/your_template/html/layouts/com_fields/field/render.php
Voor één specifiek veldtype overschrijf je het bestand met de naam van dat type, bijvoorbeeld media.php. Voor één specifiek veld op naam gebruik je:
render-<fieldname>.php
5.4 Waar de waarden vandaan komen
Wanneer Joomla een artikel laadt, doet het dit:
- Leest
#__fields_valuesvoor dat item-id. - Koppelt
#__fieldsvoor de metadata. - Filtert op categorietoewijzing.
- Filtert op toegangsniveau en rechten.
- Rendert de output via de layoutketen.
6. Toegangsbeheer (ACL)
6.1 Twee lagen
Custom Fields gebruiken dezelfde twee ACL-concepten als de rest van Joomla. Ze zijn niet hetzelfde:
| Concept | Vraag die het beantwoordt |
|---|---|
| Toegang | Wie mag de weergegeven waarde op de frontend zien? |
| Rechten | Wie mag de veldwaarde in de backend bewerken? |
Een veld kan alleen zichtbaar zijn voor "Registered" gebruikers, terwijl het artikel zelf openbaar blijft.
6.2 Rechten op een veld
Op het tabblad Permissions van een veld beheer je deze acties per gebruikersgroep:
| Actie | Betekenis |
|---|---|
| Edit Custom Field Value | Dit veld op items invullen of wijzigen. |
| Edit State | Het veld zelf publiceren of depubliceren. |
| Edit | De velddefinitie bewerken. |
| Delete | Het veld verwijderen. |
Redacteuren hebben meestal alleen Edit Custom Field Value nodig. Ze hebben geen toegang tot de velddefinitie nodig.
6.3 De overervingsketen
Dezelfde regels voor Inherit / Allow / Deny gelden als overal elders in Joomla:
Global Configuration
└── Component (bijvoorbeeld com_content)
└── Category (regels voor custom fields)
└── Field
6.4 Praktische toepassingen
- Een veld "interne notitie" verbergen voor iedereen behalve redacteuren.
- "Ledenprijs" alleen tonen aan Registered gebruikers.
- Winkelmanagers "Voorraad" laten bewerken, maar niet "Publieke beschrijving".
7. Het Subform-veld
7.1 Waarom een Subform gebruiken?
Gebruik een Subform wanneer één item meerdere onderdelen heeft, op een gestructureerde manier:
- Sessies in een conferentieartikel.
- Sprekers bij een evenement.
- Downloads op een productpagina.
- FAQ-items in een helpartikel.
Elke rij in een Subform is een eigen mini-formulier, met eigen interne velden.
7.2 Hoe bouw je er één?
- Maak eerst de interne velden aan (Text, URL, Image enzovoort).
- Maak een Subform-veld aan.
- Kies op het tabblad Options de interne velden. Zet Repeatable op Ja en stel het minimum en maximum aantal rijen in.
- Koppel het Subform aan de juiste categorieën.
7.3 Wat wordt opgeslagen?
De Subform-waarde wordt opgeslagen als JSON in #__fields_values.value:
[
{"speaker_name": "Ada", "speaker_role": "Keynote"},
{"speaker_name": "Tim", "speaker_role": "Workshop"}
]
Deze JSON stuurt zowel de editorinterface als de weergegeven output aan.
7.4 Een Subform weergeven
Het Subform heeft een eigen layoutbestand:
layouts/com_fields/field/subform.php
Overschrijf dit bestand wanneer je volledige controle wilt over de loop, de markup, de CSS-classes en de layout per rij.
Naar boven8. Custom Fields buiten artikelen
8.1 Gebruikers
Ga naar Users → Manage → Fields om velden toe te voegen zoals "Telefoon", "Bedrijf" of "Aanmelden voor nieuwsbrief".
Gebruikersvelden verschijnen op drie schermen:
- Het gebruikers-bewerkscherm in de backend.
- Het registratieformulier op de frontend, als het veld gepubliceerd is.
- Het profiel-bewerkformulier op de frontend.
8.2 Contacten
Ga naar Components → Contacts → Fields. Contactvelden zijn handig voor medewerkersoverzichten. Voeg velden toe zoals "Afdeling", "Kantooruren" of "Foto".
8.3 Categorieën
Ga naar Content → Categories → Fields (context com_content.categories). Deze velden worden opgeslagen bij de categorie zelf, niet bij een artikel. Veelgebruikte toepassingen:
- Een "Header image" die wordt weergegeven op de Category Blog-pagina.
- Een "Subtitle" onder de categorietitel.
- Een "Intro CTA" specifiek voor die categorie.
Je rendert categorievelden binnen een template override voor Category Blog.
8.4 Tags
Ga naar Components → Tags → Fields (context com_tags.tag). Tagvelden worden opgeslagen bij de tag zelf, bijvoorbeeld een "Tag icon" of een "Tag colour" die wordt getoond in lijsten met getagde content.
8.5 Componenten van derden
Elke component kan aansluiten op het Custom Fields-systeem. Dat doe je door:
- Een eigen context te declareren, bijvoorbeeld
com_yourcomponent.item. - De fields plugin-events aan te roepen bij opslaan, laden en weergeven.
- Een
com_fields-menuhook toe te voegen in de zijbalk.
Zodra dat is gedaan, krijgt de component gratis dezelfde veldinterface.
Naar boven9. Onder de motorkap (voor ontwikkelaars)
9.1 De vier databasetabellen
Custom Fields worden opgeslagen in vier standaardtabellen:
#__fields velddefinities (naam, type, params, ...)
#__fields_groups definities van veldgroepen
#__fields_values waarden per item (item_id, field_id, value)
#__fields_categories koppelingen tussen velden en categorieën
Een value kan gewone tekst zijn, JSON (voor een Subform) of elke string die het veldtype zelf bepaalt.
9.2 Belangrijke kolommen in #__fields
id
title
name (systeemnaam, gebruikt in )
type (text, list, media, subform, ...)
context (com_content.article, com_users.user, ...)
group_id
state (1 gepubliceerd, 0 gedepubliceerd)
access
language
fieldparams (JSON: type-specifieke opties)
params (JSON: weergave en gedrag)
9.3 Pluginarchitectuur
Custom Fields zijn plugins. Elk veldtype heeft zijn eigen map:
plugins/fields/<type>/
De Joomla-core bevat: calendar, checkboxes, color, editor, imagelist, integer, list, media, note, number, radio, sql, subform, text, textarea, url, user en usergrouplist.
Een veldtypeplugin bepaalt:
- Hoe de invoer wordt weergegeven in het formulier (form XML).
- Hoe de waarde wordt weergegeven op de frontend.
- Optionele validatie.
- Optionele onSave- en onPrepare-logica.
9.4 Plugin-events
Dit zijn de aanknopingspunten voor je eigen custom veldtype:
| Event | Wanneer het wordt uitgevoerd |
|---|---|
onContentPrepareForm |
Voegt velden toe aan het bewerkformulier. |
onContentPrepareData |
Laadt opgeslagen waarden in het formulier. |
onContentAfterSave |
Slaat veldwaarden op nadat het item is opgeslagen. |
onContentPrepare |
Rendert velden in de weergegeven content. |
onCustomFieldsPrepareDom |
Bouwt de XML van het veld in het formulier op. |
onCustomFieldsBeforePrepareField |
Past de waarde aan vlak vóór het renderen. |
onCustomFieldsAfterPrepareField |
Past de waarde aan vlak ná het renderen. |
9.5 De PHP API
De moderne en nette manier om velden vanuit PHP op te halen:
use Joomla\Component\Fields\Administrator\Helper\FieldsHelper;
// Alle velden voor een artikel, inclusief waarden
$fields = FieldsHelper::getFields(
'com_content.article',
$article, // het artikelobject: bevat item-id en categorie-id
true // waarden voorbereiden voor weergave
);
foreach ($fields as $field) {
echo $field->name . ' = ' . $field->rawvalue;
echo $field->value; // gerenderde HTML
}
Een kortere, oudere aanpak werkt nog steeds binnen content-overrides:
echo $item->jcfields[3]->value; // op veld-id
Gebruik bij voorkeur FieldsHelper::getFields(). Daarmee ben je niet afhankelijk van veld-id's die per site kunnen verschillen en krijg je alle metadata beschikbaar.
9.6 Headless Joomla: velden via de Web Services API
De Web Services API van Joomla levert custom field-waarden mee met het item:
GET /api/index.php/v1/content/articles/42
De JSON-respons bevat een fields-verzameling met id, naam, type, ruwe waarde en gerenderde waarde. Daardoor is Joomla een bruikbare headless backend voor:
- Vue-, React- of Svelte-frontends.
- Static site generators.
- Native mobiele apps.
- AI- en automatiseringsprocessen.
Alleen gepubliceerde velden waarvoor de API-gebruiker toegang heeft worden teruggegeven. ACL blijft ook via de API van toepassing.
9.7 Je eigen veldtype bouwen
- Maak een pluginmap aan onder
plugins/fields/myfield/. - Voeg een manifest-XML en een PHP-hoofdklasse toe die
FieldsPluginuitbreidt. - Implementeer
getInputXml()voor de invoer in de editor. - Implementeer
onCustomFieldsPrepareField()voor de weergegeven output. - Installeer via Discover of als verpakte zip.
- Het nieuwe type verschijnt nu in de lijst met veldtypen.
10. Veelgemaakte fouten en valkuilen
10.1 Het veldtype wijzigen nadat er data bestaat
De kolom met waarden bevat één enkele string. Overschakelen van list naar subform nadat redacteuren al waarden hebben ingevuld, leidt vaak tot verouderde of onleesbare gegevens.
Kies het type daarom zorgvuldig vanaf het begin. Moet je toch wijzigen, exporteer dan eerst de waarden, verwijder ze en importeer ze opnieuw.
10.2 Categorietoewijzing vergeten
Een veld zonder enkele toegewezen categorie verschijnt op geen enkel item. "Alle" is de veiligste standaardinstelling. Je kunt het later altijd beperken.
10.3 SQL-velden en beveiliging
Het SQL-veld voert bij elke formulierweergave een ruwe SQL-query uit:
- Alleen Super Users mogen SQL-velden aanmaken.
- Bouw de query nooit op basis van ongefilterde gebruikersinvoer.
- Gebruik liever een List-veld met handmatige opties of een eigen pluginveldtype.
10.4 Kwetsbare shortcodes
De shortcode verwijst naar het veld-id, niet naar de naam. Verplaats je een veld naar een andere site, dan verandert het id en werkt de shortcode niet meer.
Voor draagbare content kun je beter combineren met automatische plaatsing.
10.5 Over-engineering
Een Custom Field is niet altijd de juiste oplossing:
- Een eenmalige tekstregel hoort gewoon in de artikeltekst thuis.
- Veel velden, veel rijen en veel relaties zijn vaak een teken dat je een echte maatwerkcomponent nodig hebt.
10.6 Slordige systeemnamen
Het veld name is de technische identificatie. Deze naam verschijnt in overrides, shortcodes en de API. Behandel hem alsof het een programmeeridentifier is.
Goed:
event_date
speaker_name
product_price
Vermijd:
Field1
TestField
my new field
Gebruik kleine letters, underscores als scheidingsteken en betekenisvolle namen. Zodra een veld in gebruik is, kunnen overrides en API-koppelingen breken als je de naam wijzigt.
10.7 Andere aandachtspunten
- Meertalige websites: de taal van het veld moet overeenkomen met de taal van het item, of op "Alle" staan.
- Verplichte velden in frontendformulieren: worden alleen afgedwongen als het betreffende formulier dat ondersteunt.
- Caching: agressieve caches kunnen na wijzigingen verouderde veldwaarden blijven tonen.
- Verwarring over rechten: als je "Edit Custom Field Value" op componentniveau weigert, blokkeer je alle onderliggende redacteuren.
11. Ecosysteem en extensies
11.1 Conditionele Custom Fields
Conditionele velden verschijnen of verdwijnen afhankelijk van de waarde van een ander veld. In Joomla 6 wordt dit standaard ondersteund via plugininstellingen. Een typisch voorbeeld is een veld "Ticket URL" dat alleen zichtbaar wordt wanneer het selectievakje "Heeft tickets" is aangevinkt.
11.2 YOOtheme Pro
YOOtheme Pro is een populaire pagebuilder-template die Joomla Custom Fields integreert in het systeem voor dynamische content:
- Plaats een custom field-waarde in elk builder-element.
- Filter en sorteer dynamische lijsten op basis van custom field-waarden.
- Gebruik het ingebouwde veld Location (breedte- en lengtegraad) op een kaart.
Als je team al met YOOtheme werkt, hoef je waarschijnlijk nooit een layout override voor velden te maken.
11.3 Advanced Custom Fields van Tassos
Deze extensie van derden voegt extra veldtypen toe die niet standaard in Joomla aanwezig zijn, samen met uitgebreidere renderopties en conditionele logica. Handig wanneer de 18 standaard veldtypen niet voldoende zijn, maar een volledige CCK te veel van het goede zou zijn.
11.4 Wanneer kies je beter voor een CCK?
Custom Fields zijn ideaal voor content met extra eigenschappen. Voor echte databasegestuurde toepassingen, zoals boekingssystemen, vastgoedwebsites met geavanceerde filters of complexe relaties, kun je beter kijken naar:
- Seblod of Fabrik: volledige content construction kits.
- Een maatwerkcomponent die integreert met
com_fields.
12. Best practices
Als je maar een paar dingen uit dit artikel onthoudt, laat het dan deze zijn:
- Plan je velden en veldgroepen voordat je content gaat aanmaken.
- Kies vanaf het begin het juiste veldtype. Achteraf wijzigen is vaak lastig.
- Gebruik duidelijke systeemnamen zoals
event_date, nooitField1. - Groepeer verwante velden in Field Groups voor een overzichtelijke editorervaring.
- Gebruik het Number-veld (nieuw in Joomla 6) voor prijzen en percentages.
- Gebruik het Note-veld (nieuw in Joomla 6) om redacteuren in het formulier te begeleiden.
- Gebruik Subforms voor gegevens waarbij één item meerdere onderdelen bevat.
- Stel ACL alleen op veldniveau in wanneer dat echt nodig is. Gebruik waar mogelijk overerving.
- Overschrijf layouts onder
layouts/com_fields/field/als je volledige controle wilt over de weergave.
13. In het kort
VELD AANMAKEN Content → Fields → New
GROEP AANMAKEN Content → Field Groups → New
TOEWIJZEN Field → tabblad Assigned Categories
WEERGEVEN Field → instelling Automatic Display
INLINE of in de inhoud
OVERRIDE templates/{tpl}/html/layouts/com_fields/...
TYPE OVERRIDE render-<fieldname>.php voor één veld
GEBRUIKERS Users → Manage → Fields
CONTACTEN Components → Contacts → Fields
CATEGORIEËN Content → Categories → Fields
TAGS Components → Tags → Fields
CORE-TYPEN 18 in Joomla 6 (Number en Note zijn nieuw)
SUBFORM Herhaalbare gegevens, opgeslagen als JSON
SQL-VELD Alleen voor Super Users, voorzichtig gebruiken
API FieldsHelper::getFields('com_content.article', $item)
HEADLESS /api/index.php/v1/content/articles/N → fields[]
TABELLEN #__fields / _groups / _values / _categories
Naar boven14. Samenvatting
Custom Fields veranderen Joomla van een standaard CMS in een lichtgewicht platform voor contentmodellering. Ze bieden:
- Structuur: content met een voorspelbare opbouw.
- Herbruikbaarheid: dezelfde velden voor meerdere items.
- Gebruikersgemak per categorie: redacteuren zien alleen wat voor hen relevant is.
- Weergave: automatisch, via shortcodes of met volledige template overrides.
- Rechtenbeheer: duidelijke controle over wie mag zien en bewerken.
- Uitbreidbaarheid: eigen veldtypen via plugins.
- Integratie: artikelen, gebruikers, contacten, tags, categorieën en componenten van derden.
Een goed ontworpen verzameling Custom Fields maakt een Joomla-website eenvoudiger te beheren, makkelijker te onderhouden en beter uitbreidbaar. Slecht benoemde of verkeerd toegewezen velden veroorzaken juist problemen die meegroeien met de website.
Ben je bezig met een nieuw Joomla-project, ontwerp je een complex contenttype of denk je na over een headless architectuur, dan zijn Custom Fields één van de eerste functies om naar te kijken. Ze zijn misschien niet de meest opvallende functie van Joomla, maar wel een van de krachtigste redenen waarom Joomla meer flexibiliteit biedt dan veel CMS-systemen met een vaste contentstructuur.
Naar boven

Joomla en Linux specialist voor snelle, veilige en schaalbare websites.


