meta-tags 2.4.1 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,39 +1,27 @@
1
1
  sudo: false
2
2
  cache: bundler
3
3
 
4
- rvm:
5
- - 2.0.0
6
- - 2.1.10
7
- - 2.2.5
8
- - 2.3.1
9
- - 2.4.0
10
-
11
4
  env:
12
- - "RAILS_VERSION=3.2.0"
13
- - "RAILS_VERSION=4.0.0"
14
- - "RAILS_VERSION=4.1.0"
15
- - "RAILS_VERSION=4.2.0"
16
- - "RAILS_VERSION=5.0.0"
17
- - "RAILS_VERSION=5.1.0"
5
+ global:
6
+ - CC_TEST_REPORTER_ID=8792cbc0d1780830ddd3dd7eb1c25f09f386ba8f04449ad830039469406a6ab3
7
+ - GIT_COMMITTED_AT=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then git log -1 --pretty=format:%ct; else git log -1 --skip 1 --pretty=format:%ct; fi)
8
+ matrix:
9
+ - RAILS_VERSION=4.2.9
10
+ - RAILS_VERSION=5.0.5
11
+ - RAILS_VERSION=5.1.3
18
12
 
19
- matrix:
20
- exclude:
21
- - rvm: 2.0.0
22
- env: "RAILS_VERSION=5.0.0"
23
- - rvm: 2.1.10
24
- env: "RAILS_VERSION=5.0.0"
25
- - rvm: 2.0.0
26
- env: "RAILS_VERSION=5.1.0"
27
- - rvm: 2.1.10
28
- env: "RAILS_VERSION=5.1.0"
13
+ rvm:
14
+ - 2.2.7
15
+ - 2.3.4
16
+ - 2.4.1
29
17
 
30
18
  notifications:
31
19
  recipients:
32
20
  - kpumuk@kpumuk.info
33
21
 
34
- addons:
35
- code_climate:
36
- repo_token: "8792cbc0d1780830ddd3dd7eb1c25f09f386ba8f04449ad830039469406a6ab3"
22
+ before_script:
23
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
24
+ - chmod +x ./cc-test-reporter
37
25
 
38
- after_success:
39
- - bundle exec codeclimate-test-reporter
26
+ after_script:
27
+ - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT --coverage-input-type clover || true; fi
@@ -1,9 +1,17 @@
1
- ## 2.4.1 (May 15, 2017)
1
+ ## 2.5.0 (August 23, 2017) [☰](https://github.com/kpumuk/meta-tags/compare/v2.4.1...v2.5.0)
2
+
3
+ Features:
4
+ - Fully support [Open Graph objects](https://developers.facebook.com/docs/reference/opengraph) meta tags.
5
+
6
+ Changes:
7
+ - Dropped official support for Rails older than 4.2 and Ruby older than 2.2 (both reached their End of Life)
8
+
9
+ ## 2.4.1 (May 15, 2017) [☰](https://github.com/kpumuk/meta-tags/compare/v2.4.0...v2.4.1)
2
10
 
3
11
  Features:
4
12
  - Rails 5.1 support added
5
13
 
6
- ## 2.4.0 (December 8, 2016)
14
+ ## 2.4.0 (December 8, 2016) [☰](https://github.com/kpumuk/meta-tags/compare/v2.3.1...v2.4.0)
7
15
 
8
16
  Features:
9
17
  - Added amphtml links support
@@ -11,7 +19,7 @@ Features:
11
19
  Bugfixes:
12
20
  - Fixed `place` attribute meta tag generation
13
21
 
14
- ## 2.3.1 (September 13, 2016)
22
+ ## 2.3.1 (September 13, 2016) [☰](https://github.com/kpumuk/meta-tags/compare/v2.2.0...v2.3.1)
15
23
 
16
24
  Changes:
17
25
  - Added follow meta tag support
@@ -21,7 +29,7 @@ Features:
21
29
 
22
30
  Bugfixes:
23
31
 
24
- ## 2.2.0 (August 24, 2016)
32
+ ## 2.2.0 (August 24, 2016) [☰](https://github.com/kpumuk/meta-tags/compare/v2.1.0...v2.2.0)
25
33
 
26
34
  Changes:
27
35
 
@@ -40,7 +48,7 @@ Bugfixes:
40
48
  - Fixed the issue when title was truncated in some cases, when site_title was blank
41
49
  - Fixed meta tag attributes for `fb:` meta tags
42
50
 
43
- ## 2.1.0 (October 6, 2015)
51
+ ## 2.1.0 (October 6, 2015) [☰](https://github.com/kpumuk/meta-tags/compare/v2.0.0...v2.1.0)
44
52
 
45
53
  Changes:
46
54
 
@@ -58,7 +66,7 @@ Bugfixes
58
66
  - Generate `<meta name=""/>` instead of `<meta property=""/>` for custom meta tags
59
67
  - Double HTML escaping in meta tags
60
68
 
61
- ## 2.0.0 (April 15, 2014)
69
+ ## 2.0.0 (April 15, 2014) [☰](https://github.com/kpumuk/meta-tags/compare/v1.6.0...v2.0.0)
62
70
 
63
71
  Features:
64
72
 
@@ -68,7 +76,7 @@ Bugfixes:
68
76
 
69
77
  - Symlink references in nested hashes include use normalized meta tag values.
70
78
 
71
- ## 1.6.0 (April 14, 2014)
79
+ ## 1.6.0 (April 14, 2014) [☰](https://github.com/kpumuk/meta-tags/compare/v1.5.0...v1.6.0)
72
80
 
73
81
  Features:
74
82
 
@@ -80,26 +88,26 @@ Breaking changes:
80
88
 
81
89
  - Removed support of Rails older than 3.0.0 due to the bug in `Hash#deep_merge` (does not support `HashWithIndifferentAccess`)
82
90
 
83
- ## 1.5.0 (May 7, 2013)
91
+ ## 1.5.0 (May 7, 2013) [☰](https://github.com/kpumuk/meta-tags/compare/v1.4.1...v1.5.0)
84
92
 
85
93
  Features:
86
94
 
87
95
  - Added "prev" and "next" links support
88
96
  - Added refresh meta tag support
89
97
 
90
- ## 1.4.1 (March 14, 2013)
98
+ ## 1.4.1 (March 14, 2013) [☰](https://github.com/kpumuk/meta-tags/compare/v1.4.0...v1.4.1)
91
99
 
92
100
  Bugfixes:
93
101
 
94
102
  - Added support for Hash inside of an Array
95
103
 
96
- ## 1.4.0 (March 14, 2013)
104
+ ## 1.4.0 (March 14, 2013) [☰](https://github.com/kpumuk/meta-tags/compare/v1.3.0...v1.4.0)
97
105
 
98
106
  Features:
99
107
 
100
108
  - Added support of custom meta tags
101
109
 
102
- ## 1.3.0 (February 13, 2013)
110
+ ## 1.3.0 (February 13, 2013) [☰](https://github.com/kpumuk/meta-tags/compare/v1.2.6...v1.3.0)
103
111
 
104
112
  Features:
105
113
 
@@ -112,13 +120,13 @@ Bugfixes:
112
120
  - Do not display title HTML tag when title is blank
113
121
  - Do not display OpenGraph tags when content is empty
114
122
 
115
- ## 1.2.6 (March 4, 2012)
123
+ ## 1.2.6 (March 4, 2012) [☰](https://github.com/kpumuk/meta-tags/compare/v1.2.5...v1.2.6)
116
124
 
117
125
  Features:
118
126
 
119
127
  - jQuery.pjax support via `display_title` method. Check README for details
120
128
 
121
- ## 1.2.5 (March 3, 2012)
129
+ ## 1.2.5 (March 3, 2012) [☰](https://github.com/kpumuk/meta-tags/compare/v1.2.4...v1.2.5)
122
130
 
123
131
  Bugfixes:
124
132
 
@@ -126,7 +134,7 @@ Bugfixes:
126
134
  - Fixed incorrect page title when `:site` is is blank
127
135
  - Normalize `:og` attribute to `:open_graph`
128
136
 
129
- ## 1.2.4 (April 26, 2011)
137
+ ## 1.2.4 (April 26, 2011) [☰](https://github.com/kpumuk/meta-tags/compare/v1.2.3...v1.2.4)
130
138
 
131
139
  Features:
132
140
 
@@ -137,34 +145,34 @@ Bugfixes:
137
145
  - Fixed bug with double HTML escaping in title separator
138
146
  - Allow to set meta title without a separator
139
147
 
140
- ## 1.2.2, 1.2.3 (June 10, 2010)
148
+ ## 1.2.2, 1.2.3 (June 10, 2010) [☰](https://github.com/kpumuk/meta-tags/compare/v1.2.1...v1.2.3)
141
149
 
142
150
  Bugfixes:
143
151
 
144
152
  - Fixed action\_pack integration (welcome back `alias_method_chain`)
145
153
  - Fixed bug when `@page_*` variables did not work
146
154
 
147
- ## 1.2.1 (June 2, 2010)
155
+ ## 1.2.1 (June 2, 2010) [☰](https://github.com/kpumuk/meta-tags/compare/v1.2.0...v1.2.1)
148
156
 
149
157
  Bugfixes:
150
158
 
151
159
  - Fixed deprecation warning about `html_safe!`
152
160
 
153
- ## 1.2.0 (May 31, 2010)
161
+ ## 1.2.0 (May 31, 2010) [☰](https://github.com/kpumuk/meta-tags/compare/v1.1.1...v1.2.0)
154
162
 
155
163
  Bugfixes:
156
164
 
157
165
  - Fixed bug when title is set through Array, and `:lowercase` is true
158
166
  - Updated `display_meta_tags` to be compatible with rails_xss
159
167
 
160
- ## 1.1.1 (November 21, 2009)
168
+ ## 1.1.1 (November 21, 2009) [☰](https://github.com/kpumuk/meta-tags/compare/v1.1.0...v1.1.1)
161
169
 
162
170
  Features:
163
171
 
164
172
  - Added support for canonical link element
165
173
  - Added YARD documentation
166
174
 
167
- ## 1.1.0 (November 5, 2009)
175
+ ## 1.1.0 (November 5, 2009) [☰](https://github.com/kpumuk/meta-tags/commits/v1.1.0)
168
176
 
169
177
  Features:
170
178
 
data/Gemfile CHANGED
@@ -13,5 +13,4 @@ end
13
13
 
14
14
  group :test do
15
15
  gem 'simplecov'
16
- gem 'codeclimate-test-reporter', '~> 1.0.0'
17
16
  end
data/README.md CHANGED
@@ -9,10 +9,13 @@ Search Engine Optimization (SEO) plugin for Ruby on Rails applications.
9
9
 
10
10
  ## Ruby on Rails
11
11
 
12
- MetaTags master branch now fully supports Rails 3.2+, and is tested against all
12
+ MetaTags master branch fully supports Ruby on Rails 4.2+, and is tested against all
13
13
  major Rails releases up to 5.1.
14
14
 
15
- Ruby versions older than 2.0.0 are no longer officially supported.
15
+ Ruby versions older than 2.2.0 are no longer officially supported.
16
+
17
+ _Please note_ that we are no longer support Ruby versions older than 2.2.0 and
18
+ Ruby on Rails older than 4.2, because they [reached their End of Life](https://github.com/kpumuk/meta-tags/pull/143).
16
19
 
17
20
  ## Installation
18
21
 
@@ -33,13 +36,241 @@ preferences. In order to do that, you can create an initializer
33
36
 
34
37
  ```ruby
35
38
  MetaTags.configure do |c|
36
- c.title_limit = 70
37
- c.description_limit = 160
38
- c.keywords_limit = 255
39
- c.keywords_separator = ', '
39
+ c.title_limit = 70
40
+ c.description_limit = 160
41
+ c.keywords_limit = 255
42
+ c.keywords_separator = ', '
43
+ c.property_tags.push(
44
+ 'x-hearthstone:deck',
45
+ )
40
46
  end
41
47
  ```
42
48
 
49
+ By default meta tags are rendered with the key `name`. Since, some meta tags are
50
+ required to use `property` instead (like Facebook Open Graph object), MetaTags gem
51
+ allows to configure which tags to render with `property` attribute. By default
52
+ the pre-configured list includes all possible Facebook Open Graph object types, but
53
+ you can add your own in case you need it.
54
+
55
+ **Please note**: Use `c.property_tags.push` instead of `c.property_tags =`, so you
56
+ do not reset the list of default tags, which would lead to invalid Open Graph
57
+ meta tags.
58
+
59
+ ## MetaTags Usage
60
+
61
+ First, add this code to your main layout:
62
+
63
+ ```erb
64
+ <head>
65
+ <%= display_meta_tags site: 'My website' %>
66
+ </head>
67
+ ```
68
+
69
+ Then, to set the page title, add this to each of your views (see below for other options):
70
+
71
+ ```erb
72
+ <h1><%= title 'My page title' %></h1>
73
+ ```
74
+
75
+ When views are rendered, the page title will be included in the right spots:
76
+
77
+ ```html
78
+ <head>
79
+ <title>My website | My page title</title>
80
+ </head>
81
+ <body>
82
+ <h1>My page title</h1>
83
+ </body>
84
+ ```
85
+
86
+ You can find allowed options for `display_meta_tags` method below.
87
+
88
+ ### Using MetaTags in controller
89
+
90
+ You can define following instance variables:
91
+
92
+ ```ruby
93
+ @page_title = 'Member Login'
94
+ @page_description = 'Member login page.'
95
+ @page_keywords = 'Site, Login, Members'
96
+ ```
97
+
98
+ Also you could use `set_meta_tags` method to define all meta tags simultaneously:
99
+
100
+ ```ruby
101
+ set_meta_tags title: 'Member Login',
102
+ description: 'Member login page.',
103
+ keywords: 'Site, Login, Members'
104
+ ```
105
+
106
+ You can find allowed options for `set_meta_tags` method below.
107
+
108
+ ### Using MetaTags in view
109
+
110
+ To set meta tags you can use following methods:
111
+
112
+ ```erb
113
+ <% title 'Member Login' %>
114
+ <% description 'Member login page.' %>
115
+ <% keywords 'Member login page.' %>
116
+ <% nofollow %>
117
+ <% noindex %>
118
+ <% refresh 3 %>
119
+ ```
120
+
121
+ Also there is `set_meta_tags` method exists:
122
+
123
+ ```erb
124
+ <% set_meta_tags title: 'Member Login',
125
+ description: 'Member login page.',
126
+ keywords: 'Site, Login, Members' %>
127
+ ```
128
+
129
+ The `title` method returns title itself, so you can use it to show the title
130
+ somewhere on the page:
131
+
132
+ ```erb
133
+ <h1><%= title 'Member Login' %></h1>
134
+ ```
135
+
136
+ If you want to set the title and display another text, use this:
137
+
138
+ ```erb
139
+ <h1><%= title 'Member Login', 'Here you can login to the site:' %></h1>
140
+ ```
141
+
142
+ ### Allowed options for `display_meta_tags` and `set_meta_tags` methods
143
+
144
+ Use these options to customize the title format:
145
+
146
+ * `:site` — site title;
147
+ * `:title` — page title;
148
+ * `:description` — page description;
149
+ * `:keywords` — page keywords;
150
+ * `:charset` — page character set;
151
+ * `:prefix` — text between site name and separator;
152
+ * `:separator` — text used to separate website name from page title;
153
+ * `:suffix` — text between separator and page title;
154
+ * `:lowercase` — when true, the page name will be lowercase;
155
+ * `:reverse` — when true, the page and site names will be reversed;
156
+ * `:noindex` — add noindex meta tag; when true, 'robots' will be used, otherwise the string will be used;
157
+ * `:nofollow` — add nofollow meta tag; when true, 'robots' will be used, otherwise the string will be used;
158
+ * `:follow` – add follow meta tag; when true, 'robots' will be used, otherwise the string will be used;
159
+ * `:canonical` — add canonical link tag;
160
+ * `:author` — add author link tag;
161
+ * `:publisher` — add publisher link tag;
162
+ * `:prev` — add prev link tag;
163
+ * `:next` — add next link tag;
164
+ * `:image_src` — add image_src link tag;
165
+ * `:og` — add Open Graph tags (Hash);
166
+ * `:twitter` — add Twitter tags (Hash);
167
+ * `:refresh` — refresh interval and optionally url to redirect to.
168
+
169
+ And here are a few examples to give you ideas.
170
+
171
+ ```erb
172
+ <%= display_meta_tags separator: "&mdash;".html_safe %>
173
+ <%= display_meta_tags prefix: false, separator: ":" %>
174
+ <%= display_meta_tags lowercase: true %>
175
+ <%= display_meta_tags reverse: true, prefix: false %>
176
+ <%= display_meta_tags og: { title: 'The Rock', type: 'video.movie' } %>
177
+ <%= display_meta_tags alternate: { 'zh-Hant' => 'http://example.com.tw/base/url' } %>
178
+ ```
179
+
180
+ ### Allowed values
181
+
182
+ You can specify `:title` as a string or array:
183
+
184
+ ```ruby
185
+ set_meta_tags title: ['part1', 'part2'], site: 'site'
186
+ # site | part1 | part2
187
+ set_meta_tags title: ['part1', 'part2'], reverse: true, site: 'site'
188
+ # part2 | part1 | site
189
+ ```
190
+
191
+ Keywords can be passed as string of comma-separated values, or as an array:
192
+
193
+ ```ruby
194
+ set_meta_tags keywords: ['tag1', 'tag2']
195
+ # tag1, tag2
196
+ ```
197
+
198
+ Description is a string (HTML will be stripped from output string).
199
+
200
+ ### Mirrored values
201
+
202
+ Sometimes, it is desirable to mirror meta tag values down into namespaces. A
203
+ common use case is when you want open graph's `og:title` to be identical to
204
+ the `title`.
205
+
206
+ Say, you have the following in your application layout:
207
+
208
+ ```ruby
209
+ display_meta_tags og: {
210
+ title: :title
211
+ }
212
+ ```
213
+
214
+ The value of `og[:title]` is a symbol and therefore references the value of the
215
+ top level `title` meta tag. With the following in any view:
216
+
217
+ ```ruby
218
+ title 'my great view'
219
+ ```
220
+
221
+ You get this open graph meta tag for free:
222
+
223
+ ```html
224
+ <meta property="og:title" content="my great view"></meta>
225
+ ```
226
+
227
+ ### Using with Turbolinks
228
+
229
+ [Turbolinks](https://github.com/turbolinks/turbolinks) is a simple solution for getting
230
+ the performance benefits of a single-page application without the added complexity of a
231
+ client-side JavaScript framework. MetaTags supports Turbolinks out of the box, no
232
+ configuration is necessary.
233
+
234
+ ### Using with pjax
235
+
236
+ [jQuery.pjax](https://github.com/defunkt/jquery-pjax) is a nice solution for navigation
237
+ without full page reload. The main difference is that layout file will not be rendered,
238
+ so page title will not change. To fix this, when using a page fragment, pjax will check
239
+ the fragment DOM element for a `title` or `data-title` attribute and use any value it finds.
240
+
241
+ MetaTags simplifies this with `display_title` method, which returns fully resolved
242
+ page title (include site, prefix/suffix, etc.) But in this case you will have to
243
+ set default parameters (e.g, `:site`) both in layout file and in your views. To minimize
244
+ code duplication, you can define a helper in `application_helper.rb`:
245
+
246
+ ```ruby
247
+ def default_meta_tags
248
+ {
249
+ title: 'Member Login',
250
+ description: 'Member login page.',
251
+ keywords: 'Site, Login, Members',
252
+ separator: "&mdash;".html_safe,
253
+ }
254
+ end
255
+ ```
256
+
257
+ Then in your layout file use:
258
+
259
+ ```erb
260
+ <%= display_meta_tags(default_meta_tags) %>
261
+ ```
262
+
263
+ And in your pjax templates:
264
+
265
+ ```erb
266
+ <!-- set title here, so we can use it both in "display_title" and in "title" -->
267
+ <% title "My Page title" %>
268
+ <%= content_tag :div, data: { title: display_title(default_meta_tags) } do %>
269
+ <h1><%= title %></h1>
270
+ <!-- HTML goes here -->
271
+ <% end %>
272
+ ```
273
+
43
274
  ## SEO Basics and MetaTags
44
275
 
45
276
  ### Titles
@@ -499,214 +730,6 @@ set_meta_tags author: [ "Dmytro Shteflyuk", "John Doe" ]
499
730
  # <meta name="author" content="John Doe"/>
500
731
  ```
501
732
 
502
- ## MetaTags Usage
503
-
504
- First, add this code to your main layout:
505
-
506
- ```erb
507
- <head>
508
- <%= display_meta_tags site: 'My website' %>
509
- </head>
510
- ```
511
-
512
- Then, to set the page title, add this to each of your views (see below for other options):
513
-
514
- ```erb
515
- <h1><%= title 'My page title' %></h1>
516
- ```
517
-
518
- When views are rendered, the page title will be included in the right spots:
519
-
520
- ```html
521
- <head>
522
- <title>My website | My page title</title>
523
- </head>
524
- <body>
525
- <h1>My page title</h1>
526
- </body>
527
- ```
528
-
529
- You can find allowed options for `display_meta_tags` method below.
530
-
531
- ### Using MetaTags in controller
532
-
533
- You can define following instance variables:
534
-
535
- ```ruby
536
- @page_title = 'Member Login'
537
- @page_description = 'Member login page.'
538
- @page_keywords = 'Site, Login, Members'
539
- ```
540
-
541
- Also you could use `set_meta_tags` method to define all meta tags simultaneously:
542
-
543
- ```ruby
544
- set_meta_tags title: 'Member Login',
545
- description: 'Member login page.',
546
- keywords: 'Site, Login, Members'
547
- ```
548
-
549
- You can find allowed options for `set_meta_tags` method below.
550
-
551
- ### Using MetaTags in view
552
-
553
- To set meta tags you can use following methods:
554
-
555
- ```erb
556
- <% title 'Member Login' %>
557
- <% description 'Member login page.' %>
558
- <% keywords 'Member login page.' %>
559
- <% nofollow %>
560
- <% noindex %>
561
- <% refresh 3 %>
562
- ```
563
-
564
- Also there is `set_meta_tags` method exists:
565
-
566
- ```erb
567
- <% set_meta_tags title: 'Member Login',
568
- description: 'Member login page.',
569
- keywords: 'Site, Login, Members' %>
570
- ```
571
-
572
- The `title` method returns title itself, so you can use it to show the title
573
- somewhere on the page:
574
-
575
- ```erb
576
- <h1><%= title 'Member Login' %></h1>
577
- ```
578
-
579
- If you want to set the title and display another text, use this:
580
-
581
- ```erb
582
- <h1><%= title 'Member Login', 'Here you can login to the site:' %></h1>
583
- ```
584
-
585
- ### Allowed options for `display_meta_tags` and `set_meta_tags` methods
586
-
587
- Use these options to customize the title format:
588
-
589
- * `:site` — site title;
590
- * `:title` — page title;
591
- * `:description` — page description;
592
- * `:keywords` — page keywords;
593
- * `:charset` — page character set;
594
- * `:prefix` — text between site name and separator;
595
- * `:separator` — text used to separate website name from page title;
596
- * `:suffix` — text between separator and page title;
597
- * `:lowercase` — when true, the page name will be lowercase;
598
- * `:reverse` — when true, the page and site names will be reversed;
599
- * `:noindex` — add noindex meta tag; when true, 'robots' will be used, otherwise the string will be used;
600
- * `:nofollow` — add nofollow meta tag; when true, 'robots' will be used, otherwise the string will be used;
601
- * `:follow` – add follow meta tag; when true, 'robots' will be used, otherwise the string will be used;
602
- * `:canonical` — add canonical link tag;
603
- * `:author` — add author link tag;
604
- * `:publisher` — add publisher link tag;
605
- * `:prev` — add prev link tag;
606
- * `:next` — add next link tag;
607
- * `:image_src` — add image_src link tag;
608
- * `:og` — add Open Graph tags (Hash);
609
- * `:twitter` — add Twitter tags (Hash);
610
- * `:refresh` — refresh interval and optionally url to redirect to.
611
-
612
- And here are a few examples to give you ideas.
613
-
614
- ```erb
615
- <%= display_meta_tags separator: "&mdash;".html_safe %>
616
- <%= display_meta_tags prefix: false, separator: ":" %>
617
- <%= display_meta_tags lowercase: true %>
618
- <%= display_meta_tags reverse: true, prefix: false %>
619
- <%= display_meta_tags og: { title: 'The Rock', type: 'video.movie' } %>
620
- <%= display_meta_tags alternate: { 'zh-Hant' => 'http://example.com.tw/base/url' } %>
621
- ```
622
-
623
- ### Allowed values
624
-
625
- You can specify `:title` as a string or array:
626
-
627
- ```ruby
628
- set_meta_tags title: ['part1', 'part2'], site: 'site'
629
- # site | part1 | part2
630
- set_meta_tags title: ['part1', 'part2'], reverse: true, site: 'site'
631
- # part2 | part1 | site
632
- ```
633
-
634
- Keywords can be passed as string of comma-separated values, or as an array:
635
-
636
- ```ruby
637
- set_meta_tags keywords: ['tag1', 'tag2']
638
- # tag1, tag2
639
- ```
640
-
641
- Description is a string (HTML will be stripped from output string).
642
-
643
- ### Mirrored values
644
-
645
- Sometimes, it is desirable to mirror meta tag values down into namespaces. A
646
- common use case is when you want open graph's `og:title` to be identical to
647
- the `title`.
648
-
649
- Say, you have the following in your application layout:
650
-
651
- ```ruby
652
- display_meta_tags og: {
653
- title: :title
654
- }
655
- ```
656
-
657
- The value of `og[:title]` is a symbol and therefore references the value of the
658
- top level `title` meta tag. With the following in any view:
659
-
660
- ```ruby
661
- title 'my great view'
662
- ```
663
-
664
- You get this open graph meta tag for free:
665
-
666
- ```html
667
- <meta property="og:title" content="my great view"></meta>
668
- ```
669
-
670
- ### Using with pjax
671
-
672
- [jQuery.pjax](https://github.com/defunkt/jquery-pjax) is a nice solution for navigation
673
- without full page reload. The main difference is that layout file will not be rendered,
674
- so page title will not change. To fix this, when using a page fragment, pjax will check
675
- the fragment DOM element for a `title` or `data-title` attribute and use any value it finds.
676
-
677
- MetaTags simplifies this with `display_title` method, which returns fully resolved
678
- page title (include site, prefix/suffix, etc.) But in this case you will have to
679
- set default parameters (e.g, `:site`) both in layout file and in your views. To minimize
680
- code duplication, you can define a helper in `application_helper.rb`:
681
-
682
- ```ruby
683
- def default_meta_tags
684
- {
685
- title: 'Member Login',
686
- description: 'Member login page.',
687
- keywords: 'Site, Login, Members',
688
- separator: "&mdash;".html_safe,
689
- }
690
- end
691
- ```
692
-
693
- Then in your layout file use:
694
-
695
- ```erb
696
- <%= display_meta_tags(default_meta_tags) %>
697
- ```
698
-
699
- And in your pjax templates:
700
-
701
- ```erb
702
- <!-- set title here, so we can use it both in "display_title" and in "title" -->
703
- <% title "My Page title" %>
704
- <%= content_tag :div, data: { title: display_title(default_meta_tags) } do %>
705
- <h1><%= title %></h1>
706
- <!-- HTML goes here -->
707
- <% end %>
708
- ```
709
-
710
733
  ## Author
711
734
 
712
735
  [Dmytro Shteflyuk](https://github.com/kpumuk), [https://kpumuk.info](http://kpumuk.info/)