Search by

dasformt / kirby-consent

flossomat

Einwilligung mit Platzhalter für externe Dienste in Kirby

Package info

github.com/flossomat/kirby-consent

Language:JavaScript

Type:kirby-plugin

pkg:composer/dasformt/kirby-consent

Statistics

Installs: 10

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.2 2026-10-08 19:24 UTC

This package is auto-updated.

Last update: 2026-11-06 23:43:05 UTC


README

Einwilligung für externe Dienste in Kirby. Ohne Zustimmung bleibt ein Platzhalter, Skripte und iframes werden erst danach geladen.

Installation

composer require dasformt/kirby-consent

Am Ende des öffentlichen Footers, nach den Skripten, die auf die Entscheidung warten:

<?php snippet('consent') ?>

Die Entscheidung liegt in localStorage. Einstellungen erneut öffnen:

<button type="button" data-consent-open-settings>Datenschutz-Einstellungen</button>

Dienste

Kategorien in site/config/config.php unter dasformt.consent. Texte, Speicherkey und Asset-URLs sind projektspezifisch.

'dasformt.consent.storageKey' => 'projekt-consent',
'dasformt.consent.version' => 1,
'dasformt.consent.position' => 'right', // left | center | right
'dasformt.consent.categories' => [
    'maps' => [
        'label' => 'Karten',
        'description' => 'Karten werden von einem externen Dienst geladen.',
        'placeholder' => 'Ohne Einwilligung stellen wir keine Verbindung her.',
        'button' => 'Karte anzeigen',
        'assets' => [
            ['type' => 'style', 'href' => 'https://example.com/map.css'],
            ['type' => 'script', 'src' => 'https://example.com/map.js'],
        ],
    ],
],

Ein Dienst ohne assets wird nur eingeblendet. Dafür liegt das Markup in einem <template>.

Gate

<div data-consent-gate="maps"></div>
<div data-consent-gate="media">
    <template><!-- iframe --></template>
</div>

data-consent-title, data-consent-text und data-consent-button überschreiben den Text der Kategorie.

Skripte starten nach consentready oder consentchange und prüfen dasformtConsent.has('maps'). Der Platzhalter .consent-placeholder muss weg sein, bevor der Dienst in denselben Container schreibt.

API: get, has, grant, acceptAll, denyOptional, openSettings.

Farben über --consent-accent, --consent-text, --consent-surface, --consent-placeholder.

Lizenz

MIT