Module: Cdx::ControllerHelpers::Seo

Extended by:
ActiveSupport::Concern
Included in:
ApplicationController
Defined in:
lib/cdx/controller_helpers/seo.rb

Instance Method Summary collapse

Instance Method Details

#canonical_urlObject



16
17
18
19
# File 'lib/cdx/controller_helpers/seo.rb', line 16

def canonical_url
  # Override this methods in your controllers to get a custom canonical_url
  request.fullpath
end

#contextual_recordObject



21
22
23
24
# File 'lib/cdx/controller_helpers/seo.rb', line 21

def contextual_record
  # Override this methods in your controllers to get seo data from a specific record
  instance_variable_get("@#{controller_name.singularize}") || @object || Setting.current
end

#meta_dataObject



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/cdx/controller_helpers/seo.rb', line 26

def 
  # Override this methods in your controllers to get custom SEO data
  object = contextual_record
  fields = {}

  if object.respond_to? :seo
    fields[:keywords]    = object.meta_keywords || Setting.current.meta_keywords
    fields[:description] = object.meta_description || Setting.current.meta_description
  end
  fields.reject { |k, v| v.blank? }
end

#meta_titleObject



11
12
13
14
# File 'lib/cdx/controller_helpers/seo.rb', line 11

def meta_title
  # Override this methods in your controllers to get a custom title
  contextual_record.meta_title
end

#open_graph_dataObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/cdx/controller_helpers/seo.rb', line 38

def open_graph_data
  # Override this methods in your controllers to get custom OpenGraph data
  object = contextual_record
  fields = {}

  if object.respond_to? :seo
    fields['og:title']       = object.og_title || Setting.current.og_title
    fields['og:description'] = object.og_description || Setting.current.og_description
    fields['og:keywords']    = object.og_keywords || Setting.current.og_keywords
    fields['og:image']       = object.og_image&.attachment&.url(:regular) || Setting.current.og_image&.attachment&.url(:regular)
    fields['og:video']       = object.og_video || Setting.current.og_video
  end
  fields.reject { |k, v| v.blank? }
end