Module: MetaHelper

Includes:
ActionView::Helpers::TagHelper
Defined in:
app/helpers/meta_helper.rb

Constant Summary collapse

META_TAG_SYNONYMS =
{
  'title' => %w[og:title],
  'description' => %w[description og:description]
}.freeze

Instance Method Summary collapse

Instance Method Details

#render_local_meta_tags(record) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/helpers/meta_helper.rb', line 10

def render_local_meta_tags(record)
  return if record.nil?

  dynamic = instance_variable_get('@meta_dynamic')

  rendered = []
  get_actual_meta_tags(record, dynamic).each do |meta_tag|
    tag_name = meta_tag.name.gsub(/_#{I18n.locale}$/, '')
    tag_name = 'og:title' if tag_name == 'title'
    type = tag_name =~ /og:/ ? 'property' : 'name'
    tag_content = render_meta_tag_content(meta_tag, name: tag_name)
    next if tag_content.blank?

    rendered << tag(:meta, content: tag_content, type => tag_name)
    rendered << tag(:meta, property: 'og:description', content: tag_content) if tag_name == 'description'
  end
  rendered.join("\n\s\s")
end

#render_meta_page_description(record = nil, _options = {}) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'app/helpers/meta_helper.rb', line 45

def render_meta_page_description(record = nil, _options = {})
  dynamic = instance_variable_get('@meta_dynamic')

  meta_tags = get_actual_meta_tags(record, dynamic)
  title_tag = meta_tags.detect { |t| t.name == "description_#{I18n.locale}" }
  title_tag ||= meta_tags.detect { |t| t.name == "description_#{I18n.default_locale}" }
  title_tag ||= meta_tags.detect { |t| t.name == 'title' }
  title_tag.reload if title_tag&.changed?
  title_tag ||= MetaTag.new(name: 'title', content: get_page_title(record))

  if controller.respond_to?(:render_meta_tag_content_title, true)
    controller.send(:render_meta_tag_content_title, title_tag)
  end
  strip_tags(title_tag.get_content(self))
end

#render_meta_page_title(record = nil, _options = {}) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'app/helpers/meta_helper.rb', line 29

def render_meta_page_title(record = nil, _options = {})
  dynamic = instance_variable_get('@meta_dynamic')

  meta_tags = get_actual_meta_tags(record, dynamic)
  title_tag = meta_tags.detect { |t| t.name == "title_#{I18n.locale}" }
  title_tag ||= meta_tags.detect { |t| t.name == "title_#{I18n.default_locale}" }
  title_tag ||= meta_tags.detect { |t| t.name == 'title' }
  title_tag.reload if title_tag&.changed?
  title_tag ||= MetaTag.new(name: 'title', content: get_page_title(record))

  if controller.respond_to?(:render_meta_tag_content_title, true)
    controller.send(:render_meta_tag_content_title, title_tag)
  end
  strip_tags(title_tag.get_content(self))
end