jekyll-seo-tag 2.2.0 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3aadbfac78b25f51bdf3988226662b0bec27d938
4
- data.tar.gz: 31daa9c7be9db36224a7f7e4ea73bd65759e434c
3
+ metadata.gz: d007bd49496c661cf441f17dc25d6756ae9daf31
4
+ data.tar.gz: c1a2dc3f79edacd4d68fedc1c8f518249a5a59a3
5
5
  SHA512:
6
- metadata.gz: 86935801e5cfa7a9615a3d43724883963cd4797cd77cd23c0acf269d673d812b54c046377b0c9cbefb60aba7de645d6a8e261014db70e1bfebe7d9a9e17b49b3
7
- data.tar.gz: 22c5d2544893c1568669e1655ee242ee56207ce20c04f898b951089220357dbab5451a2a1bf29e6cfcf1dfef624e17faf78d77a7507cf7b20de05a5e6a1f901a
6
+ metadata.gz: 0eec356674ff4054de62b1d022cbf206496fc4eb17dc2933137764851310b5350d1b0b6bd8403ff80a2faf9e8184f8a85d4eeeecf572752d2ea8d5cfe0c68e36
7
+ data.tar.gz: 12088f4299da9829ab61d2c04ce1994cbcd3999f32cd3489aab59053bcf1b3584342e9c4e6bddf1cd082e95032094d2179c0713977f4eea5e4ab338e8e52e3f5
data/.rspec CHANGED
@@ -1,2 +1,2 @@
1
- --format documentation
2
1
  --color
2
+ --require spec_helper
@@ -1,5 +1,10 @@
1
1
  ## HEAD
2
2
 
3
+ * Convert template logic to a Liquid Drop (significant performance improvement) (#184)
4
+ * Fix for JSON-LD validation warning for images missing required properties (#183)
5
+
6
+ ## 2.2.0
7
+
3
8
  ### Major Enhancements
4
9
 
5
10
  * Add author meta (#103)
@@ -1,7 +1,12 @@
1
+ require "jekyll"
1
2
  require "jekyll-seo-tag/version"
2
3
 
3
4
  module Jekyll
4
5
  class SeoTag < Liquid::Tag
6
+ autoload :JSONLD, "jekyll-seo-tag/json_ld"
7
+ autoload :Drop, "jekyll-seo-tag/drop"
8
+ autoload :Filters, "jekyll-seo-tag/filters"
9
+
5
10
  attr_accessor :context
6
11
 
7
12
  # Matches all whitespace that follows either
@@ -39,12 +44,12 @@ module Jekyll
39
44
  "page" => context.registers[:page],
40
45
  "site" => context.registers[:site].site_payload["site"],
41
46
  "paginator" => context["paginator"],
42
- "seo_tag" => options,
47
+ "seo_tag" => drop,
43
48
  }
44
49
  end
45
50
 
46
- def title?
47
- @text !~ %r!title=false!i
51
+ def drop
52
+ @drop ||= Jekyll::SeoTag::Drop.new(@text, @context)
48
53
  end
49
54
 
50
55
  def info
@@ -0,0 +1,244 @@
1
+ module Jekyll
2
+ class SeoTag
3
+ class Drop < Jekyll::Drops::Drop
4
+ include Jekyll::SeoTag::JSONLD
5
+
6
+ TITLE_SEPARATOR = " | ".freeze
7
+ FORMAT_STRING_METHODS = %i[
8
+ markdownify strip_html normalize_whitespace escape_once
9
+ ].freeze
10
+ HOMEPAGE_OR_ABOUT_REGEX = %r!^/(about/)?(index.html?)?$!
11
+
12
+ def initialize(text, context)
13
+ @obj = {}
14
+ @mutations = {}
15
+ @text = text
16
+ @context = context
17
+ end
18
+
19
+ def version
20
+ Jekyll::SeoTag::VERSION
21
+ end
22
+
23
+ # Should the `<title>` tag be generated for this page?
24
+ def title?
25
+ return false unless title
26
+ return @display_title if defined?(@display_title)
27
+ @display_title = (@text !~ %r!title=false!i)
28
+ end
29
+
30
+ def site_title
31
+ @site_title ||= format_string(site["title"] || site["name"])
32
+ end
33
+
34
+ # Page title without site title or description appended
35
+ def page_title
36
+ @page_title ||= format_string(page["title"] || site_title)
37
+ end
38
+
39
+ # Page title with site title or description appended
40
+ def title
41
+ @title ||= begin
42
+ if page["title"] && site_title
43
+ page_title + TITLE_SEPARATOR + site_title
44
+ elsif site["description"] && site_title
45
+ site_title + TITLE_SEPARATOR + format_string(site["description"])
46
+ else
47
+ page_title || site_title
48
+ end
49
+ end
50
+ end
51
+
52
+ def name
53
+ return @name if defined?(@name)
54
+ @name = if seo_name
55
+ seo_name
56
+ elsif !homepage_or_about?
57
+ nil
58
+ elsif site["social"] && site["social"]["name"]
59
+ format_string site["social"]["name"]
60
+ elsif site_title
61
+ format_string site_title
62
+ end
63
+ end
64
+
65
+ def description
66
+ @description ||= format_string(
67
+ page["description"] || page["excerpt"] || site["description"]
68
+ )
69
+ end
70
+
71
+ # Returns a nil or a hash representing the author
72
+ # Author name will be pulled from:
73
+ #
74
+ # 1. The `author` key, if the key is a string
75
+ # 2. The first author in the `authors` key
76
+ # 3. The `author` key in the site config
77
+ #
78
+ # If the result from the name search is a string, we'll also check
79
+ # to see if the author exists in `site.data.authors`
80
+ def author
81
+ @author ||= begin
82
+ return if author_string_or_hash.to_s.empty?
83
+
84
+ author = if author_string_or_hash.is_a?(String)
85
+ author_hash(author_string_or_hash)
86
+ else
87
+ author_string_or_hash
88
+ end
89
+
90
+ author["twitter"] ||= author["name"]
91
+ author["twitter"].delete! "@"
92
+ author.to_liquid
93
+ end
94
+ end
95
+
96
+ def date_modified
97
+ @date_modified ||= begin
98
+ date = if page["seo"] && page["seo"]["date_modified"]
99
+ page["seo"]["date_modified"]
100
+ elsif page["last_modified_at"]
101
+ page["last_modified_at"].to_liquid
102
+ else
103
+ page["date"]
104
+ end
105
+ filters.date_to_xmlschema(date) if date
106
+ end
107
+ end
108
+
109
+ def date_published
110
+ @date_published ||= filters.date_to_xmlschema(page["date"]) if page["date"]
111
+ end
112
+
113
+ def type
114
+ @type ||= begin
115
+ if page["seo"] && page["seo"]["type"]
116
+ page["seo"]["type"]
117
+ elsif homepage_or_about?
118
+ "WebSite"
119
+ elsif page["date"]
120
+ "BlogPosting"
121
+ else
122
+ "WebPage"
123
+ end
124
+ end
125
+ end
126
+
127
+ def links
128
+ @links ||= begin
129
+ if page["seo"] && page["seo"]["links"]
130
+ page["seo"]["links"]
131
+ elsif homepage_or_about? && site["social"] && site["social"]["links"]
132
+ site["social"]["links"]
133
+ end
134
+ end
135
+ end
136
+
137
+ def logo
138
+ @logo ||= begin
139
+ return unless site["logo"]
140
+ if absolute_url? site["logo"]
141
+ filters.uri_escape site["logo"]
142
+ else
143
+ filters.uri_escape filters.absolute_url site["logo"]
144
+ end
145
+ end
146
+ end
147
+
148
+ # Returns nil or a hash representing the page image
149
+ # The image hash will always contain a path, pulled from:
150
+ #
151
+ # 1. The `image` key if it's a string
152
+ # 2. The `image.path` key if it's a hash
153
+ # 3. The `image.facebook` key
154
+ # 4. The `image.twitter` key
155
+ #
156
+ # The resulting path is always an absolute URL
157
+ def image
158
+ return @image if defined?(@image)
159
+
160
+ image = page["image"]
161
+ return @image = nil unless image
162
+
163
+ image = { "path" => image } if image.is_a?(String)
164
+ image["path"] ||= image["facebook"] || image["twitter"]
165
+
166
+ unless absolute_url? image["path"]
167
+ image["path"] = filters.absolute_url image["path"]
168
+ end
169
+
170
+ image["path"] = filters.uri_escape image["path"]
171
+
172
+ @image = image.to_liquid
173
+ end
174
+
175
+ def page_lang
176
+ @page_lang ||= page["lang"] || site["lang"] || "en_US"
177
+ end
178
+
179
+ def canonical_url
180
+ @canonical_url ||= filters.absolute_url(page["url"]).gsub(%r!/index\.html$!, "/")
181
+ end
182
+
183
+ private
184
+
185
+ def filters
186
+ @filters ||= Jekyll::SeoTag::Filters.new(@context)
187
+ end
188
+
189
+ def page
190
+ @page ||= @context.registers[:page].to_liquid
191
+ end
192
+
193
+ def site
194
+ @site ||= @context.registers[:site].site_payload["site"].to_liquid
195
+ end
196
+
197
+ def homepage_or_about?
198
+ page["url"] =~ HOMEPAGE_OR_ABOUT_REGEX
199
+ end
200
+
201
+ attr_reader :context
202
+
203
+ def fallback_data
204
+ @fallback_data ||= {}
205
+ end
206
+
207
+ def absolute_url?(string)
208
+ Addressable::URI.parse(string).absolute?
209
+ end
210
+
211
+ def format_string(string)
212
+ string = FORMAT_STRING_METHODS.reduce(string) do |memo, method|
213
+ filters.public_send(method, memo)
214
+ end
215
+
216
+ string unless string.empty?
217
+ end
218
+
219
+ def author_string_or_hash
220
+ @author_string_or_hash ||= begin
221
+ author = page["author"]
222
+ author = page["authors"][0] if author.to_s.empty? && page["authors"]
223
+ author = site["author"] if author.to_s.empty?
224
+ author
225
+ end
226
+ end
227
+
228
+ def author_hash(author_string)
229
+ if site.data["authors"] && site.data["authors"][author_string]
230
+ hash = site.data["authors"][author_string]
231
+ hash["name"] ||= author_string
232
+ hash["twitter"] ||= author_string
233
+ hash
234
+ else
235
+ { "name" => author_string }
236
+ end
237
+ end
238
+
239
+ def seo_name
240
+ @seo_name ||= format_string(page["seo"]["name"]) if page["seo"]
241
+ end
242
+ end
243
+ end
244
+ end
@@ -0,0 +1,12 @@
1
+ module Jekyll
2
+ class SeoTag
3
+ class Filters
4
+ include Jekyll::Filters
5
+ include Liquid::StandardFilters
6
+
7
+ def initialize(context)
8
+ @context = context
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,79 @@
1
+ module Jekyll
2
+ class SeoTag
3
+ module JSONLD
4
+
5
+ # A hash of instance methods => key in resulting JSON-LD hash
6
+ METHODS_KEYS = {
7
+ :json_context => "@context",
8
+ :type => "@type",
9
+ :name => "name",
10
+ :page_title => "headline",
11
+ :json_author => "author",
12
+ :json_image => "image",
13
+ :date_published => "datePublished",
14
+ :date_modified => "dateModified",
15
+ :description => "description",
16
+ :publisher => "publisher",
17
+ :main_entity => "mainEntityOfPage",
18
+ :links => "sameAs",
19
+ :canonical_url => "url",
20
+ }.freeze
21
+
22
+ def json_ld
23
+ @json_ld ||= begin
24
+ output = {}
25
+ METHODS_KEYS.each do |method, key|
26
+ value = send(method)
27
+ output[key] = value unless value.nil?
28
+ end
29
+ output
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def json_context
36
+ "http://schema.org"
37
+ end
38
+
39
+ def json_author
40
+ return unless author
41
+ {
42
+ "@type" => "Person",
43
+ "name" => author["name"],
44
+ }
45
+ end
46
+
47
+ def json_image
48
+ return unless image
49
+ return image["path"] if image.length == 1
50
+
51
+ hash = image.dup
52
+ hash["url"] = hash.delete("path")
53
+ hash["@type"] = "imageObject"
54
+ hash
55
+ end
56
+
57
+ def publisher
58
+ return unless logo
59
+ output = {
60
+ "@type" => "Organization",
61
+ "logo" => {
62
+ "@type" => "ImageObject",
63
+ "url" => logo,
64
+ },
65
+ }
66
+ output["name"] = author["name"] if author
67
+ output
68
+ end
69
+
70
+ def main_entity
71
+ return unless %w(BlogPosting CreativeWork).include?(type)
72
+ {
73
+ "@type" => "WebPage",
74
+ "@id" => canonical_url,
75
+ }
76
+ end
77
+ end
78
+ end
79
+ end
@@ -3,6 +3,6 @@ module Liquid; class Tag; end; end
3
3
 
4
4
  module Jekyll
5
5
  class SeoTag < Liquid::Tag
6
- VERSION = "2.2.0".freeze
6
+ VERSION = "2.2.1".freeze
7
7
  end
8
8
  end
@@ -1,143 +1,39 @@
1
1
  <!-- Begin Jekyll SEO tag v{{ seo_tag.version }} -->
2
-
3
- {% if page.url == "/" or page.url == "/about/" %}
4
- {% assign seo_homepage_or_about = true %}
5
- {% endif %}
6
-
7
- {% assign seo_site_title = site.title | default: site.name %}
8
- {% assign seo_page_title = page.title | default: seo_site_title %}
9
- {% assign seo_title = page.title | default: seo_site_title %}
10
-
11
- {% if page.title and seo_site_title %}
12
- {% assign seo_title = page.title | append:" | " | append: seo_site_title %}
13
- {% elsif site.description and seo_site_title %}
14
- {% assign seo_title = seo_site_title | append:" | " | append: site.description %}
15
- {% endif %}
16
-
17
- {% if page.seo and page.seo.name %}
18
- {% assign seo_name = page.seo.name %}
19
- {% elsif seo_homepage_or_about and site.social and site.social.name %}
20
- {% assign seo_name = site.social.name %}
21
- {% elsif seo_homepage_or_about and seo_site_title %}
22
- {% assign seo_name = seo_site_title %}
23
- {% endif %}
24
- {% if seo_name %}
25
- {% assign seo_name = seo_name | smartify | strip_html | normalize_whitespace | escape_once %}
26
- {% endif %}
27
-
28
- {% if seo_title %}
29
- {% assign seo_title = seo_title | smartify | strip_html | normalize_whitespace | escape_once %}
30
- {% endif %}
31
-
32
- {% if seo_site_title %}
33
- {% assign seo_site_title = seo_site_title | smartify | strip_html | normalize_whitespace | escape_once %}
34
- {% endif %}
35
-
36
- {% if seo_page_title %}
37
- {% assign seo_page_title = seo_page_title | smartify | strip_html | normalize_whitespace | escape_once %}
38
- {% endif %}
39
-
40
- {% assign seo_description = page.description | default: page.excerpt | default: site.description %}
41
- {% if seo_description %}
42
- {% assign seo_description = seo_description | markdownify | strip_html | normalize_whitespace | escape_once %}
43
- {% endif %}
44
-
45
- {% assign seo_author = page.author | default: page.authors[0] | default: site.author %}
46
- {% if seo_author %}
47
- {% if seo_author.name %}
48
- {% assign seo_author_name = seo_author.name %}
49
- {% else %}
50
- {% if site.data.authors and site.data.authors[seo_author] %}
51
- {% assign seo_author_name = site.data.authors[seo_author].name %}
52
- {% else %}
53
- {% assign seo_author_name = seo_author %}
54
- {% endif %}
55
- {% endif %}
56
- {% if seo_author.twitter %}
57
- {% assign seo_author_twitter = seo_author.twitter %}
58
- {% else %}
59
- {% if site.data.authors and site.data.authors[seo_author] %}
60
- {% assign seo_author_twitter = site.data.authors[seo_author].twitter %}
61
- {% else %}
62
- {% assign seo_author_twitter = seo_author %}
63
- {% endif %}
64
- {% endif %}
65
- {% assign seo_author_twitter = seo_author_twitter | replace:"@","" %}
66
- {% endif %}
67
-
68
- {% if page.date_modified or page.last_modified_at or page.date %}
69
- {% assign seo_date_modified = page.seo.date_modified | default: page.last_modified_at %}
70
- {% endif %}
71
-
72
- {% if page.seo and page.seo.type %}
73
- {% assign seo_type = page.seo.type %}
74
- {% elsif seo_homepage_or_about %}
75
- {% assign seo_type = "WebSite" %}
76
- {% elsif page.date %}
77
- {% assign seo_type = "BlogPosting" %}
78
- {% else %}
79
- {% assign seo_type = "WebPage" %}
80
- {% endif %}
81
-
82
- {% if page.seo and page.seo.links %}
83
- {% assign seo_links = page.seo.links %}
84
- {% elsif seo_homepage_or_about and site.social and site.social.links %}
85
- {% assign seo_links = site.social.links %}
86
- {% endif %}
87
-
88
- {% if site.logo %}
89
- {% assign seo_site_logo = site.logo %}
90
- {% unless seo_site_logo contains "://" %}
91
- {% assign seo_site_logo = seo_site_logo | absolute_url %}
92
- {% endunless %}
93
- {% assign seo_site_logo = seo_site_logo | escape %}
94
- {% endif %}
95
-
96
- {% if page.image %}
97
- {% assign seo_page_image = page.image.path | default: page.image.facebook | default: page.image.twitter | default: page.image %}
98
- {% unless seo_page_image contains "://" %}
99
- {% assign seo_page_image = seo_page_image | absolute_url %}
100
- {% endunless %}
101
- {% assign seo_page_image = seo_page_image | escape %}
2
+ {% if seo_tag.title? %}
3
+ <title>{{ seo_tag.title }}</title>
102
4
  {% endif %}
103
5
 
104
- {% assign seo_page_lang = page.lang | default: site.lang | default: "en_US" %}
105
-
106
- {% if seo_tag.title and seo_title %}
107
- <title>{{ seo_title }}</title>
108
- {% endif %}
109
-
110
- {% if seo_page_title %}
111
- <meta property="og:title" content="{{ seo_page_title }}" />
6
+ {% if seo_tag.page_title %}
7
+ <meta property="og:title" content="{{ seo_tag.page_title }}" />
112
8
  {% endif %}
113
9
 
114
- {% if seo_author_name %}
115
- <meta name="author" content="{{ seo_author_name }}" />
10
+ {% if seo_tag.author.name %}
11
+ <meta name="author" content="{{ seo_tag.author.name }}" />
116
12
  {% endif %}
117
13
 
118
- <meta property="og:locale" content="{{ seo_page_lang | replace:'-','_' }}" />
14
+ <meta property="og:locale" content="{{ seo_tag.page_lang | replace:'-','_' }}" />
119
15
 
120
- {% if seo_description %}
121
- <meta name="description" content="{{ seo_description }}" />
122
- <meta property="og:description" content="{{ seo_description }}" />
16
+ {% if seo_tag.description %}
17
+ <meta name="description" content="{{ seo_tag.description }}" />
18
+ <meta property="og:description" content="{{ seo_tag.description }}" />
123
19
  {% endif %}
124
20
 
125
- {% if page.url %}
126
- <link rel="canonical" href="{{ page.url | replace:'/index.html','/' | absolute_url }}" />
127
- <meta property="og:url" content="{{ page.url | replace:'/index.html','/' | absolute_url }}" />
21
+ {% if site.url %}
22
+ <link rel="canonical" href="{{ seo_tag.canonical_url }}" />
23
+ <meta property="og:url" content="{{ seo_tag.canonical_url }}" />
128
24
  {% endif %}
129
25
 
130
- {% if seo_site_title %}
131
- <meta property="og:site_name" content="{{ seo_site_title }}" />
26
+ {% if seo_tag.site_title %}
27
+ <meta property="og:site_name" content="{{ seo_tag.site_title }}" />
132
28
  {% endif %}
133
29
 
134
- {% if seo_page_image %}
135
- <meta property="og:image" content="{{ seo_page_image }}" />
136
- {% if page.image.height %}
137
- <meta property="og:image:height" content="{{ page.image.height }}" />
30
+ {% if seo_tag.image %}
31
+ <meta property="og:image" content="{{ seo_tag.image.path }}" />
32
+ {% if seo_tag.image.height %}
33
+ <meta property="og:image:height" content="{{ seo_tag.image.height }}" />
138
34
  {% endif %}
139
- {% if page.image.width %}
140
- <meta property="og:image:width" content="{{ page.image.width }}" />
35
+ {% if seo_tag.image.width %}
36
+ <meta property="og:image:width" content="{{ seo_tag.image.width }}" />
141
37
  {% endif %}
142
38
  {% endif %}
143
39
 
@@ -154,7 +50,7 @@
154
50
  {% endif %}
155
51
 
156
52
  {% if site.twitter %}
157
- {% if seo_page_image or page.image.twitter %}
53
+ {% if seo_tag.image %}
158
54
  <meta name="twitter:card" content="summary_large_image" />
159
55
  {% else %}
160
56
  <meta name="twitter:card" content="summary" />
@@ -162,8 +58,8 @@
162
58
 
163
59
  <meta name="twitter:site" content="@{{ site.twitter.username | replace:"@","" }}" />
164
60
 
165
- {% if seo_author_twitter %}
166
- <meta name="twitter:creator" content="@{{ seo_author_twitter }}" />
61
+ {% if seo_tag.author.twitter %}
62
+ <meta name="twitter:creator" content="@{{ seo_tag.author.twitter }}" />
167
63
  {% endif %}
168
64
  {% endif %}
169
65
 
@@ -185,12 +81,15 @@
185
81
  {% if site.webmaster_verifications.google %}
186
82
  <meta name="google-site-verification" content="{{ site.webmaster_verifications.google }}">
187
83
  {% endif %}
84
+
188
85
  {% if site.webmaster_verifications.bing %}
189
86
  <meta name="msvalidate.01" content="{{ site.webmaster_verifications.bing }}">
190
87
  {% endif %}
88
+
191
89
  {% if site.webmaster_verifications.alexa %}
192
90
  <meta name="alexaVerifyID" content="{{ site.webmaster_verifications.alexa }}">
193
91
  {% endif %}
92
+
194
93
  {% if site.webmaster_verifications.yandex %}
195
94
  <meta name="yandex-verification" content="{{ site.webmaster_verifications.yandex }}">
196
95
  {% endif %}
@@ -198,72 +97,8 @@
198
97
  <meta name="google-site-verification" content="{{ site.google_site_verification }}" />
199
98
  {% endif %}
200
99
 
201
-
202
100
  <script type="application/ld+json">
203
- {
204
- "@context": "http://schema.org",
205
-
206
- {% if seo_type %}
207
- "@type": {{ seo_type | jsonify }},
208
- {% endif %}
209
-
210
- {% if seo_name %}
211
- "name": {{ seo_name | jsonify }},
212
- {% endif %}
213
-
214
- {% if seo_page_title %}
215
- "headline": {{ seo_page_title | jsonify }},
216
- {% endif %}
217
-
218
- {% if seo_author %}
219
- "author": {
220
- "@type": "Person",
221
- "name": {{ seo_author | jsonify }}
222
- },
223
- {% endif %}
224
-
225
- {% if seo_page_image %}
226
- "image": {{ seo_page_image | jsonify }},
227
- {% endif %}
228
-
229
- {% if page.date %}
230
- "datePublished": {{ page.date | date_to_xmlschema | jsonify }},
231
- {% endif %}
232
-
233
- {% if seo_date_modified %}
234
- "dateModified": {{ seo_date_modified | date_to_xmlschema | jsonify }},
235
- {% endif %}
236
-
237
- {% if seo_description %}
238
- "description": {{ seo_description | jsonify }},
239
- {% endif %}
240
-
241
- {% if seo_site_logo %}
242
- "publisher": {
243
- "@type": "Organization",
244
- {% if seo_author %}
245
- "name": {{ seo_author | jsonify }},
246
- {% endif %}
247
- "logo": {
248
- "@type": "ImageObject",
249
- "url": {{ seo_site_logo | jsonify }}
250
- }
251
- },
252
- {% endif %}
253
-
254
- {% if seo_type == "BlogPosting" or seo_type == "CreativeWork"%}
255
- "mainEntityOfPage": {
256
- "@type": "WebPage",
257
- "@id": {{ page.url | replace:'/index.html','/' | absolute_url | jsonify }}
258
- },
259
- {% endif %}
260
-
261
- {% if seo_links %}
262
- "sameAs": {{ seo_links | jsonify }},
263
- {% endif %}
264
-
265
- "url": {{ page.url | replace:'/index.html','/' | absolute_url | jsonify }}
266
- }
101
+ {{ seo_tag.json_ld | jsonify }}
267
102
  </script>
268
103
 
269
104
  <!-- End Jekyll SEO tag -->
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: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Balter
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-06 00:00:00.000000000 Z
11
+ date: 2017-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -97,6 +97,9 @@ files:
97
97
  - README.md
98
98
  - jekyll-seo-tag.gemspec
99
99
  - lib/jekyll-seo-tag.rb
100
+ - lib/jekyll-seo-tag/drop.rb
101
+ - lib/jekyll-seo-tag/filters.rb
102
+ - lib/jekyll-seo-tag/json_ld.rb
100
103
  - lib/jekyll-seo-tag/version.rb
101
104
  - lib/template.html
102
105
  - script/bootstrap
@@ -123,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
126
  version: '0'
124
127
  requirements: []
125
128
  rubyforge_project:
126
- rubygems_version: 2.5.1
129
+ rubygems_version: 2.6.11
127
130
  signing_key:
128
131
  specification_version: 4
129
132
  summary: A Jekyll plugin to add metadata tags for search engines and social networks