我写一个插件 ,它定义了新的哲基尔块ditaa
。 在块中的任何内容应从被转换Ditaa标记的图像文件和图像插入到柱代替块。 生成文件的工作,但复制到或产生时_site
目录下,文件显然删除。
有没有办法实现产生自定义资源块插件适当/更好的办法?
我写一个插件 ,它定义了新的哲基尔块ditaa
。 在块中的任何内容应从被转换Ditaa标记的图像文件和图像插入到柱代替块。 生成文件的工作,但复制到或产生时_site
目录下,文件显然删除。
有没有办法实现产生自定义资源块插件适当/更好的办法?
我已经找到了正确的解决方案: 使用Jekyll::StaticFile
类 。
当你这个类添加一个对象到site.static_files
数组,你标志着该文件作为完成渲染过程后复制未决。 事实上,这些文件的副本中完成site.write
过程。 看看在site_process.rb
在杰基尔安装文件。
这个类的用法很简单。 当您需要标记为未来的副本里的文件,你只需执行这样的代码:
site.static_files << Jekyll::StaticFile.new(site, site.source, path, filename)
凡path
和filename
取决于你的文件的位置src
文件夹。
我也有类似的问题制定一个LaTeX - > PNG液体标签。 您可以在我的代码在GitHub上看一看: https://github.com/fgalindo/jekyll-liquid-latex-plugin
我还没有找到工作的正确的方式做到这一点,但一个。 该解决方案可以发现GitHub上 ,并使用Jekylls复制任何不以下划线为前缀的能力_site
目录。 但是,这种方法也有两个缺点:
我已经找到了答案。
替换此
site.static_files << Jekyll::StaticFile.new(site, site.source, path, filename)
同
gnufile = GNUplotFile.new(site, site.source, "_site/media/", "#{@file}")
gnufile.givemethecommands commands
site.static_files << gnufile
并创建一个GNUplotFile
继承杰基尔类:: StaticFile
class GNUplotFile < Jekyll::StaticFile
def write(dest)
puts "WRITE---->>>>>>>>>>>"
#File.write('_site/media/BTTTTT.svg', DateTime.now)
gnuplot(@commands)
# do nothing
end
def gnuplot(commands)
IO.popen("gnuplot", "w") { |io| io.puts commands }
end
def givemethecommands(commands)
@commands = commands
end
end
写命令的清理过程之后运行。 我只是有一个液体块和上面的代码。