Skins

Ein Skin ist – ähnlich eines WordPress-Themes – ein Ordner, der alle Vorlagen und Ressourcen für die Darstellung der Frontend-Elemente des Plugins enthält:

  • Templates (PHP)
  • JavaScript-Dateien
  • CSS-Dateien
  • Bilddateien
  • Fonts etc.

Das Notify-Plugin-Verzeichnis enthält ein Standard-Skin im Unterordner skins/default:

…/wp-content/plugins
╷
├── /immonex-notifyPlugin-Verzeichnis
│   ╷
│   └─ /skins
│      ╷
│      ├─ /default ← Standard-Skin
│      …
…

Zusätzliche, benutzerdefinierte Skins (→ Custom Skins) können im Child-Theme-Verzeichnis abgelegt werden:

…/wp-content/themes/<child-theme-name>/immonex-notify/<skin-name>

Auswahl

Die Auswahl des aktiven Skins erfolgt über die Plugin-Optionen im WordPress-Backend unter Suchaufträge → Einstellungen → [Design & Struktur] Skin.

Skin-Auswahl in den Plugin-Optionen (WP-Backend)

Die Ordnerstruktur könnte in diesem Beispiel so aussehen:

…/wp-content/plugins/immonex-notify/skins
╷
└── /default ← Standard-Skin "NotifyQuiwi"
…/wp-content/themes//immonex-notify
╷
├── /agnus ← Custom Skin "Agnus"
├── /denise ← Custom Skin "Denise"
└── /paula ← Custom Skin "Paula"

Die Ordnernamen sind unabhängig vom eigentlichen (angezeigten) Skin-Namen, der in der Datei index.php festgelegt wird (siehe unten).

Aufbau

Der grundlegende Aufbau eines Skins ist denkbar einfach:

skin-name
╷
├── /css
│   ╷
│   └── index.css
│
├── /js
│   ╷
│   └── index.js
│
└── index.php

Die Datei index.php enthält nur den Namen des (Add-on-)Skins für die Auswahl:

<?php
/**
 * Skin Name: NotifyQuiwi
 */
die( "Don't event think about it!" );

Die Dateien index.css und index.js des aktiven Skins werden im Frontend automatisch eingebunden. Das gilt auch für weitere Dateien mit den folgenden Namen, sofern vorhanden:

  • extend.css / extend.js
  • custom.css / custom.js
  • frontend.css / frontend.js
  • skin.css / skin.js

Je nach Umfang bietet es sich an, bei der Entwicklung mit mehreren Quelldateien zu arbeiten, die anschließend per Bundler bzw. Präprozessor à la webpack, Sass & Co. kompiliert werden. Die kompilierten und/oder minimierten Varianten der Dateien sollten in diesem Fall im alternativen Ordner assets (anstatt css und js) gespeichert werden:

skin-name
╷
├── /assets
│   ╷
│   ├── index.css
│   └── index.js
…

Auch die Aufteilung der CSS- und JS-Dateien in separate Unterordner ist hier möglich:

skin-name
╷
├── /assets
│   ╷
│   ├── /css
│   │   ╷
│   │   ├── index.css
│   │   ├── custom.css
│   │   …
│   └── /js
│       ╷
│       ├── index.js
│       ├── extend.js
…       …

Jede der o. g. CSS/JSS-Dateien wird nur einmalig eingebunden. Sind mehrere Dateien gleichen Namens im Skin-Ordner enthalten, erfolgt die entsprechende Priorisierung anhand der Unterordner in dieser Reihenfolge:

  • assets/css / assets/js
  • assets
  • css / js

Ist also bspw. eine Datei custom.css in den Unterordnern assets und css enthalten, wird nur die Variante im Ordner assets im Website-Frontend geladen.

Custom Skins

Skins bilden auch die Grundlage für weitergehende Anpassungen, die allein per CSS nicht umsetzbar sind. Hierbei kann entweder ein mitgeliefertes Skin partiell angepasst oder ein ganz individuelles Skin erstellt werden.

In beiden Fällen ist das Child-Theme-Verzeichnis der passende Ort für die updatesichere Ablage nach folgendem Ordnerschema:

…/wp-content/themes/<child-theme-name>/<plugin-name>/<skin-name>

Beispielstruktur:

…/wp-content/themes
╷
├── /my-immo-theme
├── /my-immo-child-theme ← Child-Theme-Ordner
│   ╷
│   └─ /immonex-notify ← Custom Skins für das Notify-Plugin
│      ╷
│      ├─ /default ← angepasste Dateien des Standard-Skins
│      └─ /my-skinindividuelles Custom Skin

Partielle Anpassung

Sollen nur bestimmte Elemente eines im Plugin enthaltenen Skins – im Regelfall des Standard-Skins – angepasst werden, muss im betreffenden Child-Theme-Unterordner ein gleichnamiger Ordner (beim Standard-Skin also default) angelegt werden, der nur die geänderten Dateien enthält.

Sollen bspw. nur eigene Varianten der Dateien index.css und request-form.php eingebunden, alles andere aber weiterhin aus dem Standard-Skin-Ordner übernommen werden, ergibt sich die folgende Struktur:

Standard-Skin-Ordner (Plugin-Verzeichnis)

…/wp-content/plugins
╷
├── /notify
│   ╷
│   └─ /skins
│      ╷
│      └─ /default
│         ╷
│         ├─ /assets
│         │  ╷
│         │  ├─ index.css
│         │  └─ index.js
│         │
│         ├─ index.php
│         └─ request-form.php

Skin-Ordner mit angepassten Dateien (Child-Theme-Verzeichnis)

…/wp-content/themes/<child-theme-name>
╷
├── /immonex-notify
│   ╷
│   └─ /default
│      ╷
│      ├─ /assets
│      │  ╷
│      │  └─ index.css
│      │
│      └─ request-form.php

Eigenentwicklungen

Sollen umfangreiche Anpassungen oder einer ganz individuelle Darstellung umgesetzt werden, ist ein benutzerdefiniertes Skin mit einem eigenen Namen (Ordner und Bezeichnung in der Datei index.php) die passende Wahl.

Auch hier kann wiederum das Standard-Skin als Basis verwendet und schrittweise angepasst werden.

Die Dateien index.php und request-form.php sind obligatorisch und müssen im Skin-Ordner enthalten sein.

Die Vorgehensweise entspricht der Entwicklung von Custom Skins für das Kickstart-Basis-Plugin.

Hier geht's weiter ≫