jekyll-seo-tag 1.1.0 → 1.2.0

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: f841664e9807e1d76d4ce51846a5f3b7d3239457
4
- data.tar.gz: 53aa91acd74b1e52119a51d484ced2c99da32587
3
+ metadata.gz: 24b1466116c0edcefb7df6ea675eca5d08735626
4
+ data.tar.gz: 3effdcadd767625bd1418d1f3c0d36a3b50c7a13
5
5
  SHA512:
6
- metadata.gz: 108c1ea4cdf5286e00d7727c0dcfd207021959f457117de75a33c012905f5cd3413ff87708fb6297a9171730f0c9592c6a52904bad8ff991da63aae5bb27a894
7
- data.tar.gz: d4a22ada3a1311d1a8b1149dff77a2a0435d97a8db78431fc33a42819f777d763f5f7daddb70bc151a802aa16c35ed4f6a2a5a59eede963808f7d87f55bbfecf
6
+ metadata.gz: f39e1738e4cdaab1fe7aa0fe139f6fba9fa2479dcb0a0d5167d5132f444e3eae04d0afff321cb58c1f93b5bf666cd9d94c250c73b7779ca7d3f68021882b4007
7
+ data.tar.gz: a3888cf97e85b7a66461a225d68e54048a95caeaa039dbb9f3c9e74a18113f5fa46210650f5f251414c7f5a0e6a985d429ef2621f8e671b7b9b50ffcb808fd5f
data/README.md CHANGED
@@ -52,17 +52,22 @@ The SEO tag will respect any of the following if included in your site's `_confi
52
52
  * `title` - Your site's title (e.g., Ben's awesome site, The GitHub Blog, etc.)
53
53
  * `description` - A short description (e.g., A blog dedicated to reviewing cat gifs)
54
54
  * `url` - The full URL to your site. Note: `site.github.url` will be used by default.
55
+ * `author` - global author information (see below)
55
56
  * `twitter:username` - The site's Twitter handle. You'll want to describe it like so:
57
+
56
58
  ```yml
57
59
  twitter:
58
60
  username: benbalter
59
61
  ```
62
+
60
63
  * `facebook:app_id` (A Facebook app ID for Facebook insights), and/or `facebook:publisher` (A Facebook page URL or ID of the publishing entity). You'll want to describe one or both like so:
64
+
61
65
  ```yml
62
66
  facebook:
63
67
  app_id: 1234
64
68
  publisher: 1234
65
69
  ```
70
+
66
71
  * `logo` - Relative URL to a site-wide logo (e.g., `assets/your-company-logo.png`)
67
72
  * `social` - For [specifying social profiles](https://developers.google.com/structured-data/customize/social-profiles). The following properties are available:
68
73
  * `type` - Either `person` or `organization` (defaults to `person`)
@@ -75,4 +80,68 @@ The SEO tag will respect the following YAML front matter if included in a post,
75
80
  * `title` - The title of the post, page, or document
76
81
  * `description` - A short description of the page's content
77
82
  * `image` - Relative URL to an image associated with the post, page, or document (e.g., `assets/page-pic.jpg`)
78
- * `author` - The username of the post, page, or document author
83
+ * `author` - Page-, post-, or document-specific author information (see below)
84
+
85
+ ### Disabling `<title>` output
86
+
87
+ Jekyll SEO Tag is designed to implement SEO best practices by default. If for some reason, you don't want the plugin to output `<title>` tags on each page, simply invoke the plugin within your template like so:
88
+
89
+ ```
90
+ {% seo title=false %}
91
+ ```
92
+
93
+ ### Author information
94
+
95
+ Author information is used to propagate the `creator` field of Twitter summary cards. This is should be an author-specific, not site-wide Twitter handle (the site-wide username be stored as `site.twitter.username`).
96
+
97
+ *TL;DR: In most cases, put `author: [your Twitter handle]` in the document's front matter, for sites with multiple authors. If you need something more complicated, read on.*
98
+
99
+ There are several ways to convey this author-specific information. Author information is found in the following order of priority:
100
+
101
+ 1. An `author` object, in the documents's front matter, e.g.:
102
+
103
+ ```yml
104
+ author:
105
+ twitter: benbalter
106
+ ```
107
+
108
+ 2. An `author` object, in the site's `_config.yml`, e.g.:
109
+
110
+ ```yml
111
+ author:
112
+ twitter: benbalter
113
+ ```
114
+
115
+ 3. `site.data.authors[author]`, if an author is specified in the document's front matter, and a corresponding key exists in `site.data.authors`. E.g., you have the following in the document's front matter:
116
+
117
+ ```yml
118
+ author: benbalter
119
+ ```
120
+
121
+ And you have the following in `_data/authors.yml`:
122
+
123
+ ```yml
124
+ benbalter:
125
+ picture: /img/benbalter.png
126
+ twitter: jekyllrb
127
+
128
+ potus:
129
+ picture: /img/potus.png
130
+ twitter: whitehouse
131
+ ```
132
+
133
+ In the above example, the author `benbalter`'s Twitter handle will be resolved to `@jekyllrb`. This allows you to centralize author information in a single `_data/authors` file for site with many authors that require more than just the author's username.
134
+
135
+ *Pro-tip: If `authors` is present in the document's front matter as an array (and `author` is not), the plugin will use the first author listed, as Twitter supports only one author.*
136
+
137
+ 4. An author in the document's front matter (the simplest way), e.g.:
138
+
139
+ ```yml
140
+ author: benbalter
141
+ ```
142
+
143
+ 5. An author in the site's `_config.yml`, e.g.:
144
+
145
+ ```yml
146
+ author: benbalter
147
+ ```
@@ -6,22 +6,37 @@ module Jekyll
6
6
 
7
7
  MINIFY_REGEX = /(>\n|[%}]})\s+(<|{[{%])/
8
8
 
9
+ def initialize(_tag_name, text, _tokens)
10
+ super
11
+ @text = text
12
+ end
13
+
9
14
  def render(context)
10
15
  @context = context
11
- output = template.render!(payload, info)
12
-
13
- output
16
+ template.render!(payload, info)
14
17
  end
15
18
 
16
19
  private
17
20
 
21
+ def options
22
+ {
23
+ 'version' => VERSION,
24
+ 'title' => title?
25
+ }
26
+ end
27
+
18
28
  def payload
19
29
  {
20
- 'page' => context.registers[:page],
21
- 'site' => context.registers[:site].site_payload['site']
30
+ 'page' => context.registers[:page],
31
+ 'site' => context.registers[:site].site_payload['site'],
32
+ 'seo_tag' => options
22
33
  }
23
34
  end
24
35
 
36
+ def title?
37
+ !(@text =~ /title=false/i)
38
+ end
39
+
25
40
  def info
26
41
  {
27
42
  registers: context.registers,
@@ -3,6 +3,6 @@ module Liquid; class Tag; end; end
3
3
 
4
4
  module Jekyll
5
5
  class SeoTag < Liquid::Tag
6
- VERSION = '1.1.0'.freeze
6
+ VERSION = '1.2.0'.freeze
7
7
  end
8
8
  end
@@ -1,4 +1,4 @@
1
- <!-- Begin Jekyll SEO tag -->
1
+ <!-- Begin Jekyll SEO tag v{{ seo_tag.version }} -->
2
2
 
3
3
  {% if site.url %}
4
4
  {% assign seo_url = site.url | append: site.baseurl %}
@@ -39,16 +39,21 @@
39
39
  {% assign seo_description = seo_description | markdownify | strip_html | strip_newlines | escape_once %}
40
40
  {% endif %}
41
41
 
42
- {% if page.author %}
43
- {% assign seo_author_name = page.author.name | default: page.author %}
44
- {% assign seo_author_twitter = page.author.twitter | default: page.author %}
45
- {% endif %}
46
-
47
- {% if seo_author_twitter %}
48
- {% assign seo_author_twitter = seo_author_twitter | replace:"@","" | prepend:"@" %}
42
+ {% assign seo_author = page.author | default: page.authors[0] | default: site.author %}
43
+ {% if seo_author %}
44
+ {% if seo_author.twitter %}
45
+ {% assign seo_author_twitter = seo_author.twitter %}
46
+ {% else %}
47
+ {% if site.data.authors and site.data.authors[seo_author] %}
48
+ {% assign seo_author_twitter = site.data.authors[seo_author].twitter %}
49
+ {% else %}
50
+ {% assign seo_author_twitter = seo_author %}
51
+ {% endif %}
52
+ {% endif %}
53
+ {% assign seo_author_twitter = seo_author_twitter | replace:"@","" %}
49
54
  {% endif %}
50
55
 
51
- {% if seo_title %}
56
+ {% if seo_tag.title and seo_title %}
52
57
  <title>{{ seo_title }}</title>
53
58
  {% endif %}
54
59
 
@@ -117,7 +122,7 @@
117
122
  {% endif %}
118
123
 
119
124
  {% if seo_author_twitter %}
120
- <meta name="twitter:creator" content="{{ seo_author_twitter }}" />
125
+ <meta name="twitter:creator" content="@{{ seo_author_twitter }}" />
121
126
  {% endif %}
122
127
  {% endif %}
123
128
 
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: 1.1.0
4
+ version: 1.2.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-02-20 00:00:00.000000000 Z
11
+ date: 2016-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll