ich versuche gerade im neuen Plugin-System ein Less File einzubinden und zwar so:
public static function getSubscribedEvents()
{
return [
'Enlight_Controller_Action_PostDispatchSecure_Frontend' => 'onFrontendPostDispatch',
'Theme_Compiler_Collect_Plugin_Less' => 'addLessFiles',
];
}
public function addLessFiles(\Enlight_Event_EventArgs $args)
{
$less = new \Shopware\Components\Theme\LessDefinition(
//configuration
array(),
//less files to compile
array(
__DIR__. '/Resources/views/frontend/less/all.less'
),
//import directory
__DIR__
);
return new Doctrine\Common\Collections\ArrayCollection(array($less));
}
Die Theme Kompilierung schlägt aber fehl… Hat jemand ne Idee, weshalb das nicht mehr so funktioniert? Ab 5.2.13 muss das Ding ja direkt
in der angegeben Resource liegen und wird automatisch eingebunden. Aber was ist mit Vorgängerversionen?
ich versuche gerade im neuen Plugin-System ein Less File einzubinden und zwar so:
public static function getSubscribedEvents()
{
return [
‚Enlight_Controller_Action_PostDispatchSecure_Frontend‘ => ‚onFrontendPostDispatch‘,
‚Theme_Compiler_Collect_Plugin_Less‘ => ‚addLessFiles‘,
];
}
public function addLessFiles(\Enlight_Event_EventArgs $args)
{
$less = new \Shopware\Components\Theme\LessDefinition(
//configuration
array(),
//less files to compile
array( DIR. ‚/Resources/views/frontend/less/all.less‘
),
//import directory DIR
);
return new Doctrine\Common\Collections\ArrayCollection(array($less));
}
Die Theme Kompilierung schlägt aber fehl… Hat jemand ne Idee, weshalb das nicht mehr so funktioniert? Ab 5.2.13 muss das Ding ja direkt
in der angegeben Resource liegen und wird automatisch eingebunden. Aber was ist mit Vorgängerversionen?
Vielen Dank und viele Grüße,
Chris
Hallo,
du musst dir definitiv das Entwickler - Handbuch besorgen, da steht das alles ausführlich drin. Es wird nicht immer jemanden geben, der das alles hier ausführlich beschreibt oder beantwortet. Ein „try & error“ bringt weder dich noch andere weiter. Auf jeden Fall solltest du das alte und das neue Pluginsystem nicht miteinander vermixen in der Hoffnung, dass das schon irgendwie funktonieren wird.
Automatisch wurden und werden LESS-Dateien nicht eingebunden, das muss man schon immer mit der all.less selbst tun.
Im neuen Pluginsystem erfolgt die LESS-Einbindung in etwa so:
use Shopware\Components\Theme\LessDefinition;
...
public function addLessFiles(){
return new LessDefinition(
[],
[
__DIR__.
'/../Resources/Views/frontend/_public/src/less/all.less'
]
);
}
Plugin resources inside of the PluginName/Resources/frontend directory are now loaded automatically on theme compilation when using the new plugin system.
Plugin resources inside of the PluginName/Resources/frontend directory are now loaded automatically on theme compilation when using the new plugin system.
Der Pfad müsste aber „custom/plugins/SwagResourceTest/Resources/ Views /frontend/less/all.less“ lauten (Views war eigentlich immer schon dazwischen), wenn du mein Codeschnipsel nutzt ;). Am besten sollte man auch einen eigenen Subscriber dafür nutzen + Service. Die Einbindung funktioniert so auch (use Shopware\Components\Theme\LessDefinition; muss natürlich außerhalb sein) - steht auch fast 1 zu 1 so im Buch, wenn müsste es also auch dort falsch sein ;).
Ob es ab Shopware 5.2.13 automatisch geht, weiss ich nicht.
public function addLessFiles(){
return new LessDefinition(
[],
[
__DIR__.
'/../custom/plugins/CbeBlogSystem/Resources/views/frontend/less/all.less'
]
);
}
Die Daten liegen wohlgemerkt in dieser Struktur vor:
CbeBlogsysten
|__Resources
|__views
|__frontend
|__less und dann darin die all.less
Sehr komisch das Ganze… Mit dem alten System kam ich bislang besser zurecht, zumindest was das Less Compiling angeht. Für 2 Zeilen CSS muss man sich schon fast überlegen, ob mans nicht Inline macht…
public function addLessFiles(){
return new LessDefinition(
,
[ DIR.
‚/…/custom/plugins/CbeBlogSystem/Resources/views/frontend/less/all.less‘
]
);
}
Die Daten liegen wohlgemerkt in dieser Struktur vor:
CbeBlogsysten
|__Resources
|__views
|__frontend
|__less und dann darin die all.less
Sehr komisch das Ganze… Mit dem alten System kam ich bislang besser zurecht, zumindest was das Less Compiling angeht. Für 2 Zeilen CSS muss man sich schon fast überlegen, ob mans nicht Inline macht…
Hallo,
hast du es einfach mal mit Views probiert (Großschreibung, wie ich ja nun schon 2 x geschrieben habe)?
public function addLessFiles(){
return new LessDefinition(
[],
[
__DIR__.
'/../Resources/Views/frontend/_public/src/less/all.less'
]
);
}
und nicht mit deinem Code, wo du irgendwelche festen Werte (Pluginnamen etc) reinschreibst? Achte vorallem auch auf die Namen und nenn es nicht einfach so, wie du Bock hast (views klein, etc.).
Danke für Deine Geduld. Wie so sollte man auch die Views groß schreiben, wenn das Verzeichnis wie oben erwähnt ja klein geschrieben ist. Abgesehen davon gibt es auch keni _public Verzeichnis, sondern die Daten liegen genau dort, wie ichs oben aufgemalt habe. Das macht mich echt fertig gerade!
Danke für Deine Geduld. Wie so sollte man auch die Views groß schreiben, wenn das Verzeichnis wie oben erwähnt ja klein geschrieben ist. Abgesehen davon gibt es auch keni _public Verzeichnis, sondern die Daten liegen genau dort, wie ichs oben aufgemalt habe. Das macht mich echt fertig gerade!
Hall,
und warum legst du nicht einfach die Ordnerstruktur genauso an, wie Shopware es vorschreibt und ich nun mehrmals geschrieben habe? Wenn man es nicht so macht wie es vorgegeben ist, braucht man sich doch nicht wundern, das es nicht funktioniert. Das _public - Verzeichnis ist zum Beispiel auch Voraussetzung und wichtig im Pfad. Nur du schreibst das Verzeichnis views klein, Shopware schreibt es groß (Views), da kannst du bei jedem Shopware eigenen Plugin nachsehen.
na, da in der neuen Doku des Pluginsystem irgendwo steht, dass man das Verzeichnis in Kleinschreibung anlegt. Selbstverständlich habe ich auch sämtliche Schreibweisen ausprobiert und auch die Ordnerstruktur entsprechend so angelegt, wie Du das vorgegeben hattest. Wir reden aber schon vom neuen Pluginsystem? Welches shopwareeigene Plugin basiert denn bereits auf dem neuen System? Die sind doch allesamt noch Oldschool…