Plugin: CSS abhängig von Plugin Einstellungen

Hallo,
was ist die beste Variante CSS Eigenschaften abhängig von den Plugineinstellungen zu integrieren.

Beispiel:

Im Plugin kann der Benutzer ein Bild wählen. Dieses soll per CSS 

background-image: url("bild.jpg");

auf der Seite eingebunden werden.

Die erste Idee war Inline CSS. Diese ist leider keine sauber Lösung. Über Hinweise wäre ich sehr dankbar.

Ich würde nachschauen wie z.B. Shopware das mit dem konfigurierbaren Shoplogo in den Theme EInstellungen gelöst hat. Vielleicht lässt sich daraus eine Lösung für dein Plugin ableiten?

was ist die beste Variante CSS Eigenschaften abhängig von den Plugineinstellungen zu integrieren.

Ich hoffe, dass ich die Frage korrekt verstanden habe. Im Plugin kann man ja Einstellungen schaffen. Und darüber dann abfragen ob CSS geladen werden soll oder nicht. 

use Shopware\Components\Theme\LessDefinition;
use Doctrine\Common\Collections\ArrayCollection;

...

public function meineFunktion(\Enlight_Event_EventArgs $args) {

  if ( Shopware()->Config()->get('Name_der_Einstellung') == 'yes' ) {

    $less = new LessDefinition([], [__DIR__. '/meinPfad/all.less'], __DIR__ );
    return new ArrayCollection([$less]);

  }

}

Meinst du so etwas?

1 „Gefällt mir“

Hi Benda.

Probier es mal auf diese Weise :wink:

DEIN FRONTENDSUBSCRIBER

/**
 * @return array
 */
public static function getSubscribedEvents()
{
    return [
        'Theme_Compiler_Collect_Plugin_Less' => 'addLessFiles',
    ];
}

/**
 * Provide the file collection for less
 *
 * @param \Enlight_Event_EventArgs $args
 * @return \Doctrine\Common\Collections\ArrayCollection
 */
public function addLessFiles(\Enlight_Event_EventArgs $args)
{
    $shop = $args->getShop();
    $config = $this->getConfig($shop); // interner helper zum auslesen der konfiguration

    $lessConfig = [];
    $lessConfig['deine_variable'] = $config['bild'];

    $less = new LessDefinition(
        $lessConfig,
        [$this->pluginBaseDirectory . '/Resources/views/frontend/_public/src/less/all.less'],
        $this->pluginBaseDirectory
    );

    return new ArrayCollection([$less]);
}

 

DEINE LESS DATEI

background-image: url(@deine_variable);

 

Gruß Mike

1 „Gefällt mir“