class Archangel::Liquid::Tags::WidgetTag
Widget custom tag for Liquid
Example
{% widget "widget-name" %} {% widget 'widget-name' %} {% widget widget-name %}
Attributes
slug[R]
Public Class Methods
new(tag_name, markup, options)
click to toggle source
Widget for Liquid
@param tag_name [String] the Liquid
tag name @param markup [String] the passed options @param options [Object] options
Calls superclass method
# File lib/archangel/liquid/tags/widget_tag.rb, line 22 def initialize(tag_name, markup, options) super match = SLUG_SYNTAX.match(markup) if match.blank? raise ::Liquid::SyntaxError, Archangel.t("errors.syntax.widget") end @slug = ::Liquid::Variable.new(match[:slug], options).name end
Public Instance Methods
render(context)
click to toggle source
Render the Widget
@param context [Object] the Liquid
context @return [String] the rendered Widget
# File lib/archangel/liquid/tags/widget_tag.rb, line 40 def render(context) return if slug.blank? widget = load_widget_for(context["site"].object) return if widget.blank? rendered_widget = render_widget(widget.content, context.environments.first) if widget.design.present? rendered_widget = render_designed_widget(widget.design, rendered_widget) end rendered_widget end
Protected Instance Methods
load_widget_for(site)
click to toggle source
# File lib/archangel/liquid/tags/widget_tag.rb, line 62 def load_widget_for(site) site.widgets.find_by!(slug: slug) rescue StandardError nil end
render_designed_widget(design_content, widget_content)
click to toggle source
# File lib/archangel/liquid/tags/widget_tag.rb, line 72 def render_designed_widget(design_content, widget_content) Archangel::DesignRenderService.call( design_content, content_for_layout: widget_content ) end
render_widget(content, assigns)
click to toggle source
# File lib/archangel/liquid/tags/widget_tag.rb, line 68 def render_widget(content, assigns) Archangel::RenderService.call(content, assigns) end