问题描述
我想让 Jekyll 为每个页面和帖子创建一个 HTML 文件和一个 JSON 文件.这是为了提供我的 Jekyll 博客的 JSON API - 例如可以在 /posts/2012/01/01/my-post.html
或 /posts/2012/01/01/my-post.json
访问帖子
I'd like to make Jekyll create an HTML file and a JSON file for each page and post. This is to offer a JSON API of my Jekyll blog - e.g. a post can be accessed either at /posts/2012/01/01/my-post.html
or /posts/2012/01/01/my-post.json
有谁知道是否有 Jekyll 插件,或者我将如何开始编写这样的插件来并排生成两组文件?
Does anyone know if there's a Jekyll plugin, or how I would begin to write such a plugin, to generate two sets of files side-by-side?
推荐答案
我也在寻找类似的东西,所以我学习了一些 ruby 并制作了一个脚本来生成 Jekyll 博客文章的 JSON 表示.我仍在研究它,但大部分都在那里.
I was looking for something like this too, so I learned a bit of ruby and made a script that generates JSON representations of Jekyll blog posts. I’m still working on it, but most of it is there.
我将它与 Gruntjs、Sass、Backbonejs、Requirejs 和 Coffeescript 放在一起.如果你喜欢,你可以看看我在 Github 上的 jekyll-backbone 项目.
I put this together with Gruntjs, Sass, Backbonejs, Requirejs and Coffeescript. If you like, you can take a look at my jekyll-backbone project on Github.
# encoding: utf-8
#
# Title:
# ======
# Jekyll to JSON Generator
#
# Description:
# ============
# A plugin for generating JSON representations of your
# site content for easy use with JS MVC frameworks like Backbone.
#
# Author:
# ======
# Jezen Thomas
# [email protected]
# http://jezenthomas.com
module Jekyll
require 'json'
class JSONGenerator < Generator
safe true
priority :low
def generate(site)
# Converter for .md > .html
converter = site.getConverterImpl(Jekyll::Converters::Markdown)
# Iterate over all posts
site.posts.each do |post|
# Encode the HTML to JSON
hash = { "content" => converter.convert(post.content)}
title = post.title.downcase.tr(' ', '-').delete("’!")
# Start building the path
path = "_site/dist/"
# Add categories to path if they exist
if (post.data['categories'].class == String)
path << post.data['categories'].tr(' ', '/')
elsif (post.data['categories'].class == Array)
path << post.data['categories'].join('/')
end
# Add the sanitized post title to complete the path
path << "/#{title}"
# Create the directories from the path
FileUtils.mkpath(path) unless File.exists?(path)
# Create the JSON file and inject the data
f = File.new("#{path}/raw.json", "w+")
f.puts JSON.generate(hash)
end
end
end
end
这篇关于Jekyll - 在 HTML 文件旁边生成 JSON 文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!