Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow free placement of posts. #579

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions lib/jekyll.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ module Jekyll
'destination' => File.join(Dir.pwd, '_site'), 'destination' => File.join(Dir.pwd, '_site'),
'plugins' => File.join(Dir.pwd, '_plugins'), 'plugins' => File.join(Dir.pwd, '_plugins'),
'layouts' => '_layouts', 'layouts' => '_layouts',
'posts' => '_posts',


'future' => true, 'future' => true,
'lsi' => false, 'lsi' => false,
Expand Down
2 changes: 1 addition & 1 deletion lib/jekyll/post.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def self.valid?(name)
# Returns <Post> # Returns <Post>
def initialize(site, source, dir, name) def initialize(site, source, dir, name)
@site = site @site = site
@base = File.join(source, dir, '_posts') @base = File.join(source, dir, site.post_dir)
@name = name @name = name


self.categories = dir.split('/').reject { |x| x.empty? } self.categories = dir.split('/').reject { |x| x.empty? }
Expand Down
13 changes: 8 additions & 5 deletions lib/jekyll/site.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ module Jekyll
class Site class Site
attr_accessor :config, :layouts, :posts, :pages, :static_files, attr_accessor :config, :layouts, :posts, :pages, :static_files,
:categories, :exclude, :include, :source, :dest, :lsi, :pygments, :categories, :exclude, :include, :source, :dest, :lsi, :pygments,
:permalink_style, :tags, :time, :future, :safe, :plugins, :limit_posts :permalink_style, :tags, :time, :future, :safe, :plugins,
:limit_posts, :post_dir


attr_accessor :converters, :generators attr_accessor :converters, :generators


Expand All @@ -26,6 +27,7 @@ def initialize(config)
self.include = config['include'] || [] self.include = config['include'] || []
self.future = config['future'] self.future = config['future']
self.limit_posts = config['limit_posts'] || nil self.limit_posts = config['limit_posts'] || nil
self.post_dir = config['posts']


self.reset self.reset
self.setup self.setup
Expand Down Expand Up @@ -131,6 +133,7 @@ def read_directories(dir = '')
self.read_posts(dir) self.read_posts(dir)


entries.each do |f| entries.each do |f|
next if Post.valid?(f) # exclude posts
f_abs = File.join(base, f) f_abs = File.join(base, f)
f_rel = File.join(dir, f) f_rel = File.join(dir, f)
if File.directory?(f_abs) if File.directory?(f_abs)
Expand All @@ -149,16 +152,16 @@ def read_directories(dir = '')
end end
end end


# Read all the files in <source>/<dir>/_posts and create a new Post # Read all the files under <source>/<dir>/ that follow post pattern
# object with each one. # and create a new Post object with each one.
# #
# dir - The String relative path of the directory to read. # dir - The String relative path of the directory to read.
# #
# Returns nothing. # Returns nothing.
def read_posts(dir) def read_posts(dir)
base = File.join(self.source, dir, '_posts') base = File.join(self.source, dir, post_dir)
return unless File.exists?(base) return unless File.exists?(base)
entries = Dir.chdir(base) { filter_entries(Dir['**/*']) } entries = Dir.chdir(base) { filter_entries(Dir["**/[0-9]*"]) }


# first pass processes, but does not yet render post content # first pass processes, but does not yet render post content
entries.each do |f| entries.each do |f|
Expand Down