parserALT
Страницы форума: ← Назад | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 600 | Дальше →

wysiwyg + код парсера = геморой

#1max_rip
26.01 22:38
www.parser.ru → | ответить → | в избранное →

wysiwyg + код парсера = геморой

В общем назрела проблемка, что иногда надо внутри редактора вставить какой-то код парсера, все работает. Но вот wysiwyg редакторы не любят меня. То обернуть в p, то что не надо, в принципе за тем что не соблюдены веб стандарты по шапке не бьют и все работает. Но вот иногда редактор показывает свой нрав и запихнет во внутрь $var[Я вас люблю.], собственно кто как с этим борется?
Я так понимаю надо дополнить текст каким нибудь ограничителями типа {literal}{/literal} у смарти, чтобы он в внутри не портил не фига. может есть у кого наработки?
Отказываться от редактора не хочется.
Использую в качестве редактора продукт http://imperavi.com/redactor/
#2Vint
→ max_rip [#1] | 26.01 23:34
www.parser.ru → | ответить → | в избранное →

Код парсера в визивиге?...

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

Единственный более-менее безопасный подход: маппинг через маркеры.
Мы твёрдо знаем, какой "динамический" функционал (код, который будет обработан парсером) нам нужен в визивиге.

Делаем соответствующие кнопки или другие интерфейсные элементы для визиваига, которые в текст будут вставлять определённого вида конструкции (маркеры).

Банальный пример: #img#100# -- вставить на это место картинку из базы с id 100.

Далее, парсим пришедший текст из формы, отлавливаем все известные нам конструкции (как раз то, что я назвал маппингом), и выполняем нужные действия на парсере (лезем в базу, проверяем наличие картинки, заменяем маркер на html-код, и т.п.).

И то, такие вещи надо очень подробно прорабатывать, если функционал публичный. Если это для "админки" сайта, то проблем чуть меньше, но всё равно надо аккуратно продумать все связи.
Страницы форума: ← Назад | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 600 | Дальше →