Module: BetterSeo::Rails::Helpers::SeoHelper

Defined in:
lib/better_seo/rails/helpers/seo_helper.rb

Defined Under Namespace

Classes: SeoTagsContext

Instance Method Summary collapse

Instance Method Details

#seo_meta_tags(config = nil, &block) ⇒ Object

Generate meta tags from configuration or block



8
9
10
11
12
13
14
15
16
17
# File 'lib/better_seo/rails/helpers/seo_helper.rb', line 8

def seo_meta_tags(config = nil, &block)
  if block_given?
    builder = BetterSeo::DSL::MetaTags.new
    builder.evaluate(&block)
    config = builder.build
  end

  generator = BetterSeo::Generators::MetaTagsGenerator.new(config || {})
  raw(generator.generate)
end

#seo_open_graph_tags(config = nil, &block) ⇒ Object

Generate Open Graph tags from configuration or block



20
21
22
23
24
25
26
27
28
29
# File 'lib/better_seo/rails/helpers/seo_helper.rb', line 20

def seo_open_graph_tags(config = nil, &block)
  if block_given?
    builder = BetterSeo::DSL::OpenGraph.new
    builder.evaluate(&block)
    config = builder.build
  end

  generator = BetterSeo::Generators::OpenGraphGenerator.new(config || {})
  raw(generator.generate)
end

#seo_tags(config = nil) ⇒ Object

Generate all SEO tags (meta + og + twitter) from configuration or block



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/better_seo/rails/helpers/seo_helper.rb', line 44

def seo_tags(config = nil)
  if block_given?
    context = SeoTagsContext.new
    yield(context)
    config = context.to_h
  end

  config ||= {}

  # Merge with defaults from BetterSeo configuration
  merged_config = build_seo_config(config)

  tags = []

  tags << seo_meta_tags(merged_config[:meta]) if merged_config[:meta]

  if merged_config[:og] && BetterSeo.configuration.open_graph_enabled?
    tags << seo_open_graph_tags(merged_config[:og])
  end

  if merged_config[:twitter] && BetterSeo.configuration.twitter_enabled?
    tags << seo_twitter_tags(merged_config[:twitter])
  end

  raw(tags.compact.join("\n"))
end

#seo_twitter_tags(config = nil, &block) ⇒ Object

Generate Twitter Card tags from configuration or block



32
33
34
35
36
37
38
39
40
41
# File 'lib/better_seo/rails/helpers/seo_helper.rb', line 32

def seo_twitter_tags(config = nil, &block)
  if block_given?
    builder = BetterSeo::DSL::TwitterCards.new
    builder.evaluate(&block)
    config = builder.build
  end

  generator = BetterSeo::Generators::TwitterCardsGenerator.new(config || {})
  raw(generator.generate)
end