# CodePress CMS Plugins

Deze map bevat plugins voor de CodePress CMS. Elke plugin heeft zijn eigen submap met de plugin code.

## Plugin Structuur

Elke plugin map moet het volgende bevatten:

```
PluginName/
├── PluginName.php          # Hoofd plugin bestand
├── README.md              # Plugin documentatie (optioneel)
├── config.json           # Plugin configuratie (optioneel)
└── assets/               # CSS, JS, images (optioneel)
    ├── css/
    ├── js/
    └── images/
```

## Beschikbare Plugins

### HTMLBlock
Toont een custom HTML blok in de sidebar met pagina-informatie en navigatie.

**Locatie:** `HTMLBlock/HTMLBlock.php`

**Functies:**
- Toont huidige pagina informatie
- Dynamische navigatie
- Bestandsinformatie
- Interactive controls

## Plugin Development

### Basis Plugin Class

```php
<?php

class MyPlugin
{
    private ?CMSAPI $api = null;
    
    public function setAPI(CMSAPI $api): void
    {
        $this->api = $api;
    }
    
    public function getSidebarContent(): string
    {
        return '<div>Mijn plugin content</div>';
    }
}
```

### Beschikbare API Methodes

- `getCurrentPage()` - Huidige pagina data
- `getCurrentPageTitle()` - Huidige pagina titel
- `getMenu()` - Menu structuur
- `getConfig($key)` - Configuratie waardes
- `translate($key)` - Vertalingen
- `getCurrentLanguage()` - Huidige taal
- `isHomepage()` - Check of homepage
- `getCurrentPageFileInfo()` - Bestandsinformatie
- `createUrl($page, $lang)` - URL generatie

### Plugin Hooks

Plugins kunnen de volgende methodes implementeren:

- `getSidebarContent()` - Content voor sidebar
- `setAPI(CMSAPI $api)` - API injectie

## Configuratie

Plugins kunnen een `config.json` bestand hebben:

```json
{
    "enabled": true,
    "settings": {
        "option1": "value1",
        "option2": "value2"
    }
}
```

## Installatie

1. Maak een nieuwe map in `plugins/`
2. Plaats de plugin class in `PluginName/PluginName.php`
3. Optioneel: voeg README.md en config.json toe
4. De plugin wordt automatisch geladen door de CMS

## Best Practices

- Gebruik `htmlspecialchars()` voor output
- Implementeer `setAPI()` voor CMS toegang
- Volg PSR-12 coding standards
- Gebruik namespace indien nodig
- Documenteer je plugin met README.md