Module: Showcase::Traits::Seo::ClassMethods

Defined in:
lib/showcase/traits/seo.rb

Instance Method Summary collapse

Instance Method Details

#default_seo_options(&block) ⇒ Object



12
13
14
15
16
# File 'lib/showcase/traits/seo.rb', line 12

def default_seo_options(&block)
  define_module_method :default_seo_options do
    Helpers::ConfigObject.new(self, &block).to_hash
  end
end

#seo(name = nil, options = {}, &block) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/showcase/traits/seo.rb', line 18

def seo(name = nil, options = {}, &block)
  define_module_method [name, :seo_tags] do |options = {}|
    meta = respond_to?(:default_seo_options) ? default_seo_options : {}
    meta.merge!(Helpers::ConfigObject.new(self, &block).to_hash)
    meta.merge!(options.symbolize_keys) if options

    builder = Helpers::SeoMetaBuilder.new(view_context)
    parts = %w(
      title description site_name
      card_type
      canonical_url
      image_url
      iframe_video_url stream_video_url video_size
    ).map(&:to_sym)

    parts.map do |tag|
      builder.send(tag, meta[tag], meta.except(*parts)) if meta[tag]
    end.compact.join.html_safe
  end
end