Jekyll / Octopress:我如何在标签内使用标签

时间:2014-04-05 12:51:46

标签: ruby 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”]] %} %}

有可能这样做吗?这样做的正确语法是什么?

1 个答案:

答案 0 :(得分:0)

Jekyll / Octopress使用Liquid Templates来解析这些东西。

据我所知,你不能在这样的标签中调用两个函数。但是,您可以在标记中指定变量名称:

using Liquid variables inside of a liquid tag call

我尝试了谷歌搜索,并没有看到任何弹出来调用一个标签内的两个函数。

IMO,我建议您创建一个自定义标签,以完全按照您的意愿行事。我已经为Octopress创建了几个自定义插件,因为我需要这样的自定义。插件,只是Ruby。非常直接。

所以,复制现有的img_tag.rb并调用它,mycustom_img_tag.rb等等,然后在render()方法中执行你的魔法。

例如,这里是我写的HTML5音频播放器标签,我需要知道音频文件的扩展名(在网址中指定)以指定内容类型:

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

^ - 注意:它不完整,所有选项都不像我指定的那样工作。你可以在render()部分看到什么有用,我只是手动解析data- *属性(我跑出去的时候只是让它工作)。

我基本上使用了另外两个插件作为模板并创建了这个插件。

您可以访问插件中的整个Octopress方法和变量 - 对整个代码库没有任何限制。