Module: JT::Rails::Meta

Extended by:
ActiveSupport::Concern
Includes:
ActionView::Helpers::TagHelper
Defined in:
lib/jt-rails-meta.rb

Instance Method Summary collapse

Instance Method Details

#add_meta_extra(extra_params, previous_key = nil) ⇒ Object

Add meta other than title, description, keywords Params:

extra_params

hash containing the meta(s) wanted



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/jt-rails-meta.rb', line 124

def add_meta_extra(extra_params, previous_key = nil)
  for key, value in extra_params
    current_key = previous_key ? "#{previous_key}:#{key}" : key

    if value.is_a?(String) || value.is_a?(Symbol)
      @meta[:extra] << { name: current_key, content: value.to_s }
    elsif value.is_a?(Hash)
      add_meta_extra(value, current_key)
    elsif value.is_a?(Array)
      for v in value
        @meta[:extra] << { name: current_key, content: v.to_s }
      end
    end
  end
end

#add_meta_keywords(keywords) ⇒ Object

Add custom keywords to the meta keywords, must be call before ‘set_meta_keywords` Params:

keywords

array of keywords added to the default keywords



111
112
113
114
115
116
117
118
119
# File 'lib/jt-rails-meta.rb', line 111

def add_meta_keywords(keywords)
  if keywords.is_a?(String)
    @meta[:keywords] = keywords
  elsif keywords.is_a?(Array)
    @meta[:keywords] = keywords.join(',')
  end

  set_meta_keywords
end

Add links to meta, used for add ‘canonicalæ or ’publisher’ links



141
142
143
144
# File 'lib/jt-rails-meta.rb', line 141

def add_meta_link(rel, href, options = {})
  options.merge!(rel: rel, href: href)
  @meta[:links] << {options: options}
end


160
161
162
# File 'lib/jt-rails-meta.rb', line 160

def add_meta_link_alternate(url, lang)
  add_meta_link 'alternate', url, hreflang: lang
end


152
153
154
# File 'lib/jt-rails-meta.rb', line 152

def add_meta_link_author(url)
  add_meta_link 'author', url
end

Helpers



148
149
150
# File 'lib/jt-rails-meta.rb', line 148

def add_meta_link_canonical(url)
  add_meta_link 'canonical', url
end


156
157
158
# File 'lib/jt-rails-meta.rb', line 156

def add_meta_link_publisher(url)
  add_meta_link 'publisher', url
end

#meta_descriptionObject

Content of meta description



47
48
49
# File 'lib/jt-rails-meta.rb', line 47

def meta_description
  @meta[:description] ||= set_meta_description
end

#meta_keywordsObject

Content of meta keywords



52
53
54
# File 'lib/jt-rails-meta.rb', line 52

def meta_keywords
  @meta[:keywords] ||= set_meta_keywords
end

#meta_tagsObject

Generate HTML tags title, description, keywords and others meta



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/jt-rails-meta.rb', line 18

def meta_tags
  output = ''

  output << ('title', meta_title)
  output << "\n"
  output << tag('meta', name: 'description', content: meta_description)
  output << "\n"
  output << tag('meta', name: 'keywords', content: meta_keywords)
  output << "\n"

  for link in @meta[:links]
    output << tag('link', link[:options])
    output << "\n"
  end

  for extra_params in @meta[:extra]
    output << tag('meta', name: extra_params[:name], content: extra_params[:content])
    output << "\n"
  end

  output.html_safe
end

#meta_titleObject

Content of meta title



42
43
44
# File 'lib/jt-rails-meta.rb', line 42

def meta_title
  @meta[:title] ||= set_meta_title
end

#meta_title_rawObject

Content of meta title without suffix or prefix



57
58
59
# File 'lib/jt-rails-meta.rb', line 57

def meta_title_raw
  @meta[:title_raw]
end

#set_meta_description(options = {}) ⇒ Object

Generate meta description Use meta.default.description if no meta found for the current controller/action Params:

options

options passed to I18n



84
85
86
87
88
# File 'lib/jt-rails-meta.rb', line 84

def set_meta_description(options = {})
  @meta[:description] = I18n.translate("#{meta_key}.description", options)
  @meta[:description] = I18n.translate('meta.default.description') if !have_translation?(@meta[:description])
  @meta[:description]
end

#set_meta_keywords(options = {}) ⇒ Object

Generate meta keywords Use meta.default.keywords if no meta found for the current controller/action Params:

options

options passed to I18n



94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/jt-rails-meta.rb', line 94

def set_meta_keywords(options = {})
  keywords = I18n.translate("#{meta_key}.keywords", options)
  keywords = I18n.translate('meta.default.keywords') if !have_translation?(keywords)
  keywords = '' if !have_translation?(keywords)

  if @meta[:keywords].blank?
    @meta[:keywords] = keywords
  else
    @meta[:keywords] << ',' << keywords
  end

  @meta[:keywords]
end

#set_meta_title(options = {}) ⇒ Object

Generate meta title Use meta.default.title if no meta found for the current controller/action Params:

options

options passed to I18n



65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/jt-rails-meta.rb', line 65

def set_meta_title(options = {})
  @meta[:title_raw] = I18n.translate("#{meta_key}.title", options)

  if have_translation?(@meta[:title_raw])
    @meta[:title] = "#{@meta[:prefix]}#{@meta[:title_raw]}#{@meta[:suffix]}"
  else
    @meta[:title] = I18n.translate("#{meta_key}.full_title", options)
    @meta[:title] = I18n.translate('meta.default.title') if !have_translation?(@meta[:title])

    @meta[:title_raw] = @meta[:title]
  end
  
  @meta[:title]
end