Здравствуйте.
Продолжаю изучение МОДикс. Столкнулся с необходимостью в типографировании текстов для сайта.
Поискав по форуму нашел он-лайн типограф и тему где пытались сделать офф-лайн версию, но так и не доделали.
по ходу родился такой плагин
$e = &$modx->Event;
switch ($e->name) {
case "OnParseDocument":
// Copyright (c) Spectator.ru
// замена кавычек в html-тэгах на символ "¬"
$modx->documentObject['content']=preg_replace ( "/<([^>]*)>/es", "'<'.str_replace ('\\\"', '¬','\\1').'>'", $modx->documentObject['content']);
// замена кавычек внутри <code> на символ "¬"
$modx->documentObject['content']=preg_replace ( "/<code>(.*?)<\/code>/es", "'<code>'.str_replace ('\\\"', '¬','\\1').'</code>'", $modx->documentObject['content']);
// расстановка кавычек: кавычка, перед которой идет ( или > или пробел = начало слова,
// кавычка, после которой не идет пробел = это конец слова.
$modx->documentObject['content']=preg_replace ( "/([>(\s])(\")([^\"]*)([^\s\"(])(\")/", "\\1«\\3\\4»", $modx->documentObject['content']);
// что, остались в тексте нераставленные кавычки? значит есть вложенные!
if (stristr ($modx->documentObject['content'], '"')):
// расставляем оставшиеся кавычки (еще раз).
$modx->documentObject['content']=preg_replace ( "/([>(\s])(\")([^\"]*)([^\s\"(])(\")/", "\\1«\\3\\4»", $modx->documentObject['content']);
// расставляем вложенные кавычки
// видим: комбинация из идущих двух подряд открывающихся кавычек без закрывающей
// значит, вторая кавычка - вложенная. меняем ее и идущую после нее, на вложенную (132 и 147)
while (preg_match ("/(«)([^»]*)(«)/", $modx->documentObject['content'])) $modx->documentObject['content']=preg_replace ( "/(«)([^»]*)(«)([^»]*)(»)/", "\\1\\2„\\4“", $modx->documentObject['content']);
// конец вложенным кавычкам
endif;
// кавычки снаружу
$modx->documentObject['content'] = preg_replace("/\<a\s+href([^>]*)\>\s*\«([^<^«^»]*)\»\s*\<\/a\>/", "«<a href\\1>\\2</a>»", $modx->documentObject['content']);
// расстанавливаем правильные коды, тире и многоточия
$modx->documentObject['content'] = str_replace ('«','«', $modx->documentObject['content']);
$modx->documentObject['content'] = str_replace ('»','»', $modx->documentObject['content']);
$modx->documentObject['content'] = str_replace (' - ',' — ', $modx->documentObject['content']);
$modx->documentObject['content'] = str_replace ('...','…', $modx->documentObject['content']);
// тире в начале строки (диалоги)
$modx->documentObject['content'] = preg_replace ('/([>|\s])- /',"\\1— ", $modx->documentObject['content']);
// меняем "¬" обратно на кавычки
$modx->documentObject['content'] = str_replace ('¬','"', $modx->documentObject['content']);
// предлоги вместе со словом (слово не переносится на другую строку отдельно от предлога)
$modx->documentObject['content'] = preg_replace("/ (.) (.)/", " \\1 \\2", $modx->documentObject['content']);
$modx->documentObject['content'] = preg_replace("'((?:mailto:)?[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+\.[a-zA-Z]{2,3})'e",'encode_email("$1")', $modx->documentObject['content']);
// дефисы
// $modx->documentObject['content'] = preg_replace("/(\s[^- >]*)-([^ - >]*\s)/", "<span style='white-space: nowrap;'>\\1-\\2</span>", $modx->documentObject['content']);
return $modx->documentObject['content'];
}
повесил на OnBeforeDocFormSave.
Пересохраняю старые документы и ничего не происходит.
Опишите пожалуйста процесс создания подобных плагинов с нуля, что к сему относится, какие шаги для вызова событий и т.п.??? В PHP не силен...
Спасибо заранее