Class: Plum::LiquidRenderer

Inherits:
Object
  • Object
show all
Defined in:
app/services/plum/liquid_renderer.rb

Class Method Summary collapse

Class Method Details

.render_template(template_name, context = {}) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/services/plum/liquid_renderer.rb', line 10

def render_template(template_name, context = {})
  theme = current_theme(context)
  resolver = ThemeResolver.new
  template_path = resolver.find_template(theme, template_name)

  raise "Template not found: #{template_name}" unless template_path

  template_content = File.read(template_path)
  template = Liquid::Template.parse(template_content)
  registers = render_registers(context)

  rendered_content = template.render(context, filters: [ LiquidFilters ], registers: registers)

  layout_path = resolver.find_layout(theme)
  if layout_path
    layout_content = File.read(layout_path)
    layout = Liquid::Template.parse(layout_content)
    layout.render(context.merge("content" => rendered_content), filters: [ LiquidFilters ], registers: registers)
  else
    rendered_content
  end
end