Hallo zusammen.
Ich denke das Thema betrifft zu 50% Programmierung und zu 50% Themes & Design, aber ich habe es jetzt mal hier rein gepackt.
Ich habe ein eigenes Plugin mit einem eigenen Controller. Die Seite für diesen Controller soll sich vom Template her vom Rest des Shops unterscheiden. Ich möchte für diese einzelne Seite Bootstrap verwenden. Jetzt stellen sich mir aber folgende Fragen:
Hier wird beschrieben, wie man Third-Party-Dependencies, wie zum Beispiel Bootstrap, zu seinem Theme hinzufügt. Aber ich möchte die Dateien ja nicht in meinem Theme, sondern in meinem Plugin. Deswegen habe ich die Anleitung auf mein Plugin angewendet. Also ich habe im Plugin Ordner eine package.json angelegt und bootstrap und grunt als Dependencies hinzugefügt. In dem Gruntfile habe ich ein Mapping auf den Ordner “Resources/frontend/vendors” angelegt. In meiner “Resources/frontend/less/all.less” importiere ich dann die CSS Dateien aus dem vendors Ordner.
Wie mache ich das jetzt mit den Javascript Dateien? Die kann ich ja nicht in einer einzelnen Datei importieren, oder? Also die müssten ja im Ordner “Resources/frontend/js” liegen, um automatisch geladen zu werden. Klappt das dann auch so wie mit der all.less mit Imports oder muss ich das Mapping so ändern, dass die JS Dateien direkt in dem js Ordner landen und nicht in dem vendors Ordner? Oder wie wird das gemacht?
Das mit den CSS Dateien klappt ja schonmal. Allerdings ist es jetzt ja so, dass die CSS/Less Dateien aus meinem Plugin auf jeder Seite geladen werden. Ich möchte jetzt aber, dass die nur auf der Seite meines Controllers benutzt werden. Und dann am liebsten auch nur die Dateien aus meinem Plugin und gar nicht mehr die ganzen Shopware Dateien. Ist das möglich? Ich denke ich könnte im Notfall die index/header.tpl für meine Seite so anpassen, dass ich den Block “frontend_index_header_css_screen” überschreibe. Da könnte ich die statischen Dateien laden, aber es wäre schön wenn das von der Funktionalität so bleibt wie zuvor, also dass alle less Dateien aus meinem Plugin geladen und kompiliert werden, nur halt ohne die ganzen Shopware Dateien. Kann mir da jemand Tipps geben, wie ich das am besten mache?
Wie genau läuft das bei den Themes mit dem “npm install” und dem “grunt” Befehl? Muss man das immer manuell ausführen oder übernimmt Shopware das beim Installieren des Themes? Habs noch nicht getestet, aber würde ja irgendwie mehr Sinn machen, wenn Shopware das regelt. Falls es so ist, funktioniert das dann auch irgendwie mit meinem Plugin? Weil aktuell wird kein “npm install” und kein “grunt” ausgeführt, wenn ich das Plugin installiere. Ich will mein Plugin zwar nicht verbreiten, aber allgemein betrachtet kann man ja nicht davon ausgehen, dass man ein Plugin installiert und dann noch selbst Befehle über die Konsole ausführen muss, oder? Also gibt es da eine Möglichkeit?
Ich wäre sehr dankbar über Antworten und auch ggf. über Tipps, wie ich mein Gesamtvorhaben evtl. auch anders umsetzen kann.
Viele Grüße