Class: Jekyll::StructuredContent::FaqJsonLdTag

Inherits:
Liquid::Tag
  • Object
show all
Defined in:
lib/jekyll/structured_content/faq_json_ld_tag.rb

Instance Method Summary collapse

Instance Method Details

#render(context) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/jekyll/structured_content/faq_json_ld_tag.rb', line 6

def render(context)
  page = context.registers[:page] || {}
  faq_items = page["faq"]

  return "" unless faq_items.is_a?(Array) && faq_items.any?

  entities = faq_items.filter_map do |item|
    question = value_for(item, "question", "title")
    answer = value_for(item, "answer", "description")
    next unless question && answer

    {
      "@type" => "Question",
      "name" => question,
      "acceptedAnswer" => {
        "@type" => "Answer",
        "text" => normalize_text(answer)
      }
    }
  end

  return "" if entities.empty?

  {
    "@context" => "https://schema.org",
    "@type" => "FAQPage",
    "mainEntity" => entities
  }.to_json
end