-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfacebook_embedded_post.rb
41 lines (38 loc) · 1.4 KB
/
facebook_embedded_post.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# A Liquid tag that gives embedding Facebook's "Embedded Posts" functionality into Jekyll sites.
# By - Zac Clancy (@zac_c)
#
# Source url: https://github.com/zclancy/octopress_facebook_embedded_posts_plugin
# Blog post: http://blackglasses.me/2013/08/30/facebook-embedded-posts-and-octopress/
# Facebook embedded post info: https://developers.facebook.com/blog/post/2013/07/31/introducing-embedded-posts/
#
# Syntax: {% facebook_embedded_post url %}
# Example: {% facebook_embedded_post https://www.facebook.com/FacebookDevelopers/posts/10151471074398553 %}
module Jekyll
class FacebookEmbeddedPost < Liquid::Tag
def initialize(tag_name, url, tokens)
super
@post_url = url
end
def render(context)
if @post_url
html_output_for @post_url
else
"Error processing input, expected syntax: {% facebook_embedded_post post_url %}"
end
end
def html_output_for(post_url)
<<HTML
<div id='fb-root'></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = '//connect.facebook.net/en_US/all.js#xfbml=1';
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class='fb-post' data-href='#{post_url}'></div>
HTML
end
end
end
Liquid::Template.register_tag('facebook_embedded_post', Jekyll::FacebookEmbeddedPost)