Создание плагинов для Octopress
Octopress идет с несколькими предустановленными плагинами. Которые охватывают практически все аспекты блоггерства, от категории до видео. Плагины можно легко создавать, расширяя базовый функционал Octopress. Создадим плагин который добавит новый тег для шаблонизатора Liquid.
В качестве примера, создадим новый тег, который позволит вставлять картинки размещенные на S3 Amazon.
Создадим файл s3_image_tag.rb.
- Определим новый класс наследуемый от Liquid::Tag
1 2 3 4 5 |
|
Все теги шаблонизатора Liquid наследуютьса от класса Liquid::Tag. Liquid ожидает что класс имеет метод render который и реализует отрисовку тега.
- Инициализация параметров
1 2 3 4 5 6 7 |
|
Обратите внимание, что Liquid вызовет наш метод инициализации с тремя параметрами: имя тега, текст в самом теге, и маркер.
Во первых, мы вызвали метод super, для инициализации родительского класса. Далее, мы очистили текст от начальных и конечных пробелов. С помощью регулярного выражения нашли необходимые значения для наших переменных. Для переменной @bucket_name, если она не найдена, берем значения из конфигфайла _config.yml.
- Определим метод render
1 2 3 4 5 6 7 |
|
Отдаем HTML тег для нужного изображения. Если один из параметров отсутствует, возвращаемся сообщением об ошибке.
- Регистрируем новый тег
1
|
|
Liquid::Template привязывает тег s3_image к нашему классу Jekyll::S3ImageTag, который и будет его обрабатывать.
Добавляем наш файл s3_image_tag.rb в папку plugins нашего блога. Octopress автоматически загружает все плагины из этой папки.
Зададим значение по умолчанию для переменой aws_bucket в конфиге _config.yml
1 2 3 4 5 6 |
|
- Пример использование нового тега в наших постах
1
|
|
P.S. Оригинальный источник http://www.thoughtsonrails.com/creating-plugins-for-octopress/