Как стать автором
Обновить

Комментарии 31

Вы молодец, вы прикрутили tinymce к джанго. Теперь, пожалуйста, открутите его обратно.

Не знаю как кто, но я не видел еще ни одного рабочего примера, когда tinymce действительно помогал и не являлся источником тысяч поломок вёрстки. Дело, разумеется, не в tinymce, а в копипастах из ворда, которое так любят делать владельцы сайта.
Вы предлагаете научить каждую Машу-секретаршу, на которую повесили сайт овладеть HTML или bbCode, или может еще Markdown?

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

С машей-секретаршей вопрос решается тривиально — ей даётся механизм вбивания контента предопределённого формата, не более. Тут заголовок, тут краткий текст, тут полный текст, тут картинки к тексту (преобразуме на сервере под предопределённый размер), тут аттач загружаем. Всё, хватит. Что-то большее должен делать специалист и точка.
у меня подруга админит интернет-магазин. пишет большие обзоры товаров с картинками, разными цветами, видео и т.д. — никакого предопределённого механизма. как вы предлагаете объяснить человеку, что ей нужно учить HTML, если она прекрасно знает что в «других CMS» есть WYSIWYG редактор, соответственно не понимает почему она должна париться, если у нас тут xxi век и супер-пупер технологии
У меня в практике было слишком много плохих примеров использования вижуфиг-редакторов, может поэтому я такой резкий?

Если ваша подруга ни разу не ломала ни верстку, ни общий стиль сайта (о, как любят маши-секретарши цветной подчеркнутый курсив h1), то я могу сказать только одно — она — специально обученный человек :)
Это отдельный случай. По уму так и должно быть, отдельная штатная единица для работы с сайтом, но на практике мало кто так делает.

Правильнее будет в том же TinyMCE запихнуть шаблоны страниц.
У меня заказчик попросил открутить markitup и прикрутить tinymce :(
Я бы предложил для каждого сайта делать свой хороший редактор, а не тупо втыкать скачанный откуда-то бесплатный редакктор с сотней мелких неудобных кнопок. Но ведь никто не согласится!
А еще свою уникальную CMS для каждого сайта! Ага.

Ну честное слово, мы же живем в реальном мире, ну какой нафиг уникальный редактор? Ведь лучшие opensource щчень хорошо настраиваются. Все лишние кнопки легко убираются.
Дык что мешает в готовом редакторе выключить лишние кнопки и настроить стили?
Сущность то у него та же останется, пакостная. TINYMCE рассчитан на людей, представляющих что такое HTML — и никак иначе.
я научил ) Markdown но сейчас ищу замену) так как там есть до поля ((( не кашерно
По хорошему, там должна быть кнопочка «Очистить вордо-мусор».
К сожалению, не всегда помогает.

Поэтому в нашем XXI веке лучший способ скопипастить из ворда — это через блокнот. Вначале убрать все форматирование, а потом сделать его как надо.
именно так я и прошу делать всегда =)
В 21-м веке специальную работу делают специалисты.
В текущей редакции tinyMce есть стд. плагин paste, который автоматически очищает оформление при вставке из ворда. В том числе по CTRL+C, CTRL+V. Плагин был тотально переработан в версии 3.2.3 и работает вполне неплохо, хотя имеет некоторые проблемы в webkit.
Хорошо, если работает. Когда я последний раз с ним воевал, чистило оно слабо.
прикрутите ckeditor, по фционалу он такой же, имеет фцию очистки от ворда + при копировании из ворда иногда определяет, что текст из ворда и предлагает его почистить.
Те 4 с половиной тэга, которых более чем достаточно для написания 99% контента на среднем сайте, не проблема выучить. Надобность в вижуфиг-редакторах надумана.
скорее всего у вас маленький опыт работы с клиентами, бывают абсолютно деревянные люди, которым проще что то визуальное, нежели запоминать 4 тега. когда им говоришь вот есть в редакторе кнопочка чтобы посмотреть html-код, от этих слов у них начинает дымиться голова
Еще раз говорю, специальной работой должен заниматься специалист, а не деревянные люди. А что б обучить специалиста, ему надо знать 4 с половиной тэга.

Т.е. не надо искать буратино и давать ему доступ в админку. Найдите вменяемого человека, обучите его (сюрприз, этап обучения в промышленности есть всегда, в отличии от IT) четырём тэгам и забудьте про проблемы.
есть на свете мелкий бизнес, где наполнением сайта может заниматься даже генеральный, у которого куча дел кроме, чтобы еще учить хтмл. ему проще вбить текст в редактор и забыть.
Генеральный может потрать 20 баксов в месяц на вебмастера и не отвлекаться от кучи дел.
ключевое слово «мелкий» бизнес
Такой мелкий бизнес пусть учит html-тэги. Жалко 20 баксов в месяц на специалиста, который вам будет наполнять сайт — смешно.
ну это вы будете заказчику доказывать, когда он вам в SRS напишет «хачу визивиг», а не нам вот здесь :)
В договоре есть пункты типа
1. Обучение (и его стоимость).
2. Ответственность сторон (вам тупая секретарша сломала сайт — платите по прейскуранту. Мы обучали специалиста, где он?).

Пункта «хачу визивиг» там не будет. Честно.
Не знаю, насколько это велосипед, но для подключения редактора (использую wymeditor) такой трюк:

Copy Source | Copy HTML
  1. class WysiwygAdmin(admin.ModelAdmin):
  2.     class Meta:
  3.         # Список полей для которых нужно включить визуальный редактор    
  4.         wysiwyg_fields = ()
  5.  
  6.     # Добавляем класс wysiwyg для всех полей перечисленных в Meta.wysiwyg_fields
  7.     def formfield_for_dbfield(self, db_field, **kwargs):
  8.         field = super(WysiwygAdmin, self).formfield_for_dbfield(db_field, **kwargs)
  9.         if db_field.name in self.Meta.wysiwyg_fields:
  10.             field.widget.attrs['class'] = 'wysiwyg ' + field.widget.attrs.get('class', '')
  11.         return field
  12.  
  13.     # Подключение js/css
  14.     class Media:
  15.         js = ('http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js',
  16.               settings.MEDIA_URL + 'js/wymeditor/jquery.wymeditor.pack.js',
  17.               settings.MEDIA_URL + 'js/wysiwyg.js',)
  18.  
  19.         css = {'screen': (settings.MEDIA_URL + 'js/wymeditor/skins/default/screen.css',)}


wysiwyg.js подключает wymeditor ко всем полям с классом wysiwyg

Copy Source | Copy HTML
$(document).ready(function() {
    $(".wysiwyg").wymeditor({
        updateSelector: "input:submit",
        updateEvent: "click",
        lang: 'ru',
    });
});


После этого достоточно класс для админки наследовать не от admin.ModelAdmin, а от WysiwygAdmin. А дальше 2 варианта: либо определить класс wysiwyg для поля стандартным способом, либо перечислить его имя в Meta. Последний вариант подходит для включения редактора в flatpages:

Copy Source | Copy HTML
class WysiwygFlatPageAdmin(FlatPageAdmin, WysiwygAdmin):
    class Meta:
        wysiwyg_fields = ('content')
 
admin.site.unregister(FlatPage)
admin.site.register(FlatPage, WysiwygFlatPageAdmin)


P.S. Я в Django ещё не профи, по этому с удовольствием приму аргументированную критику :)
По поводу визивига и ломаной верстки:

Сколько плагины для очистки вордового шлака не воевали с пользователями, последние всегда побеждали. Поэтому server-side tidy после поста — рулит. Другой альтернативы я не нашел.

Это было бы здорово, если умный и опытный человек мне бы написал про новый универсальный способ очистки, не требующий tidy на сервере.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории