На днях один из читателей моего блога, Сергей, задал мне вопрос по поводу вставления картинок через редактор TinyMCE.
Суть состоит в том, что встроенный плагин вставки картинок, работает только с урлами картинок, но не с файлами. Пользователям же проще будет работать с файлами.
Первая моя мысль была: "Сделать плагин управляющий галереей и позволить ему закачивать файлы, а также вставлять их урлы в контент". Поскольку такой плагин уже существует в природе (
Про галерею я уже писал ранее, используем её для вставки картинок в контент наших статей.
Для этого в модели статей добавим связь многие ко многим на нашу галерею:
...
images = models.ManyToManyField(Photo, blank=True, verbose_name = (u'Изображения'),
help_text='<small><i>Изображения привязанные к статье<br />')
...
В классе отображения статей делаем так:
...
images= posts.images.all() #Берём привязанные изображения
for image in images:
im = image.mini_html #Для каждой картинки
# Заменям в теле статьи код вида '[ image.title ]' html
# кодом со ссылкой на картинку с описанием
content=content.replace(
'[' + image.title + ']',
'<img src="%s" alt="%s" /><br />%s' % (
image.mini_url,
image.title
image.captions,
)
)
В итоге мы получили своеобразный "костыль", позволяющий добавлять картинки к статьям простой вставкой кода.
К примеру, назвав наше изображение при добавлении "Картинка 1", нам достаточно добавить в тело статьи код вида "[Картинка 1]".
Учитывая свойства админки django (возможность добавления связанных полей), наш "костыль" не так ужасен как кажется на первый взгляд. Но он позволяет держать TinyMCE на почтенном растоянии от наших драгоценных данных. :)
P.S.
Пока обдумывал этот пост, и ковырял TinyMCE на всех доступных мне платформах, я пришел к неутешительному выводу. Пора мне переходить на Markdown. Причины следующие:
1. В век мобильных технологий WYSIWYG редакторы не лучшее решение, поскольку не везде работают так как надо.
2. WYSIWYG редакторы это не круто не правильно с точки зрения чистоты конечного кода.
3. WYSIWYG редакторы не стоит допускать к управлению контентом по причинам безопасности.
4. WYSIWYG редакторы расслабляют пользователей и учат плохому
Альтернативу пока вижу одну, тем более, что ее настойчиво предлагают разработчики и "гуру" Django - это
Надеюсь получу новый правильный костыль и Ваш комментарий не останется голословным.