Info
Je instinct om dit in een aparte sectie onder te brengen is precies de juiste. De beste manier om dit in Craft CMS 4 aan te pakken is door gebruik te maken van één sectie met verschillende 'Entry Types' (instaptypes) voor de Nederlandse en Engelse versie.
Hier is een gedetailleerd stappenplan:
Deze methode is de meest elegante en 'Craft-native' oplossing. Je houdt alle content van de schrijfwijzer logisch bij elkaar, maar geeft jezelf de volledige vrijheid om de velden en structuur per taal te bepalen.
We maken een speciale sectie voor de schrijfwijzer. Omdat een schrijfwijzer wellicht subpagina's zou kunnen hebben (bijv. /schrijfwijzer/spelling, /schrijfwijzer/tone-of-voice), is een Structure-sectie het meest flexibel. Als je zeker weet dat het altijd maar één pagina per taal is, kun je ook voor Single kiezen (maar dan heb je twee Single-secties nodig, wat minder netjes is). Ik raad een Structure aan.
Ga naar Settings → Sections.
Klik op + New section.
Naam: Schrijfwijzer
Handle: schrijfwijzer (of iets vergelijkbaars)
Section Type: Kies Structure.
Site Settings: Configureer hier de URL's voor beide talen.
Nederlandse site:
Entry URI Format: schrijfwijzer/{slug}
Template: _schrijfwijzer/index (of een pad naar keuze)
Zorg dat deze site ingeschakeld is.
Engelse site:
Entry URI Format: writing-guide/{slug}
Template: _schrijfwijzer/index (je kunt dezelfde template gebruiken)
Zorg dat deze site ingeschakeld is.
Sla de sectie op.
Dit is de kern van de oplossing. In plaats van één set velden voor beide talen, definiëren we per taal een eigen set.
Ga naar Settings → Sections en klik op je zojuist aangemaakte Schrijfwijzer sectie.
Ga naar het tabblad Entry Types. Je ziet nu een standaard "Default" entry type. Hernoem deze of verwijder hem.
Klik op + New entry type.
Naam: Schrijfwijzer NL
Handle: schrijfwijzerNl
Sla op.
Klik nogmaals op + New entry type.
Naam: Schrijfwijzer EN
Handle: schrijfwijzerEn
Sla op.
Nu ga je per Entry Type de unieke velden toevoegen.
Klik op Schrijfwijzer NL in de lijst met Entry Types.
Je komt nu in de Field Layout Designer. Hier sleep je alle velden die je nodig hebt voor de Nederlandse schrijfwijzer.
Dit kan bijvoorbeeld een Matrix-veld zijn genaamd Inhoud NL met block types zoals Tekstblok, Voorbeeld met Uitleg, Opsomming, Tussentitel.
Ga terug en klik op Schrijfwijzer EN.
Sleep hier de velden die je nodig hebt voor de Engelse versie.
Dit kan een ander Matrix-veld zijn, Content EN, met block types als Text Block, Do and Don't Example, List, Subheading.
Belangrijk: De velden zelf hoeven niet als 'vertaalbaar' te worden ingesteld. De scheiding zit hem in de Entry Types, niet in de velden.
Nu kunnen de redacteuren de content gaan vullen.
Ga naar Entries → Schrijfwijzer.
Klik op + New entry.
Je krijgt nu de keuze: wil je een Schrijfwijzer NL of een Schrijfwijzer EN aanmaken?
Kies Schrijfwijzer NL. Vul de titel (bijv. "Schrijfwijzer") en de content in de Nederlandse velden. Sla op.
Open de zojuist aangemaakte entry. Gebruik de site-switcher bovenaan om naar de Engelse site te gaan.
Craft zal zeggen "This entry is not saved for this site." Klik op Create entry.
Cruciaal: Je kunt nu voor de Engelse versie een ander Entry Type kiezen! Selecteer Schrijfwijzer EN in de dropdown.
Nu zie je de Engelse velden. Vul de titel in (bijv. "Writing Guide") en de Engelse content. Sla op.
Je hebt nu één 'entry' die in het Nederlands een compleet andere structuur en content heeft dan in het Engels, maar die wel aan elkaar gekoppeld zijn via de multi-site functionaliteit van Craft.
In je template (_schrijfwijzer/index.twig) moet je nu onderscheid maken tussen de twee Entry Types. Dit kan heel eenvoudig met een switch statement op de handle van het Entry Type.
{# _templates/_schrijfwijzer/index.twig #}
{% extends "_layout.twig" %}
{% block content %}
<h1>{{ entry.title }}</h1>
{# Check welk entry type we aan het renderen zijn #}
{% switch entry.type.handle %}
{# Case voor de Nederlandse versie #}
{% case "schrijfwijzerNl" %}
{# Loop door je Nederlandse Matrix-veld #}
{% for block in entry.inhoudNl.all() %}
{% if block.type == "tekstblok" %}
{{ block.tekst | markdown }}
{% elseif block.type == "voorbeeldMetUitleg" %}
<div class="example">
<h4>Voorbeeld</h4>
<p>{{ block.voorbeeldtekst }}</p>
<p><strong>Uitleg:</strong> {{ block.uitleg }}</p>
</div>
{% endif %}
{# ... etc. voor alle NL blokken #}
{% endfor %}
{# Case voor de Engelse versie #}
{% case "schrijfwijzerEn" %}
{# Loop door je Engelse Matrix-veld #}
{% for block in entry.contentEn.all() %}
{% if block.type == "textBlock" %}
{{ block.text | markdown }}
{% elseif block.type == "doAndDontExample" %}
<div class="example-en">
{# ... je Engelse opmaak ... #}
</div>
{% endif %}
{# ... etc. voor alle EN blokken #}
{% endfor %}
{% endswitch %}
{% endblock %}