TinyMce im Frontend anzeigen

Hallo,

ich möchte ein Plugin entwickeln, dass auf der Artikeldetail Seite einen TinyMce-Editor darstellt.

So haben Kunden die Möglichkeit ihren eigenen Text zum Produkt zu hinterlegen, der dann gedruckt wird.
Leider kann das Plugin CustomProducts keinen Editor sondern nur Textareas.

Nun das Problem:
TinyMce bindet css-Files ein (default skin.min.css und content.min.css).

Da ich alle TinyMce-JavaScript Dateien über den Theme Compiler eingebunden habe,
befinden sich diese im falschen kontext /web/cache.

Sprich die JavaScript Dateien wollen nun die skin.min.css und content.min.css aus dem Context /web/cache/skin.min.css einbinden,
was aber nicht korrekt ist, da sich der Editor in engine/Library/TinyMce befindet.

Die einfachste Lösung wäre natürlich die TinyMce Dateien wie sonst gewohnt über ein script-tag ein zu binden, jedoch habe ich keinen 
Weg und keine Lösung gefunden, wie das bei shopware gehen soll…

Danke für jede Hilfe!

@Beyer schrieb:

Hallo,

ich möchte ein Plugin entwickeln, dass auf der Artikeldetail Seite einen TinyMce-Editor darstellt.

So haben Kunden die Möglichkeit ihren eigenen Text zum Produkt zu hinterlegen, der dann gedruckt wird.
Leider kann das Plugin CustomProducts keinen Editor sondern nur Textareas.

Nun das Problem:
TinyMce bindet css-Files ein (default skin.min.css und content.min.css).

Da ich alle TinyMce-JavaScript Dateien über den Theme Compiler eingebunden habe,
befinden sich diese im falschen kontext /web/cache.

Sprich die JavaScript Dateien wollen nun die skin.min.css und content.min.css aus dem Context /web/cache/skin.min.css einbinden,
was aber nicht korrekt ist, da sich der Editor in engine/Library/TinyMce befindet.

Die einfachste Lösung wäre natürlich die TinyMce Dateien wie sonst gewohnt über ein script-tag ein zu binden, jedoch habe ich keinen 
Weg und keine Lösung gefunden, wie das bei shopware gehen soll…

Danke für jede Hilfe!

Hallo,

warum legst du nicht einfach alle JavaScript- und CSS-Dateien innerhalb deines Plugins ab? Weitere Informationen dazu gibt es unter anderem hier: Example plugin - storefront extension (ein Beispiel zur Einbindung gibt es in der Bootstrap.php und im Text darunter).

Beste Grüße

Sebastian

Danke für die schnelle Antwort sschreier.

Den Ansatz habe ich bereits auch versucht.

  • detail-controller hooken

  • detail.tpl einen block erweitern.

Stecken geblieben bin ich hier die richtige url an die script-tags zu übergeben.

srcipt src="{link file="/frontend/_public/src/js/tinymce/tinymce.min.js}" funktioniert nicht, da diese url für themes vorgesehen ist, wenn ich das richtig verstanden habe.

@Beyer schrieb:

Danke für die schnelle Antwort sschreier.

Den Ansatz habe ich bereits auch versucht.

  • detail-controller hooken

  • detail.tpl einen block erweitern.

Stecken geblieben bin ich hier die richtige url an die script-tags zu übergeben.

srcipt src=„{link file=“/frontend/_public/src/js/tinymce/tinymce.min.js}" funktioniert nicht, da diese url für themes vorgesehen ist, wenn ich das richtig verstanden habe.

Hallo,

wie erwähnt - man kann CSS- als auch JavaScript-Code automatisch im Plugin ablegen, ohne irgendwelche Links dazu nutzen oder es per < script > oder ähnliches einbinden zu müssen, siehe den Link (Example plugin - storefront extension), beispielsweise für eine CSS-Datei:

$this->subscribeEvent(
     'Theme_Compiler_Collect_Plugin_Less',
     'onCollectLessFiles'
);

Hast du dir einmal Gedanken gemacht, wie das ganze mit dem TinyMCE auch responsiv dargestellt werden soll, beziehungsweise wie der Wert dann im Warenkorb etc. weiter bearbeitbar sein soll?

Wie machst du das, wenn ein Kunde den Artikel doppelt in den Warenkorb legt? Lässt du dann den hinterlegten Text in deinem Feld im Warenkorb überschreiben (da im Standard von Shopware ja der Artikel „aufaddiert“ wird) oder „splittest“ du den gleichen Artikel in mehrere Warenkorb-Position auf?

Ich würde mir über diese Sachen erst einmal Gedanken machen Wink.

Beste Grüße

Sebastian

Ah, habe deinen Tipp falsch verstanden.

So habe ich es auch gemacht. 

Nur das Problem, die tinymce.min.js möchte die css-Dateien einbinden.

Das gibt jedoch einen 404-Error, da sich die tinymce.min.js nicht mehr in 
engine/plugins/local/frontend/NAME/Views/frontend/src/js/tinymce/tinymce.min.js befindet, sondern in web/cache/.

Damit der tinymce-Editor wie „gewohnt“ funktionieren kann, sprich seine benötigten Skripte selbst einbinden kann, muss ich das 
Hauptscript einbinden, wie es für normale Webanwendungen gedacht ist. Nämlich ein script-tag

Ok die Lösung ist das Benutzen des Smarty link plugins…

srcipt type=„text/javascript“ src="{link file=„frontend/…“}"