... | ... |
@@ -33,6 +33,9 @@ pygments: false |
33 | 33 |
paginate: 10 # Posts per page on the blog index |
34 | 34 |
recent_posts: 5 # Posts in the sidebar Recent Posts section |
35 | 35 |
|
36 |
+# list each of the sidebar modules you want to include, in the order you want, here, adding your own in asides/custom/... if you'd like |
|
37 |
+asides: [asides/recent_posts.html, asides/twitter.html, asides/delicious.html, asides/pinboard.html] |
|
38 |
+ |
|
36 | 39 |
# ----------------------- # |
37 | 40 |
# 3rd Party Settings # |
38 | 41 |
# ----------------------- # |
39 | 42 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,58 @@ |
0 |
+# Title: Include Array Tag for Jekyll |
|
1 |
+# Author: Jason Woodward http://www.woodwardjd.com |
|
2 |
+# Description: Import files on your filesystem as specified in a configuration variable in _config.yml. Mostly cribbed from Jekyll's include tag. |
|
3 |
+# Syntax: {% include_array variable_name_from_config.yml %} |
|
4 |
+# |
|
5 |
+# Example 1: |
|
6 |
+# {% include_array asides %} |
|
7 |
+# |
|
8 |
+# _config.yml snippet: |
|
9 |
+# asides: [asides/twitter.html, asides/custom/my_picture.html] |
|
10 |
+# |
|
11 |
+module Jekyll |
|
12 |
+ |
|
13 |
+ class IncludeArrayTag < Liquid::Tag |
|
14 |
+ Syntax = /(#{Liquid::QuotedFragment}+)/ |
|
15 |
+ def initialize(tag_name, markup, tokens) |
|
16 |
+ if markup =~ Syntax |
|
17 |
+ @array_name = $1 |
|
18 |
+ else |
|
19 |
+ raise SyntaxError.new("Error in tag 'include_array' - Valid syntax: include_array [array from _config.yml]") |
|
20 |
+ end |
|
21 |
+ |
|
22 |
+ super |
|
23 |
+ end |
|
24 |
+ |
|
25 |
+ def render(context) |
|
26 |
+ includes_dir = File.join(context.registers[:site].source, '_includes') |
|
27 |
+ |
|
28 |
+ if File.symlink?(includes_dir) |
|
29 |
+ return "Includes directory '#{includes_dir}' cannot be a symlink" |
|
30 |
+ end |
|
31 |
+ |
|
32 |
+ rtn = '' |
|
33 |
+ (context.environments.first['site'][@array_name] || []).each do |file| |
|
34 |
+ if file !~ /^[a-zA-Z0-9_\/\.-]+$/ || file =~ /\.\// || file =~ /\/\./ |
|
35 |
+ rtn = rtn + "Include file '#{file}' contains invalid characters or sequences" |
|
36 |
+ end |
|
37 |
+ |
|
38 |
+ Dir.chdir(includes_dir) do |
|
39 |
+ choices = Dir['**/*'].reject { |x| File.symlink?(x) } |
|
40 |
+ if choices.include?(file) |
|
41 |
+ source = File.read(file) |
|
42 |
+ partial = Liquid::Template.parse(source) |
|
43 |
+ context.stack do |
|
44 |
+ rtn = rtn + partial.render(context) |
|
45 |
+ end |
|
46 |
+ else |
|
47 |
+ rtn = rtn + "Included file '#{file}' not found in _includes directory" |
|
48 |
+ end |
|
49 |
+ end |
|
50 |
+ end |
|
51 |
+ rtn |
|
52 |
+ end |
|
53 |
+ end |
|
54 |
+ |
|
55 |
+end |
|
56 |
+ |
|
57 |
+Liquid::Template.register_tag('include_array', Jekyll::IncludeArrayTag) |