@mor Grundsätzlich funktioniert das jetzt.
Allerdings machen die per embed.js eingebetteten Links Probleme. Der Server gibt alle URLs korrekt mit den entsprechenden Affiliate-Tags zurück. Aber entweder entfernt embed.js diese wieder, oder benutzt URLs, die bei denen auf den Server, beim Einfügen der URL im Editor, zwischengespeichert worden:
Das HTML kommt vom Server, ohne das JS irgendwas ausgewertet hat:
Und so sieht's aus wenn JS drüber gelaufen ist:
Wie man sieht sind die Tags im eigentlichen HTML noch da, aber in dem Shadow-DOM/Root, den embed.js erzeugt, sind diese nicht mehr da.
ok hätte ich genauer beschreiben sollen. Wir haben eine ->output methode die meines Wissens nach nen event abfeuert (wo auch die urls in sprechende urls umgewandelt werden), da wäre wohl der sinnvollste punkt zum Sätzen der links.
dann gibts auch keine probleme mit irgendwelchen editor angelegenheiten (-;
ok, habe mir grade den quellcode angesehen, du machst es ja schon alles richtig, sorry für den comment oben.
habe mir es jetzt mal angeschaut, da müssten wir mal untersuchen was amazon dort macht, entweder erlauben sie das tracking darüber nicht oder sie wandeln die url dort nochmal um s das der tag intern über die ids weiter genutzt wird, oder es interssiert amazon an der stelle einfach nicht, hier bliebe dann nur nen eigener js parser der später nochmal prüft.
Habe mir das nochmal angesehen: wenn man eine Amazon URL in den Editor einfügt, dann wird diese an http://ckeditor.iframe.ly/api/oembed?url= gesendet.
Wahrscheinlich speichern die diese dann irgendwie zusammen mit den Produktinfos.
Beim Aufruf der eigentlichen Seite wird eine Anfrage an https://cdn.iframe.ly/api/import?app=1&flash=0&ids=yTNbrPX%26sN59EaT%26ewzVcn4 gesendet. Der IDs-Parameter beinhaltet die Artikel, die sich auf der Seite befinden. Zurück kommt dann HTML-Code, der die ursprünglich eingefügte URL enthält.
Kommt man also um einen (zusätzlichen) JS Parser wohl nicht herum. Könnte höchstens serverseitig wenn so eine Preview-Box kommt ein a-Tag komplett drumherum setzen. Das sollte funktionieren, ist aber natürlich nicht so schön.
das ist etwas komisch, was ist das denn für ein ckeditor plugin welches da eingreift ? das sollten wir maybe einfach rausnhemen bei uns oder deaktivieren oder nachbauen im affilinet.
können wir uns ggf. zusammen anschauen wenn du hier bist
ist ja erstmal auch cool, sollte aber mit dem afillinet link versehen werden.
wird da von jemand anderem der Code ergänzt ? entweder wir erwietern das Plugin im editor, überschreiben es oder forken es und liefern unseres mit aus.
By default the plugin uses the Iframely proxy service which supports over 1715 content providers such as YouTube, Vimeo, Twitter, Instagram, Imgur, GitHub, or Google Maps.
ggf. wäre es da also sinnvoller nur den conten provider durch ein ckeditor plugin zu erweitern.
(wir haben ja im cms eine API um den editor zu erweitern.) oder wir überlegen das Plugin per dafault auszuschalten (da es ja eigentlich eh konfiguriert werden muss).
Mhhh, bin unsicher.
So wie ich das verstanden lässt sich nur ein Content-Provider verwenden (in dem Fall standardmäßig Iframely).
Man könnte natürlich das Plugin so ändern, dass wenn eine Amazon URL gefunden wird unser eigener Content-Provider genutzt wird und bei allen anderen wird Iframely genutzt.
Alternativ habe ich gesehen, dass man Iframely auch selbst hosten kann (https://iframely.com/docs/host), dann könnte man da, wenn eine Anfrage für eine Amazon URL kommt, die URL mit dem entsprechenden Affiliate-Tag zurückgeben. Allerdings läuft das per Node und nicht PHP.
Was vllt. auch noch ginge wäre statt das Plugin zu verändern einen eigenen Content-Provider einzurichten (per REST-API), welcher quasi nochmal als Proxy vor Iframely fungiert. Alle Anfragen gehen erstmal an unseren Server, dieser leitet die Anfrage zu Iframely durch und ändert dann in der Response die URL zu dem Artikel.
das ist natürlich recht umfangreich, selbt hosten ist erstmal cool, aber wir wollen das plugin für amazon ja konfigurierbar ahben, sprich dann müpsten wir dort die url abändern. ist auf lange sicht eigentlich ganz cool nen eignen service draus zu amchen und im quiqqer nen eigenes Plugin zu hinterlgen. so könnten wir über viele installationen hinweg das ganze managen.
ich würde jetzt folgendes vorgehn vorschlagen.
wir deaktivieren das plugin im quiqqer per default damit es keine probleme macht. ohne Konfiguration ist es eh nur halbwegs gut nutzar. @flobog kannst du das bitte im Editor package machen ? embedsemantic und autoemded deaktvieren
wir legen ein issues für ein neues Projekt an wo wir ein eignen Content-Provider für den CKeditor 5 bauen und bei dem hosten wir dann eine instanz von Iframely als service und können dort dann entsprechend agieren.
das wäre wieder nen kleines Projekt für dich @Panni legst du dafür nen kleinen konzept issues an und weist dir den erstmal zu ?
und wenn das plugin erstmal deaktiviert ist hast du auch erstmal keine probleme @Panni mit deinem jetzigen Plugin oder ?
@mor
Wo soll ich den Issue anlegen?
Wenn das Plugin deaktiviert ist funktioniert das Plugin hier ohne Probleme. Das Parsen ist jetzt vermutlich auch schneller und definitiv übersichtlicher/schöner, was den Code angeht, als vorher.
@flobog Kannst du mir bitte Bescheid geben (bzw. mir wieder den Issue zuweisen), wenn die Plugins deaktiviert sind? Dann kann ich hier weiter machen bzw. testen ob so alles funktioniert.