Rust discount function (one automatic discount evaluating all offers in priority order, parity with the Odoo engine), React Router admin with Polaris, theme app extension and app proxy pages, webhooks incl. GDPR, managed-pricing limits, and a Docker Compose stack (Postgres + Caddy HTTPS) for a single VPS. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
32 lines
1.3 KiB
Plaintext
32 lines
1.3 KiB
Plaintext
{%- comment -%} F12: grid of all running offers (place on any page, e.g. a "Bundles" page). {%- endcomment -%}
|
|
{%- assign data = app.metafields.bundle_offers.storefront.value -%}
|
|
{%- assign country = localization.country.iso_code -%}
|
|
<section class="bo-section" {{ block.shopify_attributes }}>
|
|
{%- if block.settings.heading != blank -%}<h2 class="bo-section__title">{{ block.settings.heading }}</h2>{%- endif -%}
|
|
{%- assign shown = 0 -%}
|
|
<div class="bo-grid">
|
|
{%- for offer in data.offers -%}
|
|
{%- if offer.cc.size > 0 -%}{%- unless offer.cc contains country -%}{%- continue -%}{%- endunless -%}{%- endif -%}
|
|
{%- assign shown = shown | plus: 1 -%}
|
|
{% render 'bo-card', offer: offer %}
|
|
{%- endfor -%}
|
|
</div>
|
|
{%- if shown == 0 -%}
|
|
<div class="bo-empty">
|
|
<p>{{ 'bundle_offers.grid.empty' | t }}</p>
|
|
<a class="bo-button" href="{{ routes.all_products_collection_url }}">{{ 'bundle_offers.grid.continue' | t }}</a>
|
|
</div>
|
|
{%- endif -%}
|
|
{%- if data.brand -%}<p class="bo-powered">Bundles by <a href="https://apps.shopify.com/bundle-offers" rel="nofollow">Bundle Offers</a></p>{%- endif -%}
|
|
</section>
|
|
|
|
{% schema %}
|
|
{
|
|
"name": "Bundles grid",
|
|
"target": "section",
|
|
"settings": [
|
|
{ "type": "text", "id": "heading", "label": "Heading", "default": "Bundle offers" }
|
|
]
|
|
}
|
|
{% endschema %}
|