D9 Tartalomszerkesztő HTML átkódolása

Joee képe

HTML tartalom szerkesztése (forráskód szerkesztési módban) után a mentés után a Drupal szerkesztője belenyúl az általam megírt HTML kódba és módosításokat végez rajt. Ha például én ezt írom:
<img src="/aaa/pic1.jpg" alt="abcd" style="width:760px;height:760px;">
Akkor átírja erre:
<img alt="abcd" src="/aaa/pic1.jpg" style="width:760px;height:760px;" />
Az érdekelne hol van az a programkód ami ezt az átírást végzi, mert szeretnék rajt módosítást végezni.

Drupal verzió: 
HF leon képe

  1. <p>
  2. <img src="/sites/default/files/inline-images/_vyrp14_1565E00032-4D-3.jpg" alt="test" data-entity-type="file" data-entity-uuid="4d5eb5a1-9b60-4b9f-9ebd-574fbda667f2">
  3. </p>

Ha a CKEditor forrásnézetében átírjuk a képet a fenti kódra és nem váltunk vissza szerkesztés nézetre, hanem azonnal elmentjük, akkor megmarad a kód nyer valójában.

Viszont, amikor megnyitod szerkesztésre a CKEditorban és úgy mented el, vagy ekkor váltasz forráskód nézetre, akkor a CKEditor azonnal átírja a kódot. Ahhoz, hogy ezt ne tegye meg magát a CKEditort kell megtanítani. A CKEditor ugyanis rendelkezik egy olyan rendszerrel, amely csak az engedélyezett formátumokat engedi használni. Ez jól jön, ha sok felhasználó használja az oldalt, hogy csak az engedélyezett elemeket és formákat használja. Ha például olyan widgetet írsz, ami csak a:

  1. <pre class="onlyclass"></pre>

fenti kódot engedi és nincs más, ami más formátumot megengedne, akkor bármi mással egészíted ki forráskódban a kódot, akkor az csak forráskódként mentve marad meg, ahogy azonban újra szerkeszted CKEditorban és azonnal eltűnik. Csak az onlyclass osztályt engedi használni mást nem. Ugyanez vonatkozik az elrendezésre is.

Csak a CKEditor "felprogramozásával" szabhatod testre a kód formáját.

Itt minden megtanulhatsz a CKEditorral kapcsolatban:
https://ckeditor.com/docs/ckeditor4/latest/guide/index.html

Ha egyedi formázásra van igény, akkor ezt meg kell tanítani a CKEditornak. Sajnos erre a Drupal csak minimális szerkesztési lehetőségeket ad. Egyszerűbb esetekben ez elég, de sokszor kell egyedi plugineket írni a CKEditorhoz.

Kényelmes lenne, ha a Drupal teljes körű konfigurálást tenne lehetővé egy GUI felületen, de erre jelenleg nincs mód.

1
0
Joee képe

Nem az átkódolást szeretném megakadályozni, mert azt megtehetem egy saját szövegformátum létrehozásával, ahol nem állítom be a CKEditort szerkesztőnek és az új szövegformátum beállításainál minden formázást kikapcsolok. Ezek után bármilyen HTML taget írhatok. Már kipróbáltam korábban és D8-nál működött.
Azt szeretném megoldani, hogy beledefiniálhassak saját HTML tageket a CKEditorba és utána én írhassam meg saját szabály írásával, hogy miként íródjon át a saját tag HTML kóddá. Ha a CKEditor ezt meg tudja csinálni akkor abba valahogy be lehet illeszteni a saját tagjeimet és azok átkódolásának szabályait. Az eredeti tagek szabályzatát is lehetne akkor módosítani vagy bővíteni, mert a CKEditor nem ismer minden kódot és amit nem ismer azt egyszerűen törli. Ezért a HTML tagek definíciójának és az átkódolás szabályainak helyét keresem.
Tudom, hogy egy ilyen beleturkálás azzal jár, hogy a CKEditor frissítésekor felülíródnak a módosításaim, ezért a frissítés után majd ismét be kell mindent állítani, de azt bevállalom.

0
0
HF leon képe

Ha plugineket írsz hozzá, akkor nem kell minden frissítésnél újra felkonfigurálni. Nem turkálni kell benne, mert annak nincs sok értelme. Ezért linkeltem be a CKEditor dokumentációját. Szinte teljesen testre szabhatod.

Megírod a CKEditorhoz a saját plugineidet a saját szabályaiddal a saját ikonjaiddal. Ekkor a CKEditort, már használhatod is. A Drupal, viszont így még nem tudja használni a CKEditor plugineket, mert azokat egy, vagy több Drupal modulon keresztül kapcsolni kell a Drupal-hoz.

Jó lenne, ha előre definiálhatók lennének html widgetek a drupalban és nem kéne külön plugineket írni, de erre nincs megoldás sajnos.

A legjobb lenne egy olyan konverziós réteg, ami az egyszerű html widgeteket, egy yml fájlban, vagy egy Drupal felületen megadhatóvá tenné és ezek után a Drupal automatikusan legenerálná ezeket a CKEditor számára. Egy ilyen felületen át megoldható lenne, hogy úgy lehessen bármely szövegszerkesztőt a Drupalhoz kapcsolni, hogy nem kéne mindegyikben a html widgeteket újraírni.

Ilyen felület nincs így először meg kell írnod a CKEditor plugineket, majd a Drupal modulod, moduljaid a pluginek csatolásához a Drupalba ágyazott CKEditorhoz.

Ez az egyetlen teljesen hivatalos lehetőség. Így a frissítéseknél sem kell aggódnod. A plugineek által hozzáadott módosítások a frissítések után is ott lesznek.

Lábjegyzet:
Egy tartalomhoz csak egyféle szerkesztőt engedélyezz. Ugyanis a bővebb szerkesztő által bevitt elemeket a korlátozottabb szerkesztővel történő szerkesztés esetén a szerkesztő eltávolítja.

0
0
Joee képe

Ezek szerint, szinte meg kellene tanulnom a CKEditor programozói gondolatmenetét, hogy biztosra menjek és normálisan meg tudjam csinálni!
Ha az ehhez szükséges időt és munkát rászánnám a CKEditorra még akkor sincs semmi garancia arra, hogy az elvárásaimnak megfelelően működne. Írjon hozzá plugint az editor fejlesztője ha akar! Én inkább megkerülöm a CKEditort. Arra gondoltam, hogy írok egy programot Delphiben ami egyből az adatbázisba viszi be a kódot és az biztos, hogy olyan lesz amit én akarok. Tud valaki valami részletet a Drupal DB tartalomtárolásáról, hogy ne kelljen nyomoznom?

0
0