hat es schon mal jemand geschafft eine statische Ressource wie ein Bild oder eine Schriftart über ein Plugin einzubinden und in CSS / SCSS zu verwenden?
If you want to add static assets like images or fonts, you can place them in the public folder of your Plugin. They will be copied to the public folder of Shopware 6 when you build the storefront. Your plugin shouldn’t put its assets into another directory outside of its scope though - but how do those assets from plugins actually work then?
Das hilft mir jedoch nicht weiter. Wie muss dieser Ordner aussehen? Und wie verwende ich ein Bild darin beispielsweise als Hintergrundbild in einem CSS Befehl - also wie lautet der Pfad zur Datei…
Ich habe eine Schrift eingebunden, indem ich ich sie unter src/Resources/storefront/asset/font/arial eingefügt und dann über font-face eingebunden habe.
Danach einmal ./psh.phar storefront:build ausführen.
Ich habe den asset-Ordner genommen, weil der bei der Generierung des Plugins automatisch erstellt wurde und ich in den Docs nichts finden konnte. Es kann also sein, dass sich an der Ordnerstruktur noch was ändert, aber das wäre ja auch kein Problem. Habe es nur mit dem master auf Github getestet, nicht mit der EA.
Liebe Grüße
PS: Komischerweise funktioniert es nur dann, wenn die scss-Datei direkt im style-Ordner liegt. Wenn ich in styles einen neuen Ordner vendor anlege, die scss-Datei dort platziere und @font-face an den neuen Pfad anpasse, kommt es zu Fehlern.
PPS: Ich sehe gerade, dass es mit dem vendor-Ordner funktioniert, wenn man den Pfad nicht anpasst. Eigentlich müsste man den Pfad mit …/…/asset/usw angeben, aber dann kommt es zu Fehlern. Wenn ich den Pfad falsch mit …/ angebe, kompiliert Shopware alles korrekt. Nur PhpStorm meckert, weil der Pfad so ja eigentlich falsch ist. Das liegt vermutlich an der Art wie Shopware die Themes zur Zeit kompiliert.
Ich hatte das so versucht und die Pfade mit …/…/asset/ in einem vendor- Ordner angegeben. Meine IDE hat die Datei so finden können, aber in der Storefront waren die Pfade nicht passend. Ich werde das mal testen, wie du beschrieben hast. Danke!
Ich hatte damit bisher auch keine Probleme in SW6 (Font und Images per SCSS).
Was ich allerdings nicht hinbekommen habe ist, ein Bild aus dem Plugin Ordner direkt (img-Tag) in einem Template zu integrieren.
Die Assets werden im Public Ordner immer in einem dynamisch benannten Ordner abgelegt. Ich habe aber keine Möglichkeit gefunden, an den dynamischen Pfad zu kommen.
Wenn ich mir dir Sources anschaue habe ich nicht das Gefühl, dass meine Schriften irgendwie erreichbar wären… Der Order theme/18c30fa9eb1a357e7d3a2f16b472566d beinhaltet nur css und js…
ich habe ./psh.phar storefront:build und auch ./psh.phar storefront:dev ausgeführt und das ganze auch mit einem ganz frischen Commit einmal getestet.
Bevor wir hier aneinander vorbei reden. Es geht hier um ein reines Plugin. Kein Plugin-Theme. Gibt es hierbei unterschiede?
Muss man noch irgendwas tun, damit die assets in das Theme geladen werden?
Es gab ja vor ein paar Wochen noch eine Anleitung wie man JS und SCSS mit einer main.js und Webpack kompiliert. Meines Wissens nach wurde dabei im Theme auch immer ein dist/ Ordner angelegt?!
Nein, das sollte so reichen. Ein ./bin/console cache:clear kann aber auch nicht schaden.
Inwiefern sich in dem Punkt reine Plugins von Plugin-Themes unterscheiden habe ich noch nicht getestet. Ich teste es nachher mal mit einem normalen Plugin. Ich nutze ein Plugin-Theme, das ich auch in der Konfiguration der Storefront ausgewählt habe.
Mit einem normalen Plugin funktioniert es bei mir auch nicht. Ob es eine Möglichkeit gibt, die Schrift in das normale Theme zu kompilieren, kann ich dir leider nicht sagen.
Das Handling von assets funktioniert in Shopware 6 ein wenig anders als man das von z.B. von Shopware 5 kennt. Ihr könnt assets in den public Order eures Plugins legen. Bei jedem ./psh.phar storefront:build wird dann am Ende der Befehl bin/console assets:install ausgeführt. Dieser kopiert die assets von eurem public Order im Plugin in den public Ordner der Shopware Installation. Um genau zu sein, in den Ordner public/bundles/{bundleName}/
Wenn ihr die assets innerhalb eines Twig Templates nutzen möchtet, könnt ihr asset(‚bundles/my-plugin/image.jpg‘) nutzen. So wird der asset Pfad automatisch aufgelöst. Per CSS/JS ist es etwas schwieriger.
CSS/JS wird seit der EA1 Version konkateniert und unter public/theme/{themeHash}/css/all.cs bzw js/all.js abgelegt. Von dort würdet ihr relativ per …/…/…/bundles/{bundleName}/image.jpg auf euer asset kommen.
Das Handling von assets funktioniert in Shopware 6 ein wenig anders als man das von z.B. von Shopware 5 kennt. Ihr könnt assets in den public Order eures Plugins legen. Bei jedem ./psh.phar storefront:build wird dann am Ende der Befehl bin/console assets:install ausgeführt. Dieser kopiert die assets von eurem public Order im Plugin in den public Ordner der Shopware Installation. Um genau zu sein, in den Ordner public/bundles/{bundleName}/
Wenn ihr die assets innerhalb eines Twig Templates nutzen möchtet, könnt ihr asset(‚bundles/my-plugin/image.jpg‘) nutzen. So wird der asset Pfad automatisch aufgelöst. Per CSS/JS ist es etwas schwieriger.
CSS/JS wird seit der EA1 Version konkateniert und unter public/theme/{themeHash}/css/all.cs bzw js/all.js abgelegt. Von dort würdet ihr relativ per …/…/…/bundles/{bundleName}/image.jpg auf euer asset kommen.
Übrigens - für alle, die vor dem selben Problem stehen: mit „public Order im Plugin“ ist das Verzeichnis „custom/plugins/DeinPlugin/src/Resources/public“ gemeint.
Ich greife das Thema nochmal auf, da mittlerweile etwas Zeit verstrichen ist.
Frage : Wie müssten Dateien im public Ordner des Plugins aufbereitet sein, dass Sie beim Installieren des Plugins direkt verwendet werden können?
Hintergrund : nehmen wir an, man hat ein Plugin mit ein paar Bildern die im Plugin unter /src/Resources/public/img liegen. Ich müsste nun ./psh.phar storefront:build aufrufen, damit die Dateien in den Shopware-Bundles Ordner gelangen.
Für ein Plugin, welches in den Shopware Store soll, ist es aber ungünstig, wenn der Kunde zunächst über eine Konsole storefront:build aufrufen müsste damit die Bilder angezeigt werden können.
Hi!
Ich glaube du hast meine zweite Frage nicht ganz verstanden: Ich suche nach einer Lösung, die genau dies beim Installieren des Plugins übernimmt. EIn Kunde, der das Plugin bspw. im Shopware Store kauft, herunterlädt und dann in seinem Shop installiert, hat ggf. nicht die Ahnung, dass noch ein zusätzlicher Befehl über die Konsole ausgeführt werden muss.
Die Erwartungshaltung ist da natürlich, dass das Plugin installiert wird und die entsprechenden Bilder direkt und ohne weiteres zutun angezeigt werden.