Jekyll/Octopress: как я могу использовать тег внутри тега

В Jekyll/Octopress, как я могу поместить вывод тега внутри другого тега?
Вот что я хочу сделать (используя тег Octopress img):

{% img {% PluginThatOutputsAURL %} %}

Если я это сделаю, я получаю эту ошибку:

Error processing input, expected syntax: {% img [class name(s)] [http[s]:/]/path/to/image [width [height]] [title text | “title text” [“alt text”]] %} %}

Можно ли сделать это? Какой правильный синтаксис для этого?


person Eric    schedule 05.04.2014    source источник


Ответы (1)


Jekyll/Octopress использует Liquid Templates для анализа этих вещей.

Насколько я знаю, вы не можете вызывать две функции внутри такого тега. Однако вы можете указать имена переменных в тегах:

использование переменных Liquid внутри вызова жидкостного тега

Я немного погуглил и не увидел ничего всплывающего для вызова двух функций в одном теге.

ИМО, я бы рекомендовал создать собственный тег, чтобы делать именно то, что вы хотите. Я создал несколько пользовательских плагинов для Octopress, потому что мне нужна была такая настройка. Плагины, это просто Ruby. довольно прямо вперед.

Итак, скопируйте существующий img_tag.rb и назовите его, mycustom_img_tag.rb или как-то еще, и проделайте свою магию в методе render().

Например, вот мой тег аудиоплеера HTML5, который я написал, где мне нужно было знать, какое расширение было у аудиофайла (указано в URL-адресе), чтобы указать тип контента:

https://github.com/eduncan911/eduncan911.github.io/blob/b89f47cd86c37f2cfb5c3093612fe0a049808325/plugins/audio_tag.rb

^- ПРИМЕЧАНИЕ. Он неполный, и все параметры не работают, как я указал. Вы можете увидеть, что работает, в разделе render(), где я просто анализирую атрибуты data-* вручную (у меня не хватило времени, и я просто заставил это работать).

В основном я использовал два других плагина в качестве шаблона и создал этот.

У вас есть доступ ко всем методам и переменным Octopress в вашем плагине — ограничений на всю кодовую базу нет.

person eduncan911    schedule 03.08.2014