meta-tags-helpers 0.1.4 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +51 -23
- data/VERSION +1 -1
- data/lib/meta_tags_helpers.rb +72 -56
- data/meta-tags-helpers.gemspec +3 -3
- metadata +4 -4
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
# meta
|
1
|
+
# Rails meta tags helpers
|
2
2
|
|
3
|
-
##
|
3
|
+
## Seo and future-proof meta tags for Rails
|
4
4
|
|
5
|
-
|
5
|
+
The `meta-tags-helpers` gem consists of a set of helpers to setup and render html meta tags in a simple way. It has good customizable defaults that also come with built-in support for open-graph and csrf: all your meta tags in a single call.
|
6
6
|
|
7
7
|
### Install
|
8
8
|
|
@@ -12,6 +12,15 @@ gem 'meta-tags-helpers'
|
|
12
12
|
|
13
13
|
### Examples
|
14
14
|
|
15
|
+
You could use the default meta tags (see below) inserting the following snippet of `erb` code in your layout.
|
16
|
+
|
17
|
+
``` erb
|
18
|
+
<%= meta_tags %>
|
19
|
+
```
|
20
|
+
|
21
|
+
if you don't like the defaults you can override them passing other values as a parameter to the `meta_tags` helper.
|
22
|
+
|
23
|
+
|
15
24
|
``` erb
|
16
25
|
<%= meta_tags(
|
17
26
|
:title => "MyBlog - This is a Blog",
|
@@ -24,11 +33,9 @@ gem 'meta-tags-helpers'
|
|
24
33
|
%>
|
25
34
|
```
|
26
35
|
|
27
|
-
|
36
|
+
You can further override these values in your controller, views and partials using the `set_meta` method (see below).
|
28
37
|
|
29
|
-
|
30
|
-
<%= meta_tags %>
|
31
|
-
```
|
38
|
+
**NOTE:** You can set namespaced keys (eg. `og:type`) either as key-value pairs (eg. `:"og:type" => "..."`) or as nested hashes (eg. `:og => {:type => "..."}`), both of the syntaxes would address the same meta tag.
|
32
39
|
|
33
40
|
### What it generates?
|
34
41
|
|
@@ -52,9 +59,31 @@ The first example above will produce the following html:
|
|
52
59
|
|
53
60
|
**NOTE:** namespaced meta (eg. `og:title`) are supposed to be RDF properties and so they are marked using a `property` attribute.
|
54
61
|
|
55
|
-
### Setting meta tags from controller/partials/other views
|
62
|
+
### Setting and overriding meta tags from controller/partials/other views
|
63
|
+
|
64
|
+
You can set any meta tag from controller, partials or views via the `set_meta` method:
|
56
65
|
|
57
|
-
|
66
|
+
``` rhtml
|
67
|
+
<!-- application.html.erb: the global settings -->
|
68
|
+
<%= meta_tags :og => { :type => "website" } %>
|
69
|
+
```
|
70
|
+
|
71
|
+
Override it in a controller:
|
72
|
+
|
73
|
+
``` rb
|
74
|
+
def show
|
75
|
+
set_meta "og:type" => "article"
|
76
|
+
end
|
77
|
+
```
|
78
|
+
In a view:
|
79
|
+
|
80
|
+
``` rhtml
|
81
|
+
<% set_meta "og:type" => "article" %>
|
82
|
+
```
|
83
|
+
|
84
|
+
**NOTE:** `set_meta(:og => { :type => "article" })` is exactly the same of `set_meta(:"og:type" => "article")` so they will both override the current/default `og:type` meta tag.
|
85
|
+
|
86
|
+
You can also customize and read some of defautls (see below) through handy helpers within controllers or views:
|
58
87
|
|
59
88
|
``` rb
|
60
89
|
meta_title(value = nil)
|
@@ -69,24 +98,23 @@ meta_type(value = nil)
|
|
69
98
|
This is the default options hash:
|
70
99
|
|
71
100
|
``` rb
|
72
|
-
default
|
73
|
-
:charset
|
101
|
+
default = {
|
102
|
+
:charset => "utf-8",
|
74
103
|
:"X-UA-Compatible" => "IE=edge,chrome=1",
|
75
|
-
:viewport
|
76
|
-
:
|
77
|
-
:
|
78
|
-
:og
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
:image => (opts[:og] && opts[:og][:image]) || meta_image
|
84
|
-
},
|
85
|
-
:"csrf-param" => request_forgery_protection_token,
|
86
|
-
:"csrf-token" => form_authenticity_token
|
104
|
+
:viewport => "width=device-width",
|
105
|
+
:"og:url" => "#{request.url}",
|
106
|
+
:"og:type" => "article",
|
107
|
+
:"og:title" => opts[:title],
|
108
|
+
:"og:description" => opts[:description],
|
109
|
+
:"og:image" => opts[:"og:image"],
|
110
|
+
:"csrf-param" => request_forgery_protection_token,
|
111
|
+
:"csrf-token" => form_authenticity_token
|
87
112
|
}
|
113
|
+
|
88
114
|
```
|
89
115
|
|
116
|
+
**NOTE:** You should supply at least the `title` and the `description`, using `set_meta` or directly as `meta_tags` argument.
|
117
|
+
|
90
118
|
---
|
91
119
|
|
92
120
|
Copyright (c) 2012 mcasimir
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.7
|
data/lib/meta_tags_helpers.rb
CHANGED
@@ -22,44 +22,26 @@
|
|
22
22
|
|
23
23
|
|
24
24
|
module MetaTagsHelpers
|
25
|
-
|
26
25
|
module ActionViewExtension
|
27
26
|
|
28
|
-
def meta_tags(
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
def meta_tags(opts = {})
|
28
|
+
|
29
|
+
opts = normalize_meta_hash(opts)
|
30
|
+
|
31
|
+
default = {
|
32
|
+
:charset => "utf-8",
|
32
33
|
:"X-UA-Compatible" => "IE=edge,chrome=1",
|
33
|
-
:viewport
|
34
|
-
:
|
35
|
-
:
|
36
|
-
:og
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
:image => (opts[:og] && opts[:og][:image]) || meta_image
|
42
|
-
},
|
43
|
-
:"csrf-param" => request_forgery_protection_token,
|
44
|
-
:"csrf-token" => form_authenticity_token
|
45
|
-
}
|
46
|
-
|
47
|
-
meta_hash = default.deep_merge(opts)
|
48
|
-
|
49
|
-
# separates namespaced keys
|
50
|
-
namespaces = meta_hash.select { |k,v| v.is_a?(Hash) }
|
51
|
-
|
52
|
-
# delete nil/false/namespaced keys
|
53
|
-
meta_hash.delete_if { |k,v| v.blank? || v == false || v.is_a?(Hash)}
|
54
|
-
|
55
|
-
namespaces.each { |ns, namespaced|
|
56
|
-
namespaced.delete_if { |k,v|
|
57
|
-
v.blank? || v == false || v.is_a?(Hash)
|
58
|
-
}
|
59
|
-
namespaced.each {|k,v|
|
60
|
-
meta_hash[:"#{ns}:#{k}"] = v
|
61
|
-
}
|
34
|
+
:viewport => "width=device-width",
|
35
|
+
:"og:url" => "#{request.url}",
|
36
|
+
:"og:type" => "article",
|
37
|
+
:"og:title" => opts[:title],
|
38
|
+
:"og:description" => opts[:description],
|
39
|
+
:"og:image" => opts[:"og:image"],
|
40
|
+
:"csrf-param" => request_forgery_protection_token,
|
41
|
+
:"csrf-token" => form_authenticity_token
|
62
42
|
}
|
43
|
+
|
44
|
+
meta_hash = default.deep_merge(opts).deep_merge(@_meta_tags_hash || {})
|
63
45
|
|
64
46
|
html = ""
|
65
47
|
html << "<title>#{h(meta_hash.delete(:title)) }</title>\n"
|
@@ -73,44 +55,78 @@ module MetaTagsHelpers
|
|
73
55
|
html.html_safe
|
74
56
|
end
|
75
57
|
|
76
|
-
end
|
58
|
+
end #~ ActionViewExtension
|
77
59
|
|
78
60
|
module ActionControllerExtension
|
79
61
|
extend ActiveSupport::Concern
|
80
62
|
included do
|
81
|
-
helper_method :meta_title, :meta_description, :meta_image, :meta_type
|
63
|
+
helper_method :set_meta, :meta_title, :meta_description, :meta_image, :meta_type, :normalize_meta_hash
|
64
|
+
end
|
65
|
+
|
66
|
+
def _meta_tags_hash
|
67
|
+
@_meta_tags_hash ||= {}
|
68
|
+
end
|
69
|
+
|
70
|
+
def set_meta(options)
|
71
|
+
_meta_tags_hash.deep_merge(normalize_meta_hash(options))
|
82
72
|
end
|
83
73
|
|
84
|
-
def meta_title(
|
85
|
-
if
|
86
|
-
@
|
87
|
-
|
88
|
-
@meta_title
|
74
|
+
def meta_title(val = nil)
|
75
|
+
if val
|
76
|
+
@_meta_title = val
|
77
|
+
set_meta(:title => val)
|
89
78
|
end
|
79
|
+
|
80
|
+
@_meta_title
|
90
81
|
end
|
91
82
|
|
92
|
-
def meta_description(
|
93
|
-
if
|
94
|
-
@
|
95
|
-
|
96
|
-
@meta_description
|
83
|
+
def meta_description(val = nil)
|
84
|
+
if val
|
85
|
+
@_meta_description = val
|
86
|
+
set_meta(:description => val)
|
97
87
|
end
|
88
|
+
@_meta_description
|
98
89
|
end
|
99
90
|
|
100
|
-
def meta_image(
|
101
|
-
if
|
102
|
-
@
|
103
|
-
|
104
|
-
@meta_image
|
91
|
+
def meta_image(val = nil)
|
92
|
+
if val
|
93
|
+
@_meta_image = val
|
94
|
+
set_meta(:og => { :image => val })
|
105
95
|
end
|
96
|
+
@_meta_image
|
106
97
|
end
|
107
98
|
|
108
|
-
def meta_type(
|
109
|
-
if
|
110
|
-
@
|
111
|
-
|
112
|
-
@meta_type
|
99
|
+
def meta_type(val = nil)
|
100
|
+
if val
|
101
|
+
@_meta_type = val
|
102
|
+
set_meta(:og => { :type => val })
|
113
103
|
end
|
104
|
+
@_meta_type
|
105
|
+
end
|
106
|
+
|
107
|
+
protected
|
108
|
+
|
109
|
+
def normalize_meta_hash(hash)
|
110
|
+
|
111
|
+
meta_hash = hash.dup
|
112
|
+
|
113
|
+
# separates namespaced keys
|
114
|
+
namespaces = meta_hash.select { |k,v| v.is_a?(Hash) }
|
115
|
+
|
116
|
+
# delete nil/false/namespaced keys
|
117
|
+
meta_hash.delete_if { |k,v| v.blank? || v == false || v.is_a?(Hash)}
|
118
|
+
|
119
|
+
namespaces.each { |ns, namespaced|
|
120
|
+
namespaced.delete_if { |k,v|
|
121
|
+
v.blank? || v == false || v.is_a?(Hash)
|
122
|
+
}
|
123
|
+
namespaced.each {|k,v|
|
124
|
+
meta_hash[:"#{ns}:#{k}"] = v
|
125
|
+
}
|
126
|
+
}
|
127
|
+
|
128
|
+
meta_hash
|
129
|
+
|
114
130
|
end
|
115
131
|
|
116
132
|
end
|
data/meta-tags-helpers.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "meta-tags-helpers"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.7"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["mcasimir"]
|
12
|
-
s.date = "2013-01
|
12
|
+
s.date = "2013-06-01"
|
13
13
|
s.description = "Rails meta tags helpers"
|
14
14
|
s.email = "maurizio.cas@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.homepage = "http://github.com/mcasimir/kaminari-bootstrap"
|
29
29
|
s.licenses = ["MIT"]
|
30
30
|
s.require_paths = ["lib"]
|
31
|
-
s.rubygems_version = "1.8.
|
31
|
+
s.rubygems_version = "1.8.25"
|
32
32
|
s.summary = "Rails meta tags helpers"
|
33
33
|
|
34
34
|
if s.respond_to? :specification_version then
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: meta-tags-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01
|
12
|
+
date: 2013-06-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -89,7 +89,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
89
89
|
version: '0'
|
90
90
|
segments:
|
91
91
|
- 0
|
92
|
-
hash:
|
92
|
+
hash: 2398148642369134804
|
93
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
@@ -98,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
98
|
version: '0'
|
99
99
|
requirements: []
|
100
100
|
rubyforge_project:
|
101
|
-
rubygems_version: 1.8.
|
101
|
+
rubygems_version: 1.8.25
|
102
102
|
signing_key:
|
103
103
|
specification_version: 3
|
104
104
|
summary: Rails meta tags helpers
|