Class: Jekyll::Shopsavvy::DealsTag
- Inherits:
-
Liquid::Tag
- Object
- Liquid::Tag
- Jekyll::Shopsavvy::DealsTag
- Defined in:
- lib/jekyll/shopsavvy/tags.rb
Overview
shopsavvy_deals [category=“…”] [limit=10] [sort=“trending”] [grade=“A”] %
Instance Method Summary collapse
-
#initialize(tag_name, markup, tokens) ⇒ DealsTag
constructor
A new instance of DealsTag.
- #render(context) ⇒ Object
Constructor Details
#initialize(tag_name, markup, tokens) ⇒ DealsTag
Returns a new instance of DealsTag.
115 116 117 118 119 120 121 122 |
# File 'lib/jekyll/shopsavvy/tags.rb', line 115 def initialize(tag_name, markup, tokens) super _positional, named = ArgsParser.parse(markup) @category = named[:category] @limit = (named[:limit] || 10).to_i @sort = named[:sort] || "trending" @grade = named[:grade] end |
Instance Method Details
#render(context) ⇒ Object
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/jekyll/shopsavvy/tags.rb', line 124 def render(context) client = SiteHelpers.client_for(context) return "" unless client deals = client.deals(category: @category, limit: @limit, sort: @sort, grade: @grade) items = deals["data"] || [] body = items.map do |d| %(<a class="shopsavvy-deal" href="#{d["url"] || "https://shopsavvy.com"}" rel="noopener">) + (d["image"] ? %(<img src="#{d["image"]}" alt="#{d["name"]}" loading="lazy" />) : "") + %(<div class="shopsavvy-deal__body"><p class="shopsavvy-deal__name">#{d["name"]}</p>) + %(<p class="shopsavvy-deal__price"><span class="shopsavvy-deal__sale">$#{d["price"]}</span>) + (d["strikethrough"] ? %(<span class="shopsavvy-deal__msrp">$#{d["strikethrough"]}</span>) : "") + %(</p><p class="shopsavvy-deal__retailer">#{d["retailer"]}</p></div></a>) end.join %(<div class="shopsavvy-deals-grid">#{body}</div>) end |