moritz-sauer-13/silverstripe-iconfield

A flexible icon picker field for SilverStripe CMS with support for multiple icon libraries

Installs: 3

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Type:silverstripe-vendormodule

pkg:composer/moritz-sauer-13/silverstripe-iconfield

1.0.0 2026-01-27 10:18 UTC

This package is auto-updated.

Last update: 2026-01-27 10:19:35 UTC


README

Ein flexibles Icon-Auswahl-Feld für SilverStripe CMS mit Unterstützung für verschiedene Icon-Bibliotheken.

Screenshot 2026-01-26 145306

Features

  • Visueller Icon-Picker: Ansprechendes Grid-Layout mit Icon-Vorschau
  • Suchfunktion: Schnelles Filtern von Icons nach Name
  • Erweiterbar: Unterstützung für verschiedene Icon-Bibliotheken durch das IconProviderInterface
  • Bootstrap Icons: Standardmäßig mit Bootstrap Icons (2000+ Icons)
  • Automatisches Parsing: Icons werden automatisch aus der CSS-Datei geparst
  • Intelligentes Caching: Geparste Icons werden für 1 Woche gecached
  • Responsive: Funktioniert auf allen Bildschirmgrößen

Installation

Das Modul ist als lokales Modul im Projekt eingebunden.

composer update

Nach der Installation:

vendor/bin/sake dev/build flush=all

Verwendung

In DataObjects oder Pages

use MoritzSauer\IconField\Forms\IconField;

class MyPage extends Page
{
    private static $db = [
        'Icon' => 'Varchar(100)',
    ];

    public function getCMSFields()
    {
        $fields = parent::getCMSFields();
        
        $fields->addFieldToTab(
            'Root.Main',
            IconField::create('Icon', 'Icon auswählen')
        );
        
        return $fields;
    }
}

Im Template

<% if $Icon %>
    <i class="bi $Icon"></i>
<% end_if %>

Automatisches Icon-Parsing

Der BootstrapIconProvider lädt die Icons automatisch aus der Bootstrap Icons CSS-Datei. Die Icons werden geparst und für 1 Woche gecached, um die Performance zu optimieren.

Cache manuell aktualisieren

Falls Sie den Icon-Cache manuell aktualisieren möchten:

use MoritzSauer\IconField\IconProvider\BootstrapIconProvider;

$provider = new BootstrapIconProvider();
$provider->refreshCache();

Eigene Icon-Provider erstellen

Sie können eigene Icon-Provider erstellen, indem Sie das IconProviderInterface implementieren:

namespace MyVendor\MyModule\IconProvider;

use MoritzSauer\IconField\IconProvider\IconProviderInterface;

class FontAwesomeProvider implements IconProviderInterface
{
    public function getIcons(): array
    {
        return [
            'fa-home' => 'Home',
            'fa-user' => 'User',
            // ...
        ];
    }

    public function getIconPrefix(): string
    {
        return 'fa';
    }

    public function getCdnUrl(): ?string
    {
        return 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css';
    }

    public function getName(): string
    {
        return 'Font Awesome';
    }

    public function renderIcon(string $iconIdentifier): string
    {
        return sprintf('<i class="%s %s"></i>', $this->getIconPrefix(), $iconIdentifier);
    }
}

Provider in der Konfiguration registrieren

# app/_config/iconfield.yml
SilverStripe\Core\Injector\Injector:
  MoritzSauer\IconField\IconProvider\IconProviderInterface:
    class: MyVendor\MyModule\IconProvider\FontAwesomeProvider

Konfiguration

Standard-Provider ändern

In app/_config/iconfield.yml:

SilverStripe\Core\Injector\Injector:
  MoritzSauer\IconField\IconProvider\IconProviderInterface:
    class: MoritzSauer\IconField\IconProvider\BootstrapIconProvider

Cache-Konfiguration

Der Icon-Cache ist bereits konfiguriert. Falls Sie die Cache-Einstellungen anpassen möchten:

# app/_config/iconfield.yml
SilverStripe\Core\Injector\Injector:
  Psr\SimpleCache\CacheInterface.iconfield:
    factory: SilverStripe\Core\Cache\CacheFactory
    constructor:
      namespace: 'iconfield'

Lizenz

BSD-3-Clause