Auch bei 5.7.7 mache ich das noch so. Glaube nicht, dass sich da ein weiterer Weg aufgetan hat.
Ich binde aber nur die Vars ein, die mit „less“ anfangen.
mal aus einem Plugin
public function onCollectLessFiles(\Enlight_Event_EventArgs $args)
{
$pluginDir = $this->getPath();
$pluginConfig = $this->container->get('shopware.plugin.cached_config_reader')->getByPluginName($this->getName(),$args->getShop());
$variables = [];
foreach ($pluginConfig as $key => $value) {
if (substr($key,0,4) == "Less") {
$variables[$key] = $value;
}
}
$less = new LessDefinition(
//configuration
$variables,
//less files to compile
[$pluginDir . '/Resources/views/frontend/_public/src/less/all.less'],
//import directory
$pluginDir
);
return new ArrayCollection([$less]);
}
Ich hab das mal noch ein wenig schlanker gemacht, da meine LESS Dateien in der Ordnerstruktur so enthalten sind, das es anscheinend nicht nötig ist die Pfade mit zu übergeben.
Und ich muss sagen, es funktioniert
class Less implements SubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
'Theme_Compiler_Collect_Plugin_Less' => 'onCollectPluginLess'
];
}
public function onCollectPluginLess(\Enlight_Event_EventArgs $args): ArrayCollection
{
$less = new LessDefinition(
[
'NewLessVar' => 'foo'
],
);
return new ArrayCollection(array($less));
}
}