Files
CodePress/guide/nl/admin-beheerder/content-beheer.md
T

7.0 KiB

Content beheer

CodePress gebruikt een boom weergave (/admin/content) voor content-beheer: een bestandsbrowser zijbalk + CodeMirror editor, uniform met de plugin- en thema-editors. De oude lijst/tabel weergave is verwijderd.

Content editor

Bestandsbrowser zijbalk

  • Toont de geneste bestandsboom van content/, met een klikbare content root bovenaan
  • Verborgen mappen (.bak, .git) en dotfiles worden overgeslagen
  • Klik op een bestand om het te openen in de CodeMirror editor
  • Klik op een map (mapnaam) om de map te selecteren — rechts verschijnt het map detail paneel
  • De chevron (▶/▼) naast een map klapt deze in/uit zonder de map te selecteren
  • Mappen die het actieve bestand bevatten zijn automatisch uitgeklapt
  • Per map staan actie-knoppen: nieuw bestand (plus-icoon), nieuwe map (map-plus-icoon) — deze opereren op de geselecteerde map
  • Per bestand staan actie-knoppen: hernoemen/verplaatsen (potlood), verwijderen (prullenbak) — verschijnen bij hover

Bestanden verslepen (drag-and-drop)

  • Sleep een bestand of map naar een andere map om het te verplaatsen
  • Tijdens het slepen worden geldige doel-mappen highlight getoond
  • De verplaatsing gebeurt via een AJAX-call — de pagina herlaadt automatisch na succes
  • Beveiliging: een map kan niet naar zichzelf of naar een submap verplaatst worden
  • Path-traversal bescherming: alle paden blijven binnen de content map

Bewerkbare bestandstypen

.md (Markdown), .php (PHP), .html (HTML) — consistent met de bestaande content-edit pagina.

Alle types ondersteunen --- frontmatter (layout, created, edited, plugins). De CMS parseMetadata() haalt de frontmatter eruit vóór verwerking. Bij PHP bestanden wordt de frontmatter uit de output verwijderd.

PHP content bestanden

PHP bestanden kunnen op twee manieren content leveren:

  1. Echo (output buffering): alles wat echod of outside <?php staat wordt als content gebruikt
  2. Return (callback stijl): return '<h1>Hallo</h1>'; — de geretourneerde string wordt als content gebruikt

In PHP bestanden is de ContentAPI beschikbaar via $api:

<?php
$menu = $api->getMenu();
$pages = $api->getAllPages();
$config = $api->getConfig('site_title');
return '<h1>' . htmlspecialchars($config) . '</h1>';

Frontend URL's en bestandsnamen

De CMS zoekt bestanden in volgorde: .md.php.html. Als bestanden dezelfde naam hebben (bijv. test.md en test.php), opent /nl/test altijd test.md. Om een specifiek bestandstype te openen, voeg de extensie toe aan de URL:

  • /nl/test → opent test.md (of .php / .html als .md niet bestaat)
  • /nl/test.php → opent test.php (expliciete extensie)
  • /nl/test.html → opent test.html (expliciete extensie)

De preview link in de editor gebruikt automatisch de extensie voor niet-.md bestanden.

Image-grootte instellen (Markdown)

In de markdown editor-toolbar staat een "Afbeelding grootte" knop (expand-icoon):

  1. Selecteer een afbeelding in de editor in markdown formaat ![alt](url)
  2. Klik op de "Afbeelding grootte" knop
  3. Vul breedte en/of hoogte in (px of %, leeg = niet instellen)
  4. De {:width=... height=...} syntax wordt aan de afbeelding toegevoegd of vervangen

Voorbeeld:

![logo](/content/_images/logo.png){:width="200" height="100"}

Bestaande {:width=...} waarden worden in de prompts getoond. De grootte-attributen worden in de frontend als width/height HTML-attributen op de <img> tag gezet.

Images in content

Images in content/ worden via de /-media/ endpoint geserveerd (content/ staat buiten de webroot). De markdown syntax ![alt](url) met lokale URLs (relatief zoals image.jpg, of absoluut zoals /content/_images/image.jpg) wordt automatisch herschreven naar /-media/.... Externe URLs (https://...) worden ongewijzigd gelaten.

Nieuw bestand aanmaken

  • Selecteer de doelmap in de zijbalk (klik op de mapnaam), of gebruik de root
  • Klik op Nieuw bestand (in het map-detail paneel of bovenaan)
  • Geef een pad op binnen content (bijv. nl.pagina of blog/nl.post)
  • Kies het bestandstype (Markdown/PHP/HTML)
  • Submappen worden automatisch aangemaakt
  • Frontmatter met layout, created, edited wordt automatisch gegenereerd
  • Het nieuwe bestand wordt aangemaakt in de geselecteerde map

Bestand uploaden

  • Selecteer de doelmap in de zijbalk (klik op de mapnaam), of gebruik de root
  • Klik op Upload (in het map-detail paneel of bovenaan) om bestanden naar de geselecteerde map te uploaden
  • Toegestaan: afbeeldingen, video, audio, PDF, ZIP, office docs, CSS, SCSS, JS, JSON, HTML, MD
  • Path-traversal bescherming: doelmap moet binnen content/ blijven
  • Na de upload keer je terug naar de geselecteerde map

Bestand hernoemen / verwijderen

  • Open het bestand in de editor (klik op de bestandsnaam in de zijbalk)
  • Hernoemen: bewerk het Bestandsnaam veld rechts boven de editor en klik op Opslaan — het bestand wordt direct hernoemd
  • Verwijderen: klik op de verwijder-knop (prullenbak) naast het bestand in de zijbalk, met bevestiging

Mappen beheer

  • Klik op een map in de zijbalk om het map-detail paneel rechts te openen
  • Map hernoemen: bewerk het Mapnaam veld in het map-detail paneel en klik op Opslaan
  • Nieuw bestand / Nieuwe map / Uploaden in deze map: gebruik de knoppen in het map-detail paneel — ze opereren op de geselecteerde map
  • Map verwijderen: verwijder-knop in het map-detail paneel (alleen lege mappen)
  • De content-root is ook selecteerbaar (klik op "content" bovenaan de boom) — toont het map-detail paneel voor de root (hernoemen uitgeschakeld)

Layout selectie

Op de editor-pagina kun je de layout kiezen uit de layouts gedefinieerd in theme.json (template mapping). De geselecteerde layout wordt opgeslagen in de frontmatter layout: key.

Plugins op pagina's

  • Alleen actieve content plugins (uit plugin.json met type: "content") verschijnen in de plugin multiselect; system plugins (zoals Statistics/Logs/Dashboard) zijn uitgesloten
  • Kies via de multiselect welke plugins op de pagina draaien (gebruik Ctrl/Cmd+klik voor meerdere)
  • De plugin selectie wordt opgeslagen in de frontmatter plugins: key

Backup integratie

Bovenaan de content-editor staat een Backup knop die naar de backup-pagina (/admin/content-backup) leidt voor ZIP backup/restore en (indien beschikbaar) git versiebeheer. Git integratie in de editor-zijbalk is verwijderd; git wordt later een systeem plugin.

Frontmatter

De editor toont de Aangemaakt en Bewerkt timestamps (read-only, automatisch bijgewerkt bij elke opslag). De edited: waarde wordt bij elke save vernieuwd.

---
layout: left_sidebar
created: 2026-08-19 10:30:25
edited: 2026-08-20 14:22:01
plugins: HTMLBlock, Navigation
---

# Pagina titel

Content...

Frontmatter

De editor werkt de frontmatter live bij bij wijzigingen van layout of plugin selectie:

---
layout: left_sidebar
created: 2026-08-19 10:30:25
edited: 2026-08-20 14:22:01
plugins: HTMLBlock, Navigation
---

# Pagina titel

Content...