jekyll-seo-tag 0.1.4 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/jekyll-seo-tag.rb +8 -11
- data/lib/jekyll-seo-tag/filters.rb +14 -0
- data/lib/jekyll-seo-tag/version.rb +1 -1
- data/lib/template.html +32 -24
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9c2e7b63d04d2bde4d1f47a71849d7b7efc5b99
|
4
|
+
data.tar.gz: 85705921fa8691e6588ffa10953f7cfc2ed31f3f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb94e6867b9fcc64aa895e7330a18a8c5f8e46242f8acf5c5cf2928516bc4ae131174f1ec9523838e89c8f7f092f4fb11f8d19573deb4d42cd6c9cc2946ce7c5
|
7
|
+
data.tar.gz: bf8b3125ab927e7d05abfadb4f00f43ae692504b4d9449adccc6df0eeda3ada48025d10cdd44e628cbc2b908f85d32dd634dc5841ac2cf87f4fb608f47a3b9ab
|
data/README.md
CHANGED
@@ -69,5 +69,5 @@ The SEO tag will respect the following YAML front matter if included in a post,
|
|
69
69
|
|
70
70
|
* `title` - The title of the post, page, or document
|
71
71
|
* `description` - A short description of the page's content
|
72
|
-
* `image` -
|
72
|
+
* `image` - Relative URL to an image associated with the post, page, or document (e.g., `assets/page-pic.jpg`)
|
73
73
|
* `author` - The username of the post, page, or document author
|
data/lib/jekyll-seo-tag.rb
CHANGED
@@ -1,20 +1,13 @@
|
|
1
|
+
require 'jekyll-seo-tag/filters'
|
2
|
+
|
1
3
|
module Jekyll
|
2
4
|
class SeoTag < Liquid::Tag
|
3
5
|
|
4
6
|
attr_accessor :context
|
5
7
|
|
6
|
-
HTML_ESCAPE = {
|
7
|
-
"\u201c".freeze => '“'.freeze,
|
8
|
-
"\u201d".freeze => '”'.freeze
|
9
|
-
}
|
10
|
-
HTML_ESCAPE_REGEX = Regexp.union(HTML_ESCAPE.keys).freeze
|
11
|
-
|
12
8
|
def render(context)
|
13
9
|
@context = context
|
14
|
-
output =
|
15
|
-
|
16
|
-
# Encode smart quotes. See https://github.com/benbalter/jekyll-seo-tag/pull/6
|
17
|
-
output.gsub!(HTML_ESCAPE_REGEX, HTML_ESCAPE)
|
10
|
+
output = template.render!(payload, info)
|
18
11
|
|
19
12
|
output
|
20
13
|
end
|
@@ -31,10 +24,14 @@ module Jekyll
|
|
31
24
|
def info
|
32
25
|
{
|
33
26
|
:registers => context.registers,
|
34
|
-
:filters => [Jekyll::Filters]
|
27
|
+
:filters => [Jekyll::Filters, JekyllSeoTag::Filters]
|
35
28
|
}
|
36
29
|
end
|
37
30
|
|
31
|
+
def template
|
32
|
+
@template ||= Liquid::Template.parse template_contents
|
33
|
+
end
|
34
|
+
|
38
35
|
def template_contents
|
39
36
|
@template_contents ||= File.read(template_path).gsub(/(>\n|[%}]})\s+(<|{[{%])/,'\1\2').chomp
|
40
37
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module JekyllSeoTag
|
2
|
+
module Filters
|
3
|
+
|
4
|
+
# This is available in Liquid from version 3 which is required by Jekyll 3
|
5
|
+
# Provided here for compatibility with Jekyll 2.x
|
6
|
+
def default(input, default_value = ''.freeze)
|
7
|
+
if !input || input.respond_to?(:empty?) && input.empty?
|
8
|
+
default_value
|
9
|
+
else
|
10
|
+
input
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/template.html
CHANGED
@@ -2,39 +2,47 @@
|
|
2
2
|
|
3
3
|
{% if site.url %}
|
4
4
|
{% assign seo_url = site.url | append: site.baseurl %}
|
5
|
-
{% elsif site.github.url %}
|
6
|
-
{% assign seo_url = site.github.url %}
|
7
5
|
{% endif %}
|
6
|
+
{% assign seo_url = seo_url | default: site.github.url %}
|
7
|
+
|
8
|
+
{% assign seo_site_title = site.title | default: site.name %}
|
8
9
|
|
9
10
|
{% if page.title %}
|
10
11
|
{% assign seo_title = page.title %}
|
11
12
|
{% assign seo_page_title = page.title %}
|
12
|
-
{% if
|
13
|
-
{% assign seo_title = seo_title | append:" - " | append:
|
13
|
+
{% if seo_site_title %}
|
14
|
+
{% assign seo_title = seo_title | append:" - " | append: seo_site_title %}
|
15
|
+
{% endif %}
|
16
|
+
{% elsif seo_site_title %}
|
17
|
+
{% assign seo_title = seo_site_title %}
|
18
|
+
{% assign seo_page_title = seo_site_title %}
|
19
|
+
{% if site.description %}
|
20
|
+
{% assign seo_title = seo_title | append:" - " | append: site.description %}
|
14
21
|
{% endif %}
|
15
|
-
{% elsif site.title %}
|
16
|
-
{% assign seo_title = site.title %}
|
17
|
-
{% assign seo_page_title = site.title %}
|
18
|
-
{% if site.description %}
|
19
|
-
{% assign seo_title = seo_title | append:" - " | append: site.description %}
|
20
|
-
{% endif %}
|
21
22
|
{% endif %}
|
22
23
|
{% if seo_title %}
|
23
24
|
{% assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once %}
|
24
25
|
{% endif %}
|
26
|
+
{% if seo_site_title %}
|
27
|
+
{% assign seo_site_title = seo_site_title | markdownify | strip_html | strip_newlines | escape_once %}
|
28
|
+
{% endif %}
|
25
29
|
{% if seo_page_title %}
|
26
30
|
{% assign seo_page_title = seo_page_title | markdownify | strip_html | strip_newlines | escape_once %}
|
27
31
|
{% endif %}
|
28
32
|
|
29
|
-
{%
|
30
|
-
{% assign seo_description = page.description %}
|
31
|
-
{% elsif site.description %}
|
32
|
-
{% assign seo_description = site.description %}
|
33
|
-
{% endif %}
|
33
|
+
{% assign seo_description = page.description | default: page.excerpt | default: site.description %}
|
34
34
|
{% if seo_description %}
|
35
35
|
{% assign seo_description = seo_description | markdownify | strip_html | strip_newlines | escape_once %}
|
36
36
|
{% endif %}
|
37
37
|
|
38
|
+
{% if page.author %}
|
39
|
+
{% assign seo_author_name = page.author.name | default: page.author %}
|
40
|
+
{% assign seo_author_twitter = page.author.twitter | default: page.author %}
|
41
|
+
{% endif %}
|
42
|
+
{% if seo_author_twitter %}
|
43
|
+
{% assign seo_author_twitter = seo_author_twitter | replace:"@","" | prepend:"@" %}
|
44
|
+
{% endif %}
|
45
|
+
|
38
46
|
{% if seo_title %}
|
39
47
|
<title>{{ seo_title }}</title>
|
40
48
|
{% endif %}
|
@@ -49,24 +57,24 @@
|
|
49
57
|
{% endif %}
|
50
58
|
|
51
59
|
{% if seo_url %}
|
52
|
-
<link rel="canonical" href="{{ page.url | prepend: seo_url | replace:'/index.html','/' }}"
|
60
|
+
<link rel="canonical" href="{{ page.url | prepend: seo_url | replace:'/index.html','/' }}" />
|
53
61
|
<meta property='og:url' content='{{ page.url | prepend: seo_url | replace:'/index.html','/' }}' />
|
54
62
|
{% endif %}
|
55
63
|
|
56
|
-
{% if
|
57
|
-
<meta property="og:site_name" content="{{
|
64
|
+
{% if seo_site_title %}
|
65
|
+
<meta property="og:site_name" content="{{ seo_site_title }}" />
|
58
66
|
<script type="application/ld+json">
|
59
67
|
{
|
60
68
|
"@context" : "http://schema.org",
|
61
69
|
"@type" : "WebSite",
|
62
|
-
"name" : {{
|
70
|
+
"name" : {{ seo_site_title | jsonify }},
|
63
71
|
"url" : {{ seo_url | jsonify }}
|
64
72
|
}
|
65
73
|
</script>
|
66
74
|
{% endif %}
|
67
75
|
|
68
76
|
{% if page.image %}
|
69
|
-
<meta property="og:image" content="{{ page.image }}" />
|
77
|
+
<meta property="og:image" content="{{ page.image | prepend: "/" | prepend: seo_url | escape }}" />
|
70
78
|
{% endif %}
|
71
79
|
|
72
80
|
{% if page.date %}
|
@@ -84,7 +92,7 @@
|
|
84
92
|
"headline": {{ page.title | jsonify }},
|
85
93
|
"image": {{ page.image | jsonify }},
|
86
94
|
"datePublished": {{ page.date | date_to_xmlschema | jsonify }},
|
87
|
-
"description": {{
|
95
|
+
"description": {{ seo_description | jsonify }}
|
88
96
|
}
|
89
97
|
</script>
|
90
98
|
{% endif %}
|
@@ -97,8 +105,8 @@
|
|
97
105
|
{% if page.image %}
|
98
106
|
<meta name="twitter:image" content="{{ page.image | escape }}" />
|
99
107
|
{% endif %}
|
100
|
-
{% if
|
101
|
-
<meta name="twitter:creator" content="
|
108
|
+
{% if seo_author_twitter %}
|
109
|
+
<meta name="twitter:creator" content="{{ seo_author_twitter }}" />
|
102
110
|
{% endif %}
|
103
111
|
{% endif %}
|
104
112
|
|
@@ -118,7 +126,7 @@
|
|
118
126
|
{
|
119
127
|
"@context" : "http://schema.org",
|
120
128
|
"@type" : "{% if site.social.type %}{{ site.social.type }}{% else %}person{% endif %}",
|
121
|
-
"name" : "{% if site.social.name %}{{ site.social.name }}{% else %}{{
|
129
|
+
"name" : "{% if site.social.name %}{{ site.social.name }}{% else %}{{ seo_site_title }}{% endif %}",
|
122
130
|
"url" : {{ seo_url | jsonify }},
|
123
131
|
"sameAs" : {{ site.social.links | jsonify }}
|
124
132
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-seo-tag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Balter
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -96,6 +96,7 @@ files:
|
|
96
96
|
- Rakefile
|
97
97
|
- jekyll-seo-tag.gemspec
|
98
98
|
- lib/jekyll-seo-tag.rb
|
99
|
+
- lib/jekyll-seo-tag/filters.rb
|
99
100
|
- lib/jekyll-seo-tag/version.rb
|
100
101
|
- lib/template.html
|
101
102
|
- script/bootstrap
|
@@ -128,3 +129,4 @@ specification_version: 4
|
|
128
129
|
summary: A Jekyll plugin to add metadata tags for search engines and social networks
|
129
130
|
to better index and display your site's content.
|
130
131
|
test_files: []
|
132
|
+
has_rdoc:
|