Клик по изображению в TinyMCE открывает его во всплывающем окне?

InstantCMS 2.X

Настройка открытия изображений во всплывающем окне (FancyBox) в TinyMCE (InstantCMS 2.17 +)

#1 26 марта 2025 в 06:57

В InstantCMS 2.17 + при клике по изображению в редакторе TinyMCE оно вставляется в текст, но не открывается для просмотра.

Есть ли встроенный способ сделать так, чтобы изображения при клике открывались во всплывающем окне (например, через FancyBox)?

Если да — как это включить? Если нет — куда и какой код нужно добавить для такой функциональности?

(Используется стандартный шаблон, без модификаций ядра).

#2 26 марта 2025 в 07:16

 Clear, если вставляется ужимка до размера то не открывается

Если в настройках загрузки изображения изменить размер то по клику открывается

Я ставил открыть по клику оригинал 

А минимальный размер шириной 1024 

#3 26 марта 2025 в 09:59

 Clear, если вставляется ужимка до размера то не открывается

WadimKow

В смысле, у меня изображение всегда больше чем контент, но это никак не работает в тексте. Как это у тебя получилось то ?

Решил проблему с FancyBox. Просто подключил FancyBox 4 и добавил скрипт:

В настройках шаблона Готовый HTML, добавляемый в тег <head> страницы

  1. <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  2. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.css">
...Изображение

перед закрывающим тегом </body> в файле main.tpl.php:

  1. <script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.umd.js"></script>
  2. <script>
  3. document.addEventListener('DOMContentLoaded', function() {
  4. document.querySelectorAll('.content_item img').forEach(img => {
  5. if (!img.parentElement.matches('a')) {
  6. let link = document.createElement('a');
  7. link.href = img.src;
  8. link.setAttribute('data-fancybox', 'gallery');
  9. img.parentElement.insertBefore(link, img);
  10. link.appendChild(img);
  11. }
  12. });
  13. Fancybox.bind('.content_item [data-fancybox="gallery"]', {
  14. loop: false,
  15. arrows: true,
  16. on: { init: f => { if (f.items.length === 1) f.options.Navigation = false; } }
  17. });
  18. });
  19. </script>

Всё работает, ошибок нет. Класс .content_item подставьте свой, если другой.

Сегодня в 10:05
#4 26 марта 2025 в 10:05

Я ни делал правок шаблона и не ставил ничего стороннего

На память не помню. Час полазил по форуму и нашёл рецепт в настройках

Сделал по найденой инструкции за 3 минуты и ву-а-ля

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

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

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.