Wysiwyg редактор Redactor удаляет нужные теги

InstantCMS 2.X
#1 6 июля 2025 в 06:19

Как видно из заголовка я использую Wysiwyg редактор Redactor. Но он постоянно удаляет мне нужные теги типа

Изображение
  1. <del>Text</del> // Зачеркнутый текст
  2. <span>Text</span>
  3. <cite>Text</cite>
  4. ...


и все содержимое в нём при сохранении записи в InstantCMS 2. Я уже не знаю где что искать и править. В прежних версиях все работало, но после обновы сразу удалять начал при сохранении. Как это исправить, мне нужны эти теги, а так же возможность задавать ID и CLASSы. И ведь не настроишь это в Админке, нужно обязательно лезть в код.

#2 6 июля 2025 в 12:05

Может типограф удаляет? В настройках добавьте в разрешённые теги

#3 3 сентября 2025 в 17:03

Я пожалуй подниму тему еще раз. Это ВАЖНО и уже ни куда не годится. Теперь я заметил что удаляются даже альтернативный текст для изображения в поле текст. Wysiwyg редактор Redactor. И из первого сообщения всё по прежнему. Где это всё настроить, да хоть в код залезу, но это мне очень нужно. 

#4 3 сентября 2025 в 17:22

 Clear, в настройках поля выберите нужный Пресет типографа

Изображение

И в настройках этого пресета добавьте нужные вам теги

Изображение

Предположу, что у вас устаревшая версия движка, в которой нет настроек типографа. Тогда все грустно, типограф в старых версиях «режет» все, что может быть небезопасным.

#5 3 сентября 2025 в 18:14

В том то и дело что последняя версия 17,3, и я стартовал с предпоследней. Это всё у меня есть и включено, но поведение абсолюно не понятное мне. Что пошло не так, ума не приложу.

Изображение
#6 4 сентября 2025 в 10:22
#7 27 сентября 2025 в 13:17

Это не должно так работать по любому. Видео своей проблемы я прикреплю. Давайте как то решим эту проблему.

 

Добавлено спустя 1 час
instantcms.ru/forum/podpisi-k-kartinkam-v-statjah.html#post-364269
Loadырь

Да решил, таким способом, надеюсь это включат в коробку, чтобы постоянно не исправлять после обновы.
Мой код для файла /wysiwyg/redactor/files/htmlsanitizer.js

  1. /**JavaScript HTML Sanitizer v2.0.2, (c) Alexander Yumashev, Jitbit Software.*/
  2. "use strict";
  3. var HtmlSanitizer = new function () {
  4. const e = {
  5. A: !0,
  6. ABBR: !0,
  7. B: !0,
  8. BLOCKQUOTE: !0,
  9. BODY: !0,
  10. BR: !0,
  11. CENTER: !0,
  12. CODE: !0,
  13. CITE: !0,
  14. DD: !0,
  15. DIV: !0,
  16. DEL: !0,
  17. DL: !0,
  18. DT: !0,
  19. EM: !0,
  20. FONT: !0,
  21. H1: !0,
  22. H2: !0,
  23. H3: !0,
  24. H4: !0,
  25. H5: !0,
  26. H6: !0,
  27. HR: !0,
  28. I: !0,
  29. IMG: !0,
  30. LABEL: !0,
  31. LI: !0,
  32. OL: !0,
  33. P: !0,
  34. PRE: !0,
  35. SMALL: !0,
  36. IFRAME: !0,
  37. SPAN: !0,
  38. STRONG: !0,
  39. SUB: !0,
  40. SUP: !0,
  41. TABLE: !0,
  42. TBODY: !0,
  43. TR: !0,
  44. TD: !0,
  45. TH: !0,
  46. THEAD: !0,
  47. UL: !0,
  48. U: !0,
  49. VIDEO: !0
  50. },
  51. t = {
  52. FORM: !0,
  53. "GOOGLE-SHEETS-HTML-ORIGIN": !0
  54. },
  55. r = {
  56. rel: !0,
  57. class: !0,
  58. controls: !0,
  59. height: !0,
  60. href: !0,
  61. id: !0,
  62. src: !0,
  63. style: !0,
  64. target: !0,
  65. title: !0,
  66. type: !0,
  67. width: !0,
  68. frameborder: !0,
  69. allow: !0,
  70. allowfullscreen: !0,
  71. alt: !0,
  72. srcset: !0,
  73. "data-toggle": !0,
  74. "data-target": !0,
  75. "data-dismiss": !0,
  76. "data-placement": !0,
  77. "data-original-title": !0
  78. },
  79. l = {
  80. "background-color": !0,
  81. color: !0,
  82. "font-size": !0,
  83. float: !0,
  84. "font-weight": !0,
  85. "text-align": !0,
  86. "text-decoration": !0,
  87. width: !0
  88. },
  89. n = ["http:", "https:", "data:", "m-files:", "file:", "ftp:", "mailto:", "pw:"],
  90. a = {
  91. href: !0,
  92. action: !0,
  93. target: !0
  94. },
  95. i = new DOMParser;
  96.  
  97. function o(e, t) {
  98. for (let r = 0; r < t.length; r++)
  99. if (0 == e.indexOf(t[r])) return !0;
  100. return !1
  101. }
  102. this.SanitizeHtml = function (s, d) {
  103. if ("" == (s = s.trim())) return "";
  104. if ("<br>" == s) return ""; - 1 == s.indexOf("<body") && (s = "<body>" + s + "</body>");
  105. let m = i.parseFromString(s, "text/html");
  106. "BODY" !== m.body.tagName && m.body.remove(), "function" != typeof m.createElement && m.createElement.remove();
  107. let c = function i(s) {
  108. let c;
  109. if (s.nodeType == Node.TEXT_NODE) c = s.cloneNode(!0);
  110. else if (s.nodeType == Node.ELEMENT_NODE && (e[s.tagName] || t[s.tagName] || d && s.matches(d))) {
  111. c = t[s.tagName] ? m.createElement("DIV") : m.createElement(s.tagName);
  112. for (let e = 0; e < s.attributes.length; e++) {
  113. let t = s.attributes[e];
  114. if (r[t.name])
  115. if ("style" == t.name)
  116. for (let e = 0; e < s.style.length; e++) {
  117. let t = s.style[e];
  118. l[t] && c.style.setProperty(t, s.style.getPropertyValue(t))
  119. } else {
  120. if (a[t.name] && t.value.indexOf(":") > -1 && !o(t.value, n)) continue;
  121. c.setAttribute(t.name, t.value)
  122. }
  123. }
  124. for (let e = 0; e < s.childNodes.length; e++) {
  125. let t = i(s.childNodes[e]);
  126. c.appendChild(t, !1)
  127. }
  128. if (("SPAN" == c.tagName || "B" == c.tagName || "I" == c.tagName || "U" == c.tagName) && "" == c.innerHTML.trim()) return m.createDocumentFragment()
  129. } else c = m.createDocumentFragment();
  130. return c
  131. }(m.body);
  132. return c.innerHTML.replace(/<br[^>]*>(\S)/g, "<br>\n$1").replace(/div><div/g, "div>\n<div")
  133. }, this.AllowedTags = e, this.AllowedAttributes = r, this.AllowedCssStyles = l, this.AllowedSchemas = n
  134. };
#8 6 ноября 2025 в 06:56

А можно попросить разработчиков, как то решить проблему с жесточайшим вырезанием всех нужных тегов в будущих обновлениях. Есть статьи где нужны классические теги, типа SPAN, DEL, CITE, ABBR и так далее. меня прям сильно раздражает что он удаляет их вместе с содержимым внутри, и статьи получаются изуродованными. Я честно не понимаю, к чему такие жёсткие рамки, при том что например CODE разрешён, а простые текстовые запрещены. ПОЧЕМУ? я устал с этим бороться.

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.

Похожие темы

Похожее в блогах

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.