Door: Hans Kuijpers.Categorie: Eindhoven.

Verslag JUG Eindhoven 27 januari 2026

Buiten is het nat en koud. Binnen is het aangenaam... mooie avond voor Joomla en werken met custom fields 

Custom Fields 

Rick Spaan sluit aan en heeft een tip van Peter Martin ontvangen aangaande custom fields. Het is voor een site minder belastend om 1 repeatable custom field te maken gevuld met meerdere velden, dan dezelfde aantal custom fields. Voor elke custom field is een DB connectie nodig. En met 1 custom field heb je maar 1 DB connectie nodig. 

Om de demo te tonen laat hij zien hoe hij middels een bat file op Windows Joomla kunt installeren. Het script staat hieronder. Plaats het in een mapje en voer het bat bestand uit in dat mapje. 

Bij het maken van een custom field kun je aangeven op welke plek de custom field getoond moet worden. Naast de waarden "na de titel", "voor de content" en "na de content", heb je ook de optie "niet automatisch tonen". Deze optie wordt door de developers vaak gebruikt omdat ze dan controle hebben waar en hoe de custom field getoond gaat worden. 

Daarna maak je vanuit de template settings een override van de artikelweergave en hernoem je het gekopieerde bestand. Het hernoemen wordt gedaan om ook nog gebruik te kunnen maken van de standaard weergave van een artikel. Bij het bewerken van het artikel in Joomla Admin kun je op tabblad Opties bij het veld Weergave de aangepaste naam van het bestand selecteren. 

Om te testen of je override werkt plaats je er dummy tekst in, bijvoorbeeld "Dummy Tekst". Bij het verversen van de pagina zul je de tekst "Dummy Tekst" zien. Zie je die tekst, dan is de creatie van de override goed gegaan. Verwijder de tekst maar en ga door naar coderen.

Plaats de volgende code ergens bovenin de pagina:

$fieldsByName = \Joomla\Utilities\ArrayHelper::pivot($this->item->jcfields, 'name');

dump($fieldsByName);

Het leuke van `dump` boven `var_dump` is dat je in de output kunt zoeken. 

Stukje verder in de demo laat Rick zien hoe je de custom fields toont in mod_articles. Standaard worden de custom fields daar niet ingeladen. In de foreach loop van de $items kun je per $item de JCFields ophalen. 

<?php
        $item->jcfields = FieldsHelper::getFields('com_content.article', $item, true);
        $fieldsByName = \Joomla\Utilities\ArrayHelper::pivot($item->jcfields, 'name');
        if ($fieldsByName['afbeelding']->value) :
                echo $fieldsByName['afbeelding']->value;
        endif;

        if ($fieldsByName['about-the-author']->value) :
                echo $fieldsByName['about-the-author']->value;
        endif;
?>

Bij het programmeren in VSCode kun je Copilot van GitHub integreren. Dat maakt het coderen een stuk makkelijker, want het komt met hints en verbeteringen. 

De HTML code voor een inline card:

<div class="card mb-3" style="max-width: 540px;">
  <div class="row g-0">
    <div class="col-md-4">
      <img src="/..." class="img-fluid rounded-start" alt="...">
    </div>
    <div class="col-md-8">
      <div class="card-body">
        <h5 class="card-title">Horizontal Card</h5>
        <p class="card-text">This is a horizontal card example.</p>
      </div>
    </div>
  </div>
</div>

Terug naar waar het mee begon...

Het begon met het idee om 1 repeatable custom field te maken.

De database tabel _fields_value van separate fields ziet er als volgt uit:

Elke row in de tabel bevat de value van een custom field. Ga je werken met een repeatable field waar je alle velden in stopt krijg je alle informatie in 1 value.

Bij het aanmaken van custom fields kun je per field bij tabblad Options aangeven of de betreffende field al dan niet "Only visible in SubForm". Eenmaal ingesteld heeft dat gevolgen voor de subform... die kun je daarna niet meer wijzigen. Daarna maak je de repeatable field en voeg je de gewenste custom fields aan toe. In het voorbeeld van Rick het deze repeatable field "groep".

Zie row 11 van de screenshot hieronder waar alle data van de repeatable field in 1 veld zit. Hierdoor hoe je maar 1 DB call uit te voeren, in plaats van meerdere. 

<?php
        $fieldsByName = \Joomla\Utilities\ArrayHelper::pivot($this->item->jcfields, 'name');
        $groep = $fieldsByName['groep']->subform_rows[0];
        echo $groep['about-the-author']->value;
        echo $groep['afbeelding']->value;
?>

Flink wat meer tikwerk, maar dat is slechts eenmalig. De voorkant van de site wordt vaker ververst dan jij aan het coderen bent. De `[0]` na subform_rows is er omdat er meerdere rijen ingevoerd kunnen zijn en we hier alleen de eerste rij willen hebben. Wil je ze allemaal tonen, ga je een foreach loop toepassen. 

Handige links

Volgende keer

De volgende JUG Eindhoven is op dinsdag 24 februari 2026. Het onderwerp van deze meeting en de mogelijkheid tot aanmelden is terug te vinden op https://joomlacommunity.nl/agenda/overige/event/862-jug040-bijeenkomst-eindhoven

Vragen voor Dr. Joomla kun je kwijt als reactie onder de aankondiging.

Fijne feestdagen en een goede jaarwisseling. 

Gravatar
Arjan Abbink
We hebben het na de JUG even gehad over de rawvalue van een image uit een Custom Field en hoe die om te zetten naar bruikbare code (<IMG> tag). Jij gebruikt daarvoor een script met JLayout. Zou je een korte demo kunnen geven over hoe de output van dat script te gebruiken in een Joomla! pagina?

1000 Resterende tekens


Deze site wordt beschermd door reCAPTCHA en Google Privacybeleid en Servicevoorwaarden zijn van toepassing.