我的_posts文件夹中有一个imgs子文件夹,用于jekyll。我使用Markdown表单链接到该文件夹中的图像:
![myimg](imgs/myimage.jpg)
当我生成网站时,jekyll正确创建链接:
<img src='imgs/myimage.jpg>
但它不会将带有图像的imgs文件夹复制到_site中的正确子目录。
如果html创建为
_site /十分之二千零十三/ myEntry.html
图像应该在
中_site /十分之二千零十三/ IMGS
要使用的链接的文件夹。
如何配置jekyll将imgs文件夹复制到_site中的正确位置?
答案 0 :(得分:2)
虽然最好将图片文件夹放在Jekyll网站的根目录下,但您可以使用一个插件,让Jekyll识别_posts
内的图片文件夹。使用与帖子相同的日期格式为图像文件添加前缀,并将它们复制到所需目录结构中的_site
。
# _plugins/post_images.rb
module Jekyll
POST_IMAGES_DIR = '_posts/imgs'
DEST_IMAGES_DIR = 'imgs'
class PostImageFile < StaticFile
def destination(dest)
name_bits = @name.split('-', 4)
date_dir = ''
date_dir += "#{name_bits.shift}/" if name_bits.first.to_i > 0
date_dir += "#{name_bits.shift}/" if name_bits.first.to_i > 0
date_dir += "#{name_bits.shift}/" if name_bits.first.to_i > 0
File.join(dest, date_dir + DEST_IMAGES_DIR, name_bits.join('-'))
end
end
class PostImagesGenerator < Generator
def generate(site)
# Check for the images directory inside the posts directory.
return unless File.exists?(POST_IMAGES_DIR)
post_images = []
# Process each image.
Dir.foreach(POST_IMAGES_DIR) do |entry|
if entry != '.' && entry != '..'
site.static_files << PostImageFile.new(site, site.source, POST_IMAGES_DIR, entry)
post_images << entry.gsub(File.extname(entry), '')
end
end
# Remove images considered to be "actual" posts from the posts array.
site.posts.each do |post|
if post_images.include?(post.id[1..-1].gsub('/', '-'))
site.posts.delete(post)
end
end
end
end
end
答案 1 :(得分:0)
我开发了一个Jekyll插件,可以帮助将帖子资产与Markdown文件放在一起,它可能会满足您的需求:https://nhoizey.github.io/jekyll_post_files/