OctoberCMS: расширяем фильтр Markdown

В OctoberCMS из коробки работает фильтр Markdown, он применяется почти везде и, к тому же, его можно легко применять к любому тексту вручную. И, что важно, фильтр автоматически применяется к записям плагина Blog перед сохранением готового к выводу html.

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

public function boot() {
  Event::listen('markdown.parse', 'Author\PluginName\Classes\MarkdownExtender@parse');
}

Теперь при каждом применении фильтра Markdown будет вызываться метод parse() класса MarkdownExtender, который должен находиться в author/pluginname/classes/MarkdownExtender.php. Код класса:

namespace Author\PluginName\Classes;

class MarkdownExtender {

  public function parse($text, $data) {
    // в $text находится оригинальный текст
    // а в $data->text - результирующий
  }
}

Производим все нужные манипуляции с текстом в $data->text и сохраняем результат обратно, сверяясь с оригиналом в $text при необходимости. Вот и всё.

Комментарии