
Social Media optimalisatie voor Joomla
Als je een link op Facebook, LinkedIn, WhatsApp of X plaatst, zie je de pagina niet. Je ziet een kaartje: een titel, een korte beschrijving en een afbeelding. Dat kaartje is het product. Het bepaalt of iemand erop klikt, en je kunt bijna alles daarbinnen vanuit Joomla beheren.
Social Media Optimization (SMO) is het proces waarbij je ervoor zorgt dat je pagina’s er goed uitzien en goed worden verspreid wanneer mensen ze delen. Het bestaat deels uit metadata, deels uit afbeeldingen, deels uit de knoppen en insluitingen op de pagina, en deels uit het spoor dat je achterlaat, zodat het juiste merk en de juiste auteur de erkenning krijgen.
In dit artikel wordt uitgelegd hoe social media-optimalisatie binnen Joomla werkt. Het behandelt de basisprincipes voor eigenaren en redacteuren, de dagelijkse instellingen voor beheerders en de technische details voor ontwikkelaars. Je zult zien welke tags de deelkaart vormen, waar deze in Joomla vandaan komen en hoe je de fouten kunt vermijden die ervoor zorgen dat een gedeelde link verandert in een leeg vak.
De link die je deelt, is een kleine advertentie. Social media optimalisatie houdt in dat je die advertentie bewust opstelt.
Het doel is simpel: je zo veel inzicht geven in social media-optimalisatie van Joomla dat je zelf bepaalt hoe je pagina's eruitzien, overal waar ze gedeeld worden.
1. De basis
1.1 Wat social media-optimalisatie betekent
SMO is je site makkelijk deelbaar en mooi-bij-delen maken. Het is niet hetzelfde als advertentiecampagnes draaien of dagelijks posten. Het is het voorwerk op de site zelf dat elke deelactie harder laat werken. Voor een Joomla-site valt het uiteen in vier lagen:
- Deel-metadata - de Open Graph- en X Card-tags die de voorbeeldkaart opbouwen. Vooral werk voor beheerders en ontwikkelaars.
- Deelafbeeldingen - de afbeelding die de kaart vult. Werk voor redacteuren, met technische regels.
- Delen op de pagina - deelknoppen, embeds en volglinks. Werk voor beheerders.
- Identiteit en automatisering - consistente merk- en auteursprofielen, plus nieuwe content automatisch posten. Gemengd werk.
Joomla schrijft je posts niet voor je, maar geeft je sterke controle over elk van deze lagen, het meeste vanuit instellingen die je al hebt.
1.2 De deelkaart is het hele spel
Als een link gedeeld wordt, stuurt het social platform zijn eigen crawler om je pagina op te halen en een handvol <meta>-tags te lezen. Daaruit bouwt het de kaart. Ontbreken de tags, dan gokt het platform op basis van wat het vindt, en die gok is meestal slecht: de verkeerde afbeelding, een afgekapte titel of een leeg grijs vakje.
Je ontwerpt niet voor de bezoeker die de pagina bereikt. Je ontwerpt voor de duizend mensen die alleen de kaart ooit zien.
1.3 Waar social-instellingen in Joomla zitten
Er is een verrassing om vroeg te leren: de meeste social-tags zijn geen apart scherm in Joomla. Ze komen uit drie mogelijke bronnen, en weten welke jouw site gebruikt bespaart je uren verwarring:
| Bron | Wat het levert | Bereik |
|---|---|---|
| Je template | Veel moderne templates geven Open Graph af uit het actieve artikel. | Site-breed, automatisch. |
| Een plugin of component | Een aparte extensie die de social-tags schrijft. | Site-breed, instelbaar. |
| Een eigen plugin | Een kleine system-plugin die je zelf schrijft (sectie 13). | Site-breed, volledige controle. |
De regel om te onthouden: Joomla core geeft zelf geen Open Graph-tags af. De core Schema.org-plugin dekt gestructureerde data (sectie 8), maar de deelkaart-tags komen uit een van de drie bronnen hierboven. De eerste taak van elke social-audit is uitzoeken welke.
Naar boven2. Hoe een gedeelde link een kaart wordt
2.1 De crawl achter elke deelactie
Zodra iemand je URL plakt, haalt het platform de pagina een keer op en leest de head. De stroom is altijd hetzelfde:
1. Ophalen het platform vraagt je pagina op als een uitgeklede browser
2. Lezen het scant de <head> op og:- en twitter:-metatags
3. Bouwen het rendert een kaart uit titel, beschrijving en afbeelding
4. Cachen het bewaart die kaart, vaak dagen, en hergebruikt hem
Twee gevolgen volgen hieruit. Ten eerste wordt de kaart gebouwd uit server-gerenderde HTML, dus de tags moeten in de paginabron staan, niet later door JavaScript worden toegevoegd. Ten tweede ververst, omdat het resultaat gecached is, het corrigeren van een tag een oude kaart niet vanzelf - je moet de platformcache leegmaken (sectie 15).
2.2 Het Open Graph-protocol
Open Graph is de gedeelde standaard, gemaakt door Facebook en nu gelezen door bijna elk platform: LinkedIn, WhatsApp, Slack, Discord, Pinterest en meer. Elke tag is een <meta> met een property-attribuut dat begint met og::
<meta property="og:title" content="Joomla Social Media-gids">
<meta property="og:description" content="Hoe Joomla de deelkaart opbouwt.">
<meta property="og:image" content="https://site.tld/images/social/gids.jpg">
<meta property="og:url" content="https://site.tld/social-media-gids">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Peter Martin">
Krijg deze zes goed en je hebt een correcte kaart op de grote meerderheid van platforms. Al het andere is verfijning.
2.3 Wat er gebeurt zonder tags
Als je pagina geen Open Graph-tags meelevert, valt het platform terug op zwakke gokken:
- De titel wordt de
<title>-tag, die mogelijk je merksuffix draagt en onhandig leest. - De beschrijving wordt de meta-beschrijving, of de eerste tekst die de crawler vindt.
- De afbeelding wordt welke afbeelding de crawler ook eerst kiest, vaak een logo, een icoon of niets.
De terugval is zelden vreselijk, maar nooit zo goed als een kaart die je zelf ontwerpt. SMO is het verschil tussen een gegokte kaart en een gekozen kaart.
Naar boven3. De Open Graph-tags in detail
3.1 De kerntags
Dit zijn de tags die het waard zijn om op elke belangrijke pagina te zetten:
| Tag | Wat het regelt | Goede waarde |
|---|---|---|
og:title |
De kop van de kaart. | Het paginaonderwerp, zonder de merksuffix. |
og:description |
De regel onder de titel. | Een heldere zin, ongeveer 2 tot 4 regels. |
og:image |
De afbeelding van de kaart. | Een absolute URL naar een 1200x630-afbeelding. |
og:url |
De canonieke link voor de deelactie. | De schone, voorkeurs-URL van de pagina. |
og:type |
Het soort object. | article voor content, website voor de homepage. |
og:site_name |
De merknaam. | Je site- of bedrijfsnaam. |
og:locale |
De taal van de pagina. | en_GB, nl_NL, enzovoort. |
3.2 Titel en beschrijving zijn niet die van SEO
Een veelgemaakte aanname is dat og:title gelijk is aan de SEO-titel en og:description aan de meta-beschrijving. Ze kunnen hetzelfde zijn, maar ze dienen een andere lezer. De SEO-beschrijving is geschreven voor een zoeksnippet; de Open Graph-beschrijving is geschreven voor iemand die door een feed scrolt. Vaak wint een pittigere, kortere regel op social. Behandel ze als aparte velden die je verschillend mag invullen.
3.3 De og:url-tag houdt deelacties bij elkaar
Joomla kan een artikel via meerdere URL's bereiken (het eigen menu-item, een blogcategorie-route, de routeloze terugval). Als verschillende mensen verschillende URL's van dezelfde pagina delen, telt het platform ze als verschillende objecten en splitst het de deelteller. Door og:url op een canoniek adres te zetten vertel je het platform "dit is allemaal dezelfde pagina", zodat likes en shares optellen in plaats van versplinteren.
3.4 og:type en artikelextra's
Zet voor contentpagina's og:type op article. Dat ontgrendelt een paar optionele artikeltags die sommige platforms tonen:
<meta property="article:published_time" content="2026-06-21T10:00:00+00:00">
<meta property="article:modified_time" content="2026-06-21T12:00:00+00:00">
<meta property="article:author" content="Peter Martin">
<meta property="article:section" content="Joomla">
In Joomla mappen deze netjes op velden die je al opslaat: publish_up, modified, de auteur en de categorie. Een goede social-plugin vult ze automatisch uit het live artikel.
4. X (Twitter) Cards
4.1 Meestal een extra tag
X leest Open Graph voor het grootste deel van zijn kaart, dus je herhaalt niet alles. Je voegt een kleine set twitter:-tags toe, en de belangrijkste is twitter:card, die de opmaak kiest:
| Waarde | Resultaat |
|---|---|
summary |
Kleine vierkante thumbnail naast de tekst. |
summary_large_image |
Grote bannerafbeelding boven de tekst. De gebruikelijke keuze. |
player |
Een ingebedde video- of audiospeler. |
app |
Een installatiekaart voor een mobiele app. |
4.2 De tags die je toevoegt
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@jouwmerk">
<meta name="twitter:creator" content="@deauteur">
Let op: deze gebruiken het name-attribuut, niet property zoals Open Graph. Als je twitter:title, twitter:description of twitter:image niet zet, valt X terug op de bijbehorende og:-waarden, dus meestal voeg je alleen de drie hierboven toe.
4.3 Een keer schrijven, beide bedienen
Omdat X leent van Open Graph, onderhoud je geen twee volledige sets tags. Zet de Open Graph-tags goed, voeg twitter:card en de twee handles toe, en een goede pagina bedient Facebook, LinkedIn, WhatsApp, Slack en X tegelijk. Daarom kan een enkele social-plugin of templatefunctie bijna elk platform vanuit een bron dekken.
5. Waar de tags vandaan komen in Joomla
5.1 Controleer wat je site al afgeeft
Voordat je iets toevoegt, kijk je naar wat een pagina al produceert. Open een willekeurig artikel in de browser, bekijk de paginabron en zoek op og:. Je vindt een van drie situaties:
- Tags zijn aanwezig en correct - je template of een plugin doet het werk al. Audit ze en stop.
- Tags zijn aanwezig maar fout - dezelfde afbeelding op elke pagina, of een verouderde titel. Vind de bron en herstel het.
- Helemaal geen tags - alleen core, zonder template- of pluginondersteuning. Je moet een bron toevoegen.
5.2 Optie A: de template
Veel moderne Joomla-templates bouwen Open Graph uit het actieve artikel: ze lezen de artikeltitel, de intro-afbeelding en de beschrijving en schrijven de tags in de head. Dit is de simpelste route - je verandert niets in code. Het risico is een template die een og:image hardcodeert voor de hele site, waardoor elke deelactie dezelfde afbeelding krijgt. Controleer de uitvoer altijd op meerdere pagina's, niet alleen de homepage.
5.3 Optie B: een aparte extensie
Verschillende bekende Joomla-extensies zijn gespecialiseerd in social- en SEO-metadata. Ze voegen een instellingenpaneel toe, vaak een tab per artikel, en schrijven de volledige Open Graph- en X Card-set. Dit is de juiste keuze voor een contentrijke site die wil dat redacteuren de kaart per artikel beheren zonder code aan te raken.
5.4 Optie C: een kleine eigen plugin
Als je volledige controle wilt en geen code van derden, haakt een korte system-plugin in op het head-compile-event en schrijft de tags uit het live artikel (sectie 13). Dit is de schoonste, best onderhoudbare optie voor een site die door een ontwikkelaar wordt beheerd, omdat de logica in een bestand zit dat een templatewissel overleeft.
5.5 Het ene object dat ze allemaal gebruiken
Wat de bron ook is, elke route eindigt op dezelfde plek: het Document-object van Joomla. De template, de extensie en je plugin roepen er allemaal setMetaData() op aan om een tag toe te voegen. Die ene methode begrijpen (sectie 13.1) ontrafelt het hele onderwerp - social-tags zijn gewoon metadata die op het document geschreven worden voordat de head rendert.
6. Afbeeldingen voor social sharing
6.1 De afbeelding verkoopt de kaart
In een drukke feed is de afbeelding wat het scrollen stopt. Ze verdient evenveel zorg als de kop. De platforms zijn het eens over een doelvorm:
| Eigenschap | Aanbevolen |
|---|---|
| Formaat | 1200 x 630 pixels. |
| Beeldverhouding | Ongeveer 1.91 op 1 (de brede kaart). |
| Bestandstype | JPG of PNG. Houd het bestand onder ongeveer 1 MB. |
| Minimum | Minstens 600 x 315, anders krimpt de kaart tot een thumbnail. |
Houd belangrijke tekst en gezichten weg van de randen; sommige platforms snijden de kaart op mobiel bij tot een vierkant.
6.2 De regel van de absolute URL
De meest voorkomende afbeeldingsfout is een relatief pad. Social-crawlers lossen relatieve URL's niet op, dus og:image moet een volledig, absoluut adres zijn:
Fout: <meta property="og:image" content="images/social/gids.jpg">
Goed: <meta property="og:image" content="https://site.tld/images/social/gids.jpg">
Als je kaart geen afbeelding toont terwijl de tag er wel is, controleer dit dan eerst. Een goede plugin bouwt de absolute URL met de Uri::root() van Joomla, zodat hij altijd klopt.
6.3 Waar de afbeelding in Joomla vandaan komt
Elk Joomla-artikel heeft een tab Afbeeldingen en links met twee afbeeldingsvelden: Intro-afbeelding en Volledige artikelafbeelding. Een social-plugin of template kiest meestal een van deze voor og:image, en valt terug op een standaardafbeelding van de site als beide leeg zijn. De praktische werkwijze voor redacteuren:
- Stel een bewuste intro-afbeelding in op elk artikel waarvan je verwacht dat het gedeeld wordt.
- Configureer een verstandige site-brede standaardafbeelding voor pagina's die er geen hebben.
- Ontwerp voor belangrijke landingspagina's een doelgerichte 1200x630-deelafbeelding in plaats van een foto uit de tekst te hergebruiken.
6.4 Voeg de afbeeldings-alt en -afmetingen toe
Twee optionele tags maken de kaart robuuster. og:image:alt beschrijft de afbeelding voor toegankelijkheid, en de breedte- en hoogtetags laten het platform ruimte reserveren voordat de afbeelding laadt:
<meta property="og:image:alt" content="De Joomla 6-artikeleditor">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
6.5 Dynamische social-afbeeldingen
Een groeiende aanpak slaat opgeslagen afbeeldingen over en genereert de deelafbeelding ter plekke. In plaats van dat een redacteur voor elk artikel een kaart uploadt, rendert een kleine service een 1200x630-afbeelding uit de artikeldata - de titel, auteur, categorie, datum en je huisstijl - en cachet die daarna. De Open Graph-tag wijst simpelweg naar die gegenereerde URL:
<meta property="og:image"
content="https://site.tld/og-image/joomla-social-gids.png">
De winst is consistente, merkgetrouwe kaarten over honderden pagina's zonder handmatig ontwerpwerk. In Joomla bouw je dit met een eigen plugin of een externe afbeeldingsservice die dezelfde artikelvelden leest als een normale og:image-plugin (sectie 13.3). Behandel het als een gevorderde optie: het voegt bewegende delen toe, dus grijp er pas naar als handgemaakte afbeeldingen niet meer schalen.
7. Social velden die de redacteur beheert
7.1 Geef redacteuren een social-kaart om in te vullen
De beste kaarttekst is zelden identiek aan de paginatitel en meta-beschrijving. De feed wil een pittigere regel, en de SEO-snippet wil een precieze. Om redacteuren en marketeers de kaart te laten schrijven zonder code aan te raken, voeg je toegewijde social-velden toe met de core Custom Fields van Joomla. Maak drie velden en koppel ze aan je artikeltype:
| Custom Field | Type | Voedt |
|---|---|---|
| Social Title | Text | og:title, twitter:title |
| Social Description | Textarea | og:description, twitter:description |
| Social Image | Media | og:image, twitter:image |
Je bouwt deze in Componenten → Velden, koppelt ze aan het artikelformulier, en de redacteur vult ze in op de tab Velden van het artikel. Een template-override of plugin leest dan de waarden en schrijft de tags. De kaart is geen ontwikkelaarsinstelling meer en wordt onderdeel van het schrijven van het artikel.
7.2 De fallback-hierarchie
Een robuuste opzet laat een tag nooit leeg. Hij loopt een prioriteitsketen af en gebruikt de eerste waarde die hij vindt, zodat elke pagina een complete kaart krijgt, zelfs als een redacteur niets invult. De beproefde volgorde:
TITEL social veld → metatitel → artikeltitel
BESCHRIJVING social veld → meta-desc → introtekst (ingekort)
AFBEELDING social veld → intro-afb → volledige afb → standaard
De logica leest van boven naar beneden en stopt bij de eerste niet-lege waarde. Het benoemde social-veld wint altijd als een redacteur er moeite voor doet; alles eronder is een vangnet zodat geen enkele pagina ooit als een leeg vakje gedeeld wordt. Bouw deze keten een keer in je plugin of override en elk artikel erft hem.
7.3 Waarom velden beter zijn dan vrije tekst
De kaartgegevens in de artikeltekst typen zou snel zijn, maar custom fields zijn de kleine opzet waard:
- Redacteuren krijgen een formulier, geen verborgen afspraak, dus de kaarttekst wordt consistent ingevuld.
- De data blijft gestructureerd in
#__fields_values, dus een plugin kan het schoon lezen en zelfs hergebruiken voor schema. - Ontwikkelaars vermijden hardgecodeerde logica - de waarden leven bij de content, niet in de template.
Dit is hetzelfde Custom Fields-patroon dat Joomla gebruikt om gestructureerde data te voeden, toegepast op de deelkaart. Een gedisciplineerde opzet bedient zowel de social-preview als de JSON-LD (sectie 8.3).
Naar boven8. Je social profielen aangeven
8.1 De sameAs-verbinding
Social-optimalisatie is niet alleen de deelkaart. Je wilt ook dat zoekmachines en AI-systemen je website aan je social-accounts koppelen, zodat ze die als een identiteit behandelen. Het hulpmiddel hiervoor is de sameAs-eigenschap in gestructureerde data: een lijst van je officiele profiel-URL's gekoppeld aan je Organization of Person.
"sameAs": [
"https://www.linkedin.com/company/jouw-merk",
"https://www.facebook.com/jouwmerk",
"https://x.com/jouwmerk"
]
Dit zegt "deze accounts zijn van mij". Het versterkt je merk als een herkende entiteit en kan de social-links voeden die sommige zoekresultaten naast een site tonen.
8.2 De core Schema.org-plugin
Hier helpt Joomla core wel. De plugin System - Schema.org (meegeleverd en ingeschakeld in Joomla 5 en 6) geeft JSON-LD gestructureerde data af. In de opties kies je een basistype Organization of Person en stel je de site-identiteit in:
Systeem → Plugins → System - Schema.org
Basistype: Organization (of Person)
Naam, URL, Logo/afbeelding, Adres, E-mail
Het Organization-type laat je de naam, URL, logo en adres instellen, en extra eigenschappen toevoegen via de generieke velden. Gebruik een generiek veld (of een eigen schemablok) om je sameAs social-profiel-URL's toe te voegen, zodat de gestructureerde data je accounts op een consistente plek benoemt.
8.3 Schema per artikel
Dezelfde plugin voegt een tab Schema.org toe aan elk artikel, waar een redacteur een type kiest zoals Article, BlogPosting, Event of Recipe en de velden invult. Dit schema per artikel en je social-tags versterken elkaar: het schema vermeldt de auteur en datums als data, en de Open Graph-tags presenteren dezelfde feiten op de kaart. Houd ze consistent zodat machines en mensen een verhaal zien.
8.4 Consistentie is het punt
Wat je ook aangeeft, geef het overal op dezelfde manier aan. De merknaam in og:site_name, de naam in je Organization-schema en de handle in twitter:site moeten een identiteit beschrijven. Gemengde namen en losse oude handles verwarren de platforms en verzwakken de band tussen je site en je accounts.
9. Meertalig delen op social
9.1 Vertel platforms de taal
Op een meertalige Joomla-site moet elke pagina zijn taal aangeven, zodat platforms hem correct previewen en de juiste versie kunnen aanbieden. De og:locale-tag benoemt de paginataal, en og:locale:alternate somt de andere op die je publiceert:
<meta property="og:locale" content="nl_NL">
<meta property="og:locale:alternate" content="en_GB">
Het formaat is taal_REGIO met een underscore (nl_NL, en_GB), niet het koppelteken van de SEO-hreflang-tag. Zet og:locale op basis van de taal van de actieve pagina, niet een vaste site-standaard, anders claimt elke pagina de verkeerde.
9.2 Vertaal de kaart, niet alleen de tekst
Een vertaalde pagina heeft een vertaalde kaart nodig. Elke taalversie hoort een eigen og:title, og:description en idealiter een eigen og:image te dragen als de afbeelding tekst bevat. Als je de social custom fields uit sectie 7 gebruikt, vul ze dan per vertaling in, zodat de Nederlandse deelactie in het Nederlands leest en de Engelse in het Engels. Een half-vertaalde kaart - Engelse titel op een Nederlandse pagina - oogt onaf voor een Nederlandse lezer.
9.3 Houd og:url binnen de taal
Wijs de og:url van elke versie naar de eigen URL van die taal (/nl/... voor Nederlands, /en/... voor Engels). Dit sluit aan op de Associaties van Joomla en de plugin System - Taalfilter, die elke taal al op een eigen pad houden. Als de artikelvertalingen correct geassocieerd zijn, lijnen de taaltags en de canonieke deel-URL automatisch op. (Voor de onderliggende opzet, zie de aparte Focus On-artikelen over Associaties en Talen.)
10. Social deelknoppen en widgets
10.1 Core heeft geen deelknoppen
Wees duidelijk over een beperking: Joomla core levert geen social-deelknoppen of volgwidgets. Je voegt ze toe met een extensie (een module of contentplugin) of met een paar regels in een template-override. Dat is geen zwakte - het houdt core slank - maar het betekent dat deelknoppen een bewuste keuze zijn, geen standaard.
10.2 Twee soorten deelknop
Er zijn twee heel verschillende manieren om delen toe te voegen, en het verschil is belangrijk voor snelheid en privacy:
| Aanpak | Hoe het werkt | Kosten |
|---|---|---|
| Simpele deellinks | Gewone links naar de deel-URL van elk platform. | Geen JavaScript, geen tracking, heel snel. |
| Officiele widgets | Het script van elk platform (like-/deeltellers). | Zware scripts, cookies van derden, trager. |
Voor de meeste sites wint de simpele link. Hij heeft geen script van derden nodig en laadt direct:
<a href="https://www.linkedin.com/sharing/share-offsite/?url=https://site.tld/pagina"
target="_blank" rel="noopener">Delen op LinkedIn</a>
<a href="https://www.facebook.com/sharer/sharer.php?u=https://site.tld/pagina"
target="_blank" rel="noopener">Delen op Facebook</a>
10.3 De afweging tussen privacy en snelheid
Officiele deelwidgets en like-knoppen laden scripts die cookies van derden zetten en de pagina vertragen. In de EU brengt dat ook toestemmingsplichten met zich mee. Geef de voorkeur aan de lichte links hierboven, tenzij je echt live deeltellers nodig hebt. Bed je toch een platformwidget in, plaats die dan achter toestemming (sectie 11.3) en meet de snelheidskosten.
10.4 Plaats knoppen waar ze helpen
Een paar praktische gewoonten: zet deelknoppen boven en onder een artikel, niet zwevend over de tekst op mobiel; houd de set klein (de drie of vier platforms die je publiek echt gebruikt); en zorg dat de pagina die ze delen correcte Open Graph-tags heeft, anders levert de knop een lelijke kaart hoe mooi het icoon ook is.
Naar boven11. Social login en embeds
11.1 Social login zit niet in core
Joomla core bevat geen "Inloggen met Facebook/Google". Core-authenticatie dekt gebruikersnaam en wachtwoord, plus moderne passkeys via de WebAuthn-plugin. Voor social login voeg je een OAuth-extensie toe. Weeg het zorgvuldig af: social login is handig, maar bindt je accounts aan een derde partij en voegt een privacydimensie toe. Voor veel sites is een schone lokale login plus passkeys de betere standaard. (Voor het volledige beeld, zie het aparte Focus On-artikel over Authenticatie.)
11.2 Social content embedden
Het omgekeerde van naar buiten delen is social content naar binnen halen: een feed met posts, een ingebedde video, een tijdlijn. Je kunt deze inbedden in een Joomla-artikel of een Custom HTML-module, maar elke embed laadt scripts van derden die snelheid en privacy net zo raken als widgets. Bed alleen in wat zijn plek verdient.
11.3 Toestemming voor embeds van derden
Als je social-widgets inbedt die cookies zetten, vereisen EU-regels eerst toestemming. Joomla helpt hier met twee core-plugins:
- Content - Bevestig toestemming (
confirmconsent) - voegt een toestemmingsvinkje toe aan core-formulieren. - System - Privacytoestemming (
privacyconsent) - registreert en volgt toestemming van gebruikers.
Deze blokkeren een script niet vanzelf, maar ze zijn de core-bouwstenen van een toestemmingsworkflow. Het veilige patroon is een social-embed pas te laden nadat de bezoeker akkoord gaat, vaak met een "klik om te laden"-placeholder tot dan.
Naar boven12. Publiceren naar social (automatisering)
12.1 Core post niet automatisch, maar voedt de tools die dat wel doen
Joomla core heeft geen ingebouwde "publiceer dit artikel naar mijn social-accounts". Wat het wel heeft, is een schone uitvoer die automatiseringstools lezen: een RSS-feed. Elke categorie en de aanbevolen-weergave kunnen een feed produceren door &format=feed aan de URL toe te voegen:
https://site.tld/index.php?option=com_content&view=category&id=8&format=feed&type=rss
Richt een dienst als Zapier, Make of IFTTT op die feed, en elk nieuw artikel kan zichzelf automatisch naar je social-accounts posten. Geen extensie in Joomla nodig - de feed is het integratiepunt.
12.2 De Scheduler voor eigen posting
Voor strakkere controle draait de core Scheduler (com_scheduler) van Joomla achtergrondtaken op een tijdschema. Een ontwikkelaar kan een kleine taakplugin schrijven die nieuw gepubliceerde artikelen vindt en de API van een social platform aanroept om ze te posten:
Systeem → Geplande taken → Nieuw → [jouw eigen taak]
Draai: elke 15 minuten
Actie: post nieuwe artikelen naar de social-API
Dit houdt de hele pijplijn binnen Joomla, zonder automatiseringsaccount van derden, ten koste van het schrijven en onderhouden van de taak. (Voor hoe taken werken, zie het aparte Focus On-artikel over de Scheduler.)
12.3 Webhooks beide kanten op
Automatisering kan ook event-gedreven zijn. Een contentplugin die op onContentAfterSave haakt, kan een webhook naar een externe dienst afvuren op het moment dat een artikel gepubliceerd wordt, in plaats van te wachten op een geplande peiling. Dit is de snelste weg van "publiceren" naar "gepost", en hergebruikt de normale plugin-events van Joomla in plaats van een speciale social-functie.
13. Onder de motorkap (ontwikkelaarsweergave)
13.1 Tags schrijven met het Document-object
Elke social-tag is een metadata-invoer op het Document-object van Joomla. De methode setMetaData() neemt een derde argument dat de attribuutnaam zet, en zo verschillen Open Graph (property) en X Cards (name):
use Joomla\CMS\Factory;
$doc = Factory::getApplication()->getDocument();
// Open Graph gebruikt het "property"-attribuut:
$doc->setMetaData('og:title', 'Joomla Social Media-gids', 'property');
$doc->setMetaData('og:type', 'article', 'property');
$doc->setMetaData('og:image', 'https://site.tld/images/social/gids.jpg', 'property');
// X Cards gebruiken het standaard "name"-attribuut:
$doc->setMetaData('twitter:card', 'summary_large_image');
$doc->setMetaData('twitter:site', '@jouwmerk');
Intern bewaart Joomla deze onder _metaTags[$attribute][$name] en de head-renderer schrijft elk als <meta property="..." content="..."> of <meta name="..." content="...">. Die ene methode is het hele mechanisme.
13.2 De juiste plek: een system-plugin
De schone, template-onafhankelijke plek hiervoor is een kleine system-plugin die op het head-compile-event haakt en alleen aan de voorkant draait:
use Joomla\CMS\Factory;
public function onBeforeCompileHead(): void
{
$app = Factory::getApplication();
if (!$app->isClient('site')) {
return;
}
$doc = $app->getDocument();
$doc->setMetaData('og:site_name', 'Peter Martin', 'property');
$doc->setMetaData('og:url', $doc->getBase(), 'property');
$doc->setMetaData('twitter:card', 'summary_large_image');
}
Haken op onBeforeCompileHead houdt de markup uit de template, zodat het een templatewissel overleeft en vanuit een plek over de hele site geldt.
13.3 Lees het live artikel voor accurate tags
Site-brede standaarden zijn niet genoeg; de kaart hoort de echte pagina te weerspiegelen. Haal in een contentweergave het actieve artikel op via de moderne MVC-factory en bouw de tags uit de echte velden:
$app = Factory::getApplication();
$input = $app->getInput();
if ($input->get('option') === 'com_content'
&& $input->get('view') === 'article') {
$id = (int) $input->getInt('id');
$article = $app->bootComponent('com_content')
->getMVCFactory()
->createModel('Article', 'Site', ['ignore_request' => true])
->getItem($id);
$doc = $app->getDocument();
$doc->setMetaData('og:title', $article->title, 'property');
$doc->setMetaData('og:description', $article->metadesc, 'property');
}
Uit $article krijg je ook introtext, images (de JSON met de intro- en volledige afbeeldingen), publish_up en modified - alles wat nodig is voor de afbeelding en de artikeltijd-tags. Om de social custom fields uit sectie 7 te respecteren, laad je ook de velden van het artikel en geef je hun waarden voorrang:
$fields = \Joomla\Component\Fields\Administrator\Helper\FieldsHelper::getFields(
'com_content.article', $article, true
);
// Loop door $fields voor "social-title", "social-image", enz. en pas
// de fallback-hierarchie toe voordat je elke tag schrijft.
13.4 Bouw absolute afbeeldings-URL's
Omdat og:image absoluut moet zijn, geef je nooit het ruwe opgeslagen pad af. Plaats de site-root ervoor:
use Joomla\CMS\Uri\Uri;
$images = json_decode($article->images);
$intro = $images->image_intro ?? 'images/social/standaard.jpg';
$doc->setMetaData('og:image', Uri::root() . $intro, 'property');
13.5 De events van de Schema.org-plugin
Als je het core Schema.org-systeem uitbreidt in plaats van je eigen te schrijven, biedt het events waarop je je kunt abonneren: onSchemaPrepareForm om velden toe te voegen, onSchemaPrepareData om de data vorm te geven, onSchemaPrepareSave om die op te slaan, en onSchemaBeforeCompileHead om de uiteindelijke JSON-LD aan te passen. Een child-schemaplugin (de core-set bevat article, organization, person, event en meer) is de ondersteunde manier om een nieuw type gestructureerde data toe te voegen, inclusief de sameAs social-links uit sectie 8.
14. Headless en de Web Services API
14.1 De tags worden de taak van de front-end
Als je Joomla headless draait - een aparte React-, Vue- of statische front-end die content via de Web Services API ophaalt - rendert Joomla de HTML-head niet meer, dus geeft het geen Open Graph- of X Card-tags af. Joomla levert nog wel het ruwe materiaal:
curl -H "X-Joomla-Token: <token>" \
https://site.tld/api/index.php/v1/content/articles/42
De JSON bevat title, introtext, metadesc, images, publish_up en modified - alles wat de front-end nodig heeft om de social-tags zelf te herbouwen.
14.2 Render echte HTML voor de crawlers
Social-crawlers halen HTML op en draaien bijna geen JavaScript. Een headless front-end moet daarom server-side renderen (SSR) of statische pagina's genereren, zodat de crawler voltooide <meta>-tags in de bron ziet. Een lege schil die zich pas vult nadat de browser JavaScript draait, levert een lege kaart. De regel: elke og:- en twitter:-tag moet in de server-gerenderde HTML bestaan, gemapt uit de API-velden, voordat de pagina een crawler bereikt.
15. Meten en debuggen van social
15.1 De platform-debuggers
Elk groot platform biedt een gratis tool die je URL ophaalt, de kaart toont die het bouwt en de tags opsomt die het las. Gebruik ze telkens als je een tag verandert - ze forceren ook een verse crawl, wat de gecachte kaart van het platform leegmaakt:
| Platform | Tool |
|---|---|
| Facebook / WhatsApp | Sharing Debugger (developers.facebook.com). |
| Post Inspector. | |
| X | De Card-validator (waar beschikbaar). |
Als je een tag herstelt maar de oude kaart blijft tonen, haal de pagina dan door de debugger om een her-scrape te forceren. De kaart is gecached, dus alleen bewerken ververst hem niet.
15.2 Volg social-verkeer met UTM-tags
Om te zien welke deelacties bezoekers brengen, voeg je UTM-parameters toe aan de links die je post, zodat analytics social-verkeer van de rest kan scheiden:
https://site.tld/social-media-gids?utm_source=linkedin&utm_medium=social&utm_campaign=focus-on
Dan kun je in Google Analytics 4 via de bron en het medium sessies en conversies per platform vergelijken. Dit verandert "we posten op social" in "LinkedIn stuurde 40 bezoekers die elk drie pagina's lazen".
15.3 Houd verwijzingen van de platforms in de gaten
Zelfs zonder UTM-tags registreert analytics de verwijzende host. Filter Rapporten → Acquisitie → Verkeersacquisitie op de social-domeinen om echte verwezen bezoeken te zien:
facebook.com / m.facebook.com
linkedin.com
t.co (X-linkomhulsel)
instagram.com
Vergelijk betrokkenheid en conversies met organisch zoeken. Dat vertelt je niet alleen dat mensen je links delen, maar dat de deelacties bezoekers sturen die handelen.
Naar boven16. Veelgemaakte fouten en valkuilen
16.1 Geen afbeelding in de kaart
Symptoom: een gedeelde link toont tekst maar een lege of ontbrekende afbeelding.
Oplossing: maak og:image een absolute URL (sectie 6.2), zorg dat het bestand minstens 600x315 is en controleer of het platform het kan bereiken (niet achter een login of een geblokkeerde map).
16.2 De kaart wil niet bijwerken
Symptoom: je hebt een titel of afbeelding gecorrigeerd, maar de oude kaart blijft verschijnen.
Oplossing: het platform cachete de oude scrape. Haal de URL door de platform-debugger (sectie 15.1) om een verse ophaling te forceren.
16.3 Dezelfde afbeelding op elke pagina
Symptoom: elk gedeeld artikel toont je logo of een vaste stockfoto.
Oplossing: je template of plugin hardcodeert een og:image. Stap over naar een bron die het social-veld of de intro-afbeelding van elk artikel leest, met een site-standaard alleen als laatste terugval (secties 6.3 en 7.2).
16.4 Tags toegevoegd door JavaScript
Symptoom: de kaart is leeg, ook al verschijnen de tags in de element-inspector van de browser.
Oplossing: crawlers lezen de ruwe HTML, niet de door JavaScript gebouwde DOM. Geef de tags server-side af. In Joomla betekent dat een plugin of template, geen clientscript.
16.5 Vertrouwen op de title-tag voor de kaart
Symptoom: de kaartkop leest "Over ons - Mijn bedrijf - Joomla" met de merksuffix.
Oplossing: zet een expliciete og:title zonder de site-naamsuffix, los van de SEO-<title> (sectie 3.2).
16.6 Zware deelwidgets vertragen de pagina
Symptoom: officiele like- en deelknoppen voegen seconden laadtijd toe en zetten cookies van derden.
Oplossing: vervang ze door simpele deellinks (sectie 10.2) en plaats elke echte widget achter toestemming.
16.7 Inconsistente merknaam en handles
Symptoom: og:site_name, de schemanaam en twitter:site verschillen, en platforms schrijven deelacties aan de verkeerde identiteit toe.
Oplossing: vermeld overal een merknaam en een handle, en som je profielen een keer op met sameAs (sectie 8).
16.8 Een kaart voor elke taal
Symptoom: de Nederlandse pagina deelt met een Engelse titel en een Engelse afbeelding.
Oplossing: vertaal de social-velden per taal en zet og:locale op basis van de actieve pagina, en associeer dan de vertalingen zodat elke versie zijn eigen kaart afgeeft (sectie 9).
17. Best practices
Als je maar een paar dingen uit dit artikel onthoudt, onthoud dan deze:
- Zet de zes Open Graph-kerntags op elke belangrijke pagina: title, description, image, url, type, site_name.
- Voeg
twitter:card = summary_large_imagetoe en laat X de rest van Open Graph lenen. - Maak
og:imageeen absolute URL en ontwerp hem op 1200x630. - Geef elk artikel een eigen intro-afbeelding zodat de kaart niet altijd dezelfde is.
- Voeg Social Title-, Description- en Image-custom-fields toe zodat redacteuren de kaart per artikel beheren.
- Bouw een fallback-hierarchie achter die velden zodat geen pagina ooit als een leeg vakje deelt.
- Schrijf
og:titleenog:descriptionvoor de feed, niet alleen voor de zoeksnippet. - Zoek uit welke bron je tags afgeeft (template, plugin of eigen) en houd er maar een.
- Som je social-profielen een keer op met
sameAsin de core Schema.org Organization-data. - Zet op meertalige sites
og:localeenog:locale:alternateen vertaal de kaart per taal. - Geef de voorkeur aan simpele deellinks boven zware platformwidgets, en plaats embeds achter toestemming.
- Automatiseer posten vanuit een core RSS-feed of een Scheduler-taak, niet met de hand.
- Verifieer elke wijziging met de platform-debuggers, die ook de gecachte kaart verversen.
- Volg social-bezoeken met UTM-tags en het verwijzingsrapport.
- Houd een merknaam en een handle aan over tags, schema en profielen.
18. In het kort
OG-KERNTAGS og:title og:description og:image og:url og:type og:site_name
OG TYPE article voor content, website voor de homepage
ARTIKEL EXTRA article:published_time / modified_time / author / section
X CARD twitter:card=summary_large_image + twitter:site + creator
ATTRIBUUT og: gebruikt property=, twitter: gebruikt name=
AFBEELDING 1200x630, ratio 1.91:1, absolute URL, onder ~1 MB
AFB. BRON social veld → intro-afb → volledige afb → standaard
DYN. AFB. genereer 1200x630-kaart uit artikeldata, dan cachen
SOCIAL VELDEN Custom Fields: Social Title / Description / Image per artikel
FALLBACK eerste niet-lege waarde wint; laat geen tag leeg
TAG-BRON niet core: template, plugin of eigen system-plugin
DOCUMENT API $doc->setMetaData('og:title', $val, 'property')
PLUGIN-HOOK onBeforeCompileHead, alleen client site
ABSOLUTE URL Uri::root() . $imagePath
PROFIELEN sameAs-lijst in core Schema.org Organization/Person
SCHEMA-PLUGIN System - Schema.org (core, Joomla 5/6)
SCHEMA-EVENTS onSchemaPrepareForm / PrepareData / PrepareSave /
BeforeCompileHead
MEERTALIG og:locale + og:locale:alternate; kaart per taal vertalen
DEELKNOPPEN niet core; simpele links beter dan zware widgets
TOESTEMMING confirmconsent + privacyconsent voor embeds
SOCIAL LOGIN niet core; OAuth-extensie of WebAuthn-passkeys
AUTOMATISERING RSS-feed (&format=feed) + Zapier/Make/IFTTT
SCHEDULER com_scheduler-taak post nieuwe artikelen via API
WEBHOOK onContentAfterSave vuurt een externe post af
HEADLESS API geeft velden; front-end rendert de tags (SSR)
DEBUG Facebook Sharing Debugger / LinkedIn Post Inspector
METEN UTM-tags + GA4-verwijzingsrapport (facebook/linkedin/t.co)
DB-VELDEN #__content: title, introtext, images, metadesc, publish_up
#__fields_values: de social custom field-waarden
Naar boven19. Samenvatting
Social media-optimalisatie in Joomla gaat minder over meer posten en meer over het beheersen van de kleine kaart die verschijnt telkens als je link gedeeld wordt. Met Joomla en een beetje discipline kun je:
- De deelkaart ontwerpen met de core Open Graph-tags en een X Card-regel.
- De afbeelding beheersen met een bewuste, absolute, correct gemaakte
og:imageper artikel. - Redacteuren eigenaar maken met social custom fields en een betrouwbare fallback-hierarchie erachter.
- Je tag-bron bewust kiezen - template, extensie of een kleine eigen plugin - en er maar een houden.
- Je identiteit aangeven met consistente merkfeiten en een
sameAs-lijst in de core Schema.org-data. - Elke taal bedienen met locales, kaarten en geassocieerde vertalingen per taal.
- Delen zorgvuldig toevoegen met lichte links in plaats van zware widgets, en toestemming voor embeds.
- Publiceren automatiseren vanuit een core RSS-feed, een Scheduler-taak of een content-webhook.
- Het resultaat meten met de platform-debuggers, UTM-tags en het verwijzingsrapport.
De rode draad is dat Joomla alles al bevat wat een goede deelkaart nodig heeft - de titel, de afbeelding, de datums, de auteur. Social-optimalisatie is het werk om die feiten schoon aan de platforms te presenteren, in tags die ze kunnen lezen, zodat de link zijn werk doet nog voordat iemand klikt.
Als je links als lege vakjes gedeeld worden, of de verkeerde afbeelding blijft verschijnen wat je ook uploadt, komt het meestal neer op een van de kleine dingen uit dit artikel: een relatief afbeeldingspad, een gecachte kaart of een template die stilletjes je tags overschrijft. Herstel de bron een keer en elke toekomstige deelactie ziet eruit zoals je bedoelt.
Naar boven

Peter is Joomla specialist en Linux admin voor snelle, veilige en schaalbare websites.
Veelgestelde vragen
Social media-optimalisatie (SMO) is het proces waarbij je website er op zijn best uitziet wanneer deze op sociale media wordt gedeeld. Hierbij wordt gebruikgemaakt van metadata zoals Open Graph- en X (Twitter)-cards om de titel, beschrijving en afbeelding te bepalen die in linkvoorbeelden worden weergegeven. Goede SMO verbetert de zichtbaarheid, stimuleert het aantal klikken en zorgt voor een consistente merkbeleving op alle sociale platforms.
Joomla bevat de metadata die nodig is voor zoekmachines, maar genereert standaard geen Open Graph- of X Card-tags. Deze tags worden doorgaans toegevoegd door je sjabloon, een speciale plug-in of een aangepaste extensie. Als dit eenmaal correct is geconfigureerd, kan elke gedeelde pagina aantrekkelijke voorbeelden weergeven met de juiste titel, beschrijving en afbeelding.
Sociale platforms slaan pagina-informatie op in de cache na de eerste keer delen. Zelfs nadat je jouw website hebt bijgewerkt, kan het oude voorbeeld blijven staan totdat het platform zijn cache vernieuwt. Je kunt meestal een vernieuwing forceren met de foutopsporingshulpmiddelen van het platform. Controleer ook of je pagina de juiste Open Graph-tags bevat en of de afbeelding voldoet aan de aanbevolen afmetingen.
Gebruik voor het beste resultaat een afbeelding van 1200 × 630 pixels met een beeldverhouding van 1,91:1. Dit formaat werkt goed op Facebook, LinkedIn, X en veel berichtenapps. De afbeelding moet scherp zijn, relevant voor de pagina en weinig of geen tekst bevatten om bijsnijden te voorkomen en de leesbaarheid te verbeteren.
Open Graph-tags verbeteren je Google-rangschikking niet direct. Ze vergroten echter wel de kans dat mensen op je content klikken en deze delen op sociale media. Meer betrokkenheid en een bredere verspreiding kunnen indirect de zichtbaarheid van je website verbeteren en meer bezoekers aantrekken. Ook zoekmachines en AI-systemen profiteren van consistente metadata bij het interpreteren van je content.
Je kunt uitstekende resultaten bij het delen via sociale media bereiken door unieke paginatitels en metabeschrijvingen te schrijven, hoogwaardige uitgelichte afbeeldingen te gebruiken, Open Graph- en X Card-metadata toe te voegen via je template of een kleine plugin, en je pagina’s te testen met validatietools voor sociale media voordat je ze publiceert. In de meeste gevallen is slechts een minimale hoeveelheid extra functionaliteit nodig, in plaats van een zware sociale media extensie.


