# Plugins ## Plugin types CodePress kent twee soorten plugins, bepaald door het `type` veld in `plugin.json`: - **Content plugins** (`type: "content"`) — Verschijnen in de sidebar en in de plugin selectie op content-edit pagina's. Bieden sidebar content via `getSidebarContent()`. - **Systeem plugins** (`type: "system"`) — Worden geladen door PluginManager maar verschijnen NIET in de sidebar. Bieden functionaliteit via admin menu, routes en de CMSAPI. Geregistreerd via `getAdminMenu()` en `getAdminRoutes()`. Bij afwezigheid van een `type` veld wordt `content` aangenomen. ## Essentiële plugins Essentiële plugins zijn gedefinieerd in `getProtectedPlugins()` in `public/admin.php`. Huidige essentiële plugin: **Navigation**. Deze plugins: - Kunnen NIET worden gedeactiveerd - Kunnen NIET worden bewerkt - Kunnen NIET worden verwijderd Op de plugins pagina krijgen ze een **Essentieel** badge i.p.v. de actieknoppen. ## Plugins beheren - **Activeren/Deactiveren** — Plugin aan/uit zetten (niet voor essentiële plugins) - **Bewerken** — Plugin code aanpassen in CodeMirror (niet voor essentiële plugins) - **Configuratie** — Plugin instellingen bewerken - **Verwijderen** — Plugin map verwijderen (niet voor essentiële plugins) De admin plugins pagina toont een **Content** of **Systeem** badge per plugin. ## Nieuwe plugin aanmaken 1. Ga naar **Plugins** → **Nieuwe plugin** 2. Geef naam op (bijv. `MijnPlugin`) — dit wordt de mapnaam 3. Kies het type: **Content** of **Systeem** 4. Het bestand `MijnPlugin.php` wordt aangemaakt (NIET `plugin.php`) 5. Bewerk de plugin code in CodeMirror 6. Activeer de plugin ## Plugin bestandsnaam Plugin PHP bestanden heten `.php` (bijv. `Navigation.php`, `HTMLBlock.php`). `PluginManager` laadt `$pluginDir . '/' . $pluginName . '.php'`. ## Plugin CSS - Content en systeem plugins kunnen eigen CSS hebben in `assets/scss/` en `assets/css/` - Plugin CSS wordt automatisch geladen ná theme CSS (in `base.twig`), zodat thema's plugin styling kunnen overschrijven - Plugin assets worden geserveerd via `cms/router.php` op URL `/plugins//assets/...`