Типограф
Прислано: HIgor1968
ср, 27/08/2008 - 11:13
Типограф работающий как фильтр. Есль модуль для Друпала. Правда оригинал сразу не заработал пришлость дописать в info файле потдержку 6-й версии и класс назвать с маленькой буквы.
Страница оригинала здесь.
http://rmcreative.ru/blog/post/tipograf
Для ленивых модуль прикладываю.
| Прикрепленный файл | Размер |
|---|---|
| typographus.zip | 11.48 кб |
- HIgor1968's blog
- Для комментирования войдите или зарегистрируйтесь
Спасибо, полезная штука
- Для комментирования войдите или зарегистрируйтесь
Носите не стаптывайте.
- Для комментирования войдите или зарегистрируйтесь
Это новый фильтр или что?
- Для комментирования войдите или зарегистрируйтесь
Штука несомненно полезная. Но на мой взгляд сыровата.
- Для комментирования войдите или зарегистрируйтесь
Пользуюсь почти год :)
- Для комментирования войдите или зарегистрируйтесь
Не против, если включу обновлённый модуль в архив типографа?
- Для комментирования войдите или зарегистрируйтесь
Я не против, выкладывайте
- Для комментирования войдите или зарегистрируйтесь
И где де обновление?;)
- Для комментирования войдите или зарегистрируйтесь
Наверное, на типограф.ру =)
- Для комментирования войдите или зарегистрируйтесь
HIgor1968
http://rmcreative.ru/blog/post/tipograf
- Для комментирования войдите или зарегистрируйтесь
АААА, Семен-Семеныч:)
- Для комментирования войдите или зарегистрируйтесь
обзор типографов:
http://www.typograf.ru/flog/
вывод:
http://www.typograf.ru/ - лучший
ИМХО:
если прикручивать, то лучший
- Для комментирования войдите или зарегистрируйтесь
Все бы хороше - но это смущает -
Класс очень ресурсоёмкий, поэтому бездумное его использование может привести к серьёзным торможениям при загрузке страницы.
- Для комментирования войдите или зарегистрируйтесь
чем смущает... фильтр включаются только один раз при создании или изменении ноды
- Для комментирования войдите или зарегистрируйтесь
В принципе можно.
Можно и кнопочкой при редактировании ноды.
Может так и сделаю. То текущий типограф у меня периодически косячит.
- Для комментирования войдите или зарегистрируйтесь
кнопочкой при редактировании ноды...
тогда совместимость с висивиг редакторами может пострадать
- Для комментирования войдите или зарегистрируйтесь
Как прикручу - отпишусь.
Но скорее всего пока под FCK.
- Для комментирования войдите или зарегистрируйтесь
Господа, не стройте иллюзий - фильтры накладываются в node_prepare перед выводом, при чем в зависимости от роли пользователя для которого этот вывод делается, смотрите внимательно node_view
- Для комментирования войдите или зарегистрируйтесь
фильтры накладываются в node_prepare перед выводом, при чем в зависимости от роли пользователя для которого этот вывод делается
...хостера не жалко?)
hook_filter юзать нужно
- Для комментирования войдите или зарегистрируйтесь
bodro, о чем вы? почитайте документацию и посмотрите код
hook_filter определяет фильтр, в нем выполняется обработка текста, кстати есть кеш фильтров - самое эффективное средство борьбы с нагрузкой! А фильтры почти всегда отрабатывают, ибо почти всегда вызывается node_view
- Для комментирования войдите или зарегистрируйтесь
кстати есть кеш фильтров - самое эффективное средство борьбы с нагрузкой!
тут подробней - http://data1.floomby.ru/getfile.aspx?guid=968cf3e6-5d11-4759-b5ec-58b91c...
hook_filter определяет фильтр
дык это и нужно :)
чем node_view, node_prepare могут тут помочь я так и не понял
- Для комментирования войдите или зарегистрируйтесь
чем node_view, node_prepare могут тут помочь я так и не понял
внимательнее :)
чем смущает... фильтр включаются только один раз при создании или изменении ноды
Отсюда весь сыр бор - фильтр в данном случае не нужен, текст стоит поправить на этапе подготовки, собственно как и проверка орфографии.
- Для комментирования войдите или зарегистрируйтесь
фильтр в данном случае не нужен, текст стоит поправить на этапе подготовки, собственно как и проверка орфографии.
например мне именно такой фильтр и нужен
если нужно на этапе подготовки, то JS решение будет лучшим вариантом
- Для комментирования войдите или зарегистрируйтесь
Поэтому я и написал - незачем хранить текст не обработанный типографом и каждый раз при выводе прогонять фильтром... пожалейте хостера :)
- Для комментирования войдите или зарегистрируйтесь
мдя...
итак, давайте разберемся как же работают фильтры...
При создании ноды:
1 – берем исходный текст, вычисляем для него MD5
2 – прогоняем через фильтры
3 – записываем в кеш MD5 и отфильтрованный текст
При вызове ноды:
1 – берем текст вычисляем для него MD5
2 – смотрим в кеш, MD5 совпадает..? тогда выводим текст из кеша, не запуская фильтры (исключение составляют фильтры которые юзают $op == 'no cache')
- Для комментирования войдите или зарегистрируйтесь
Небольшая поправка - при создании и правке ничего не вычисляется и не сохраняется кроме тела ноды и его формата.
Обычно сразу после правки нода выводится на экран и вот тут отрабатывают фильтры, причем очень важно, разрешено ли кеширование для фильтра, обычно оно выключено.
После редактирования списка фильтров или ноды кеш фильтров сбрасывается (по статистике drupal.ru кеш фильтра дает примерно 60-70% попаданий в кеш), но это после того, как руками почти всем Фильтрам разрешено кеширование!
Кеш хранится в виде (check_markup) <?php $cache_id = $format .':'. md5($text); ?>
При просмотре ноды он и проверяется, и это только в случае, если нода обрабатывается модулем node, а если нода делается своим модулем, то тут как указал разработчик...
- Для комментирования войдите или зарегистрируйтесь
сделал модуль фильтра под 5ку, он добавляет в конец ноды текущую дату и время с секундами, кеш в админке выключен, но дата при перезарузке ноды не меняется, вы что-то путаете...
модуль:
test_filter.rar (0,69 Kb)
- Для комментирования войдите или зарегистрируйтесь
Нужно смотреть таблицу filter_formats - там есть поле cache
Потом как влияет case 'prepare':
ну короче протись отладчиком и разобраться :)
- Для комментирования войдите или зарегистрируйтесь
В принципе действительно мне ничего не мешает избавится от фильтров и просто обрабатывать текст типографом перед отправкой на сайт. Это собственно я и имел в виду, когда говорил о прикручивании к FCK.
- Для комментирования войдите или зарегистрируйтесь
допустим, есть у нас страница с кучей кода которая сохранена в формате 'php' который не типографится, через некоторое время мы (или не мы ;-) меняем эту страницу и ставим другой формат ввода и в результате типограф бесповоротно испортил страницу...
- Для комментирования войдите или зарегистрируйтесь
Я не говорю о таких страницах. Простая секретарша не будет делать таких страниц, ей кнопка будет - самое то. Сам я в таком случае найду выход.
- Для комментирования войдите или зарегистрируйтесь
Простая секретарша не будет делать таких страниц, ей кнопка будет - самое то. Сам я в таком случае найду выход.
О чем и речь... Типограф более востребован при наборе текста нежели для обработки страниц кем-то отрендеренных...
- Для комментирования войдите или зарегистрируйтесь
Простая секретарша не будет делать таких страниц, ей кнопка будет - самое то.
я не переживу этой муки — объяснять секретарше для чего эта кнопка, типографика и т.д...
да и забудет она о ней ровно через 5 мин. :)
- Для комментирования войдите или зарегистрируйтесь
За ней 3-е "с топорами стоят" :) напомнят.
Просто на Агаве тариф Profy. При посещаемости сайта 200 челов в день днем врубались дикие тормоза. причем периодические. Пока не отрубил типограф. 2 дня никаких претензий клиент не высказывает.
- Для комментирования войдите или зарегистрируйтесь
сделал модуль - http://drupal.ru/node/20373 :)
- Для комментирования войдите или зарегистрируйтесь
HIgor1968
Вообще верный подход. Ещё как альтернативу можно Devangari попользовать. Это реализация на JavaScript.
- Для комментирования войдите или зарегистрируйтесь
Спасибо за модуль. Аналогично используемому на пятерке Typografica (http://drupal.ru/node/1614), пришлось поправить правила обработки тире.
было:
// Знак дефиса или два знака дефиса подряд — на знак длинного тире. // + Нельзя разрывать строку перед тире, например: Знание — сила, Курить — здоровью вредить. '/(\s+)(--?|—|—)(?=\s)/' => $sym['nbsp'].$sym['mdash'], '/(^)(--?|—|—)(?=\s)/' => $sym['mdash'],
В этом случае дефис в начале первой строки остается дефисом. А если перед дефисом стоит перевод строки, перед тире появляется еще и неразрывный пробел. В итоге типографика диалогов кривая.
исправил на:
// Знак дефиса или два знака дефиса подряд — на знак длинного тире. // + Нельзя разрывать строку перед тире, например: Знание — сила, Курить — здоровью вредить. '/( )(--?|—|—)(?=\s)/' => $sym['nbsp'].$sym['mdash'], '/(--?|—|—)(?=\s)/' => $sym['mdash'], '/(^)(--?|—|—)(?=\s)/' => $sym['mdash'],
- Для комментирования войдите или зарегистрируйтесь








Комментарии