├── .github
└── workflows
│ ├── preprod.yml
│ ├── production.yml
│ └── staging.yml
├── LICENSE
├── README.md
└── theme
├── assets
├── ajax-loader.gif
├── gift-card.js
├── gift-card.scss
├── ico-select.svg
├── lazysizes.js
├── password.js
├── theme.js
├── theme.scss
└── vendor.js
├── config
├── settings_data.json
└── settings_schema.json
├── layout
├── gift_card.liquid
├── password.liquid
└── theme.liquid
├── locales
├── bg-BG.json
├── cs.json
├── da.json
├── de.json
├── el.json
├── en.default.json
├── es.json
├── fi.json
├── fr.json
├── hi.json
├── hr-HR.json
├── hu.json
├── id.json
├── it.json
├── ja.json
├── ko.json
├── lt-LT.json
├── ms.json
├── nb.json
├── nl.json
├── pl.json
├── pt-BR.json
├── pt-PT.json
├── ro-RO.json
├── ru.json
├── sk-SK.json
├── sl-SI.json
├── sv.json
├── th.json
├── tr.json
├── zh-CN.json
└── zh-TW.json
├── sections
├── article-template.liquid
├── blog-template.liquid
├── cart-template.liquid
├── collection-list.liquid
├── collection-template.liquid
├── collection.liquid
├── custom-content.liquid
├── feature-columns.liquid
├── feature-row.liquid
├── featured-blog.liquid
├── featured-product.liquid
├── footer.liquid
├── header.liquid
├── hero.liquid
├── image-bar.liquid
├── list-collections-template.liquid
├── logo-bar.liquid
├── map.liquid
├── newsletter.liquid
├── password-content.liquid
├── password-footer.liquid
├── password-header.liquid
├── product-recommendations.liquid
├── product-template.liquid
├── quotes.liquid
├── rich-text.liquid
├── slideshow.liquid
└── video.liquid
├── snippets
├── bgset.liquid
├── cart-popup.liquid
├── collection-grid-item.liquid
├── comment.liquid
├── form-status.liquid
├── icon-3d-badge-full-color.liquid
├── icon-arrow-left.liquid
├── icon-arrow-right.liquid
├── icon-cart.liquid
├── icon-chevron-down.liquid
├── icon-chevron-left.liquid
├── icon-chevron-right.liquid
├── icon-close.liquid
├── icon-error.liquid
├── icon-facebook.liquid
├── icon-hamburger.liquid
├── icon-instagram.liquid
├── icon-laser.liquid
├── icon-lock.liquid
├── icon-login.liquid
├── icon-minus.liquid
├── icon-pause.liquid
├── icon-pin.liquid
├── icon-pinterest.liquid
├── icon-play.liquid
├── icon-plus.liquid
├── icon-quote.liquid
├── icon-resume.liquid
├── icon-rss.liquid
├── icon-saletag.liquid
├── icon-search.liquid
├── icon-shopify-logo.liquid
├── icon-snapchat.liquid
├── icon-spinner.liquid
├── icon-tumblr.liquid
├── icon-twitter.liquid
├── icon-video-badge-full-color.liquid
├── icon-vimeo.liquid
├── icon-youtube.liquid
├── image-style.liquid
├── media.liquid
├── no-blocks.liquid
├── pagination.liquid
├── product-card-grid.liquid
├── product-card-list.liquid
├── product-price-listing.liquid
├── product-price.liquid
├── search-drawer.liquid
├── site-nav.liquid
├── social-meta-tags.liquid
└── social-sharing.liquid
└── templates
├── 404.liquid
├── article.liquid
├── blog.liquid
├── cart.liquid
├── collection.liquid
├── customers
├── account.liquid
├── activate_account.liquid
├── addresses.liquid
├── login.liquid
├── order.liquid
├── register.liquid
└── reset_password.liquid
├── gift_card.liquid
├── index.liquid
├── list-collections.liquid
├── page.contact.liquid
├── page.liquid
├── password.liquid
├── product.liquid
└── search.liquid
/.github/workflows/preprod.yml:
--------------------------------------------------------------------------------
1 | name: Deploy Pre-production Theme
2 |
3 | on:
4 | push:
5 | pull_request: null
6 | branches:
7 | - preprod
8 |
9 | jobs:
10 | deploy:
11 | name: Deploy Pre-production Theme
12 | runs-on: ubuntu-latest
13 | steps:
14 | # basically git clone
15 | - uses: actions/checkout@v2
16 | # deploy shopify theme
17 | - uses: pgrimaud/action-shopify@2.1.3
18 | env:
19 | SHOPIFY_PASSWORD: ${{ secrets.SHOPIFY_PRODUCTION_PASSWORD }}
20 | SHOPIFY_STORE_URL: ${{ secrets.SHOPIFY_PRODUCTION_STORE_URL }}
21 | SHOPIFY_THEME_ID: ${{ secrets.SHOPIFY_PREPRODUCTION_THEME_ID }}
22 | THEME_PATH: ${{ secrets.THEME_PATH }}
23 | with:
24 | args: --ignored-file=config/settings_data.json --ignored-file=locales/*
25 |
--------------------------------------------------------------------------------
/.github/workflows/production.yml:
--------------------------------------------------------------------------------
1 | name: Deploy Production Theme
2 |
3 | on:
4 | push:
5 | pull_request: null
6 | branches:
7 | - master
8 |
9 | jobs:
10 | deploy:
11 | name: Deploy Production Theme
12 | runs-on: ubuntu-latest
13 | steps:
14 | # basically git clone
15 | - uses: actions/checkout@v2
16 | # deploy shopify theme
17 | - uses: pgrimaud/action-shopify@2.1.3
18 | env:
19 | SHOPIFY_PASSWORD: ${{ secrets.SHOPIFY_PRODUCTION_PASSWORD }}
20 | SHOPIFY_STORE_URL: ${{ secrets.SHOPIFY_PRODUCTION_STORE_URL }}
21 | SHOPIFY_THEME_ID: ${{ secrets.SHOPIFY_PRODUCTION_THEME_ID }}
22 | THEME_PATH: ${{ secrets.THEME_PATH }}
23 | with:
24 | args: --ignored-file=config/settings_data.json --ignored-file=locales/*
25 |
--------------------------------------------------------------------------------
/.github/workflows/staging.yml:
--------------------------------------------------------------------------------
1 | name: Deploy Staging Theme
2 |
3 | on:
4 | push:
5 | pull_request: null
6 | branches:
7 | - develop
8 |
9 | jobs:
10 | deploy:
11 | name: Deploy Staging Theme
12 | runs-on: ubuntu-latest
13 | steps:
14 | # basically git clone
15 | - uses: actions/checkout@v2
16 | # deploy shopify theme
17 | - uses: pgrimaud/action-shopify@2.1.3
18 | env:
19 | SHOPIFY_PASSWORD: ${{ secrets.SHOPIFY_STAGING_PASSWORD }}
20 | SHOPIFY_STORE_URL: ${{ secrets.SHOPIFY_STAGING_STORE_URL }}
21 | SHOPIFY_THEME_ID: ${{ secrets.SHOPIFY_STAGING_THEME_ID }}
22 | THEME_PATH: ${{ secrets.THEME_PATH }}
23 | with:
24 | args: --ignored-file=config/settings_data.json --ignored-file=locales/*
25 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Freyum
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Shopify Workflow PoC
2 |
3 | This is a Proof of Concept of workflow with different environments using Github and GitHub Actions.
4 |
5 | [Workflow](#workflow)
6 |
7 | [GitHub Actions](#cicd-with-github-actions)
8 |
9 | Pre-requisites :
10 | - GitHub account and repository
11 | - Shopify store of production
12 | - Shopify store of staging (development)
13 |
14 | ## Shopify stores
15 |
16 | We're using 2 stores for our workflow with multiple themes :
17 | - Production store
18 | - Production theme
19 | - Pre-production theme
20 | - Staging store
21 | - Staging theme
22 | - n theme(s) for developers
23 |
24 | ## Branches
25 |
26 | - `master` (for production theme on production environment)
27 | - `preprod` (for pre-production theme on production environment)
28 | - `develop` (for staging theme on development environment)
29 |
30 | ## Philosophy
31 |
32 | Production and staging store have same configuration. But we often have the same content between the two environments.
33 | - In production store, we have all real products and collections.
34 | - In staging store, we have ~10 or less products and one or two collections (for testing).
35 |
36 | ## Workflow
37 |
38 | Workflow is pretty simple, based on GitFlow but with no release branch nor tags.
39 |
40 | `master`, `preprod` and `develop` branches are protected. It's not possible to push directly on them.
41 | The best way is to use pull requests.
42 |
43 | ### Principal
44 |
45 | 1. Create a new branch from `master` (eg. `feature/store-locator`)
46 | - Best practice : prefix branch with `fix/` for a fix or `feature/` for a new feature
47 | 2. Apply commit(s) to this branch
48 | 3. Merge `feature/store-locator` into `develop`
49 | - It will deploy on staging theme, then test your changes
50 | 4. If changes are not good, return to step 2. Otherwise, merge `feature/store-locator` into `preprod`
51 | - It will deploy on pre-production theme, then test your changes
52 | 5. If changes are not good, return to step 2. Otherwise, merge `feature/store-locator` into `master`
53 | - It will deploy on production theme, your changes are now live!
54 |
55 | 
56 |
57 | ### Workflow with multiple branches
58 |
59 | 
60 |
61 | **New branch always start from `master` one, even if the purpose is a new feature or a fix.**
62 |
63 | ## Local development
64 |
65 | We're using Theme Kit for local developers : https://shopify.github.io/themekit/
66 | _We created a template on development store for each developer._
67 |
68 | ## CI/CD with GitHub Actions
69 |
70 | ### Actions
71 |
72 | Workflow files are available [here](https://github.com/freyum/shopify-workflow-poc/tree/master/.github/workflows).
73 | They used the Deploy Shopify theme Actions : https://github.com/marketplace/actions/deploy-shopify-theme
74 |
75 | ### Secrets
76 |
77 | First you have to generate a private app to get an API KEY on Shopify. [Get API Access](https://shopify.github.io/themekit/#get-api-access).
78 |
79 | Then you'll need to provide some secrets :
80 |
81 | * **SHOPIFY_STAGING_PASSWORD**: Your password from your private app previously created.
82 | * **SHOPIFY_STAGING_STORE_URL**: Your development store url. (e.g. `demo-staging.myshopify.com`).
83 | * **SHOPIFY_STAGING_THEME_ID**: Your theme id on your Shopify development Store.
84 |
85 |
86 | * **SHOPIFY_PRODUCTION_PASSWORD**: Your password from your private app previously created.
87 | * **SHOPIFY_PRODUCTION_STORE_URL**: Your production store url. (e.g. `demo.myshopify.com`).
88 | * **SHOPIFY_PREPRODUCTION_THEME_ID**: Your preproduction theme id on your Shopify production Store.
89 | * **SHOPIFY_PRODUCTION_THEME_ID**: Your production theme id on your Shopify production Store.
90 |
91 |
92 | * **THEME_PATH**: Path of your theme on your GitHub repository. If your theme is at the root of your repository, just use `./`.
93 |
94 |
95 | 
96 |
97 | ## License
98 |
99 | The Dockerfile and associated scripts and documentation in this project are released under the [MIT License](LICENSE).
100 |
--------------------------------------------------------------------------------
/theme/assets/ajax-loader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/freyum/shopify-workflow-poc/b8f59726eb316f5c2120b1c347d222b7384317e8/theme/assets/ajax-loader.gif
--------------------------------------------------------------------------------
/theme/assets/gift-card.js:
--------------------------------------------------------------------------------
1 | $(function() {
2 | var config = {
3 | qrCode: '#QrCode',
4 | printButton: '#PrintGiftCard',
5 | giftCardCode: '#GiftCardDigits'
6 | };
7 |
8 | var $qrCode = $(config.qrCode);
9 | // eslint-disable-next-line no-new
10 | new QRCode($qrCode[0], {
11 | text: $qrCode.attr('data-identifier'),
12 | width: 120,
13 | height: 120,
14 | imageAltText: theme.strings.qrImageAlt
15 | });
16 |
17 | $(config.printButton).on('click', function() {
18 | window.print();
19 | });
20 |
21 | $(config.giftCardCode).on('focus', this.select);
22 | });
23 |
--------------------------------------------------------------------------------
/theme/assets/ico-select.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/theme/assets/password.js:
--------------------------------------------------------------------------------
1 | window.Modals = (function() {
2 | function Modal(id, name, options) {
3 | var defaults = {
4 | close: '.js-modal-close',
5 | open: '.js-modal-open-' + name,
6 | openClass: 'modal--is-active'
7 | };
8 |
9 | this.$modal = $('#' + id);
10 |
11 | if (!this.$modal.length) {
12 | return false;
13 | }
14 |
15 | this.nodes = {
16 | $parent: $('html').add('body')
17 | };
18 | this.config = $.extend(defaults, options);
19 | this.modalIsOpen = false;
20 | // eslint-disable-next-line shopify/jquery-dollar-sign-reference
21 | this.$focusOnOpen = this.config.focusOnOpen
22 | ? $(this.config.focusOnOpen)
23 | : this.$modal;
24 | this.init();
25 | }
26 |
27 | Modal.prototype.init = function() {
28 | $(this.config.open).on('click', $.proxy(this.open, this));
29 | this.$modal.find(this.config.close).on('click', $.proxy(this.close, this));
30 | };
31 |
32 | Modal.prototype.open = function(evt) {
33 | // Keep track if modal was opened from a click, or called by another function
34 | var externalCall = false;
35 |
36 | // don't open an opened modal
37 | if (this.modalIsOpen) {
38 | return;
39 | }
40 |
41 | // Prevent following href if link is clicked
42 | if (evt) {
43 | evt.preventDefault();
44 | } else {
45 | externalCall = true;
46 | }
47 |
48 | // Without this, the modal opens, the click event bubbles up to $nodes.page
49 | // which closes the modal.
50 | if (evt && evt.stopPropagation) {
51 | evt.stopPropagation();
52 | // save the source of the click, we'll focus to this on close
53 | this.$activeSource = $(evt.currentTarget);
54 | }
55 |
56 | if (this.modalIsOpen && !externalCall) {
57 | this.close();
58 | }
59 |
60 | this.$modal.addClass(this.config.openClass);
61 | this.nodes.$parent.addClass(this.config.openClass);
62 |
63 | this.modalIsOpen = true;
64 |
65 | // Set focus on modal
66 | slate.a11y.trapFocus({
67 | $container: this.$modal,
68 | $elementToFocus: this.$focusOnOpen,
69 | namespace: 'modal_focus'
70 | });
71 |
72 | this.bindEvents();
73 | };
74 |
75 | Modal.prototype.close = function() {
76 | // don't close a closed modal
77 | if (!this.modalIsOpen) {
78 | return;
79 | }
80 |
81 | // deselect any focused form elements
82 | $(document.activeElement).trigger('blur');
83 |
84 | this.$modal.removeClass(this.config.openClass);
85 | this.nodes.$parent.removeClass(this.config.openClass);
86 |
87 | this.modalIsOpen = false;
88 |
89 | // Remove focus on modal
90 | slate.a11y.removeTrapFocus({
91 | $container: this.$modal,
92 | namespace: 'modal_focus'
93 | });
94 |
95 | this.unbindEvents();
96 | };
97 |
98 | Modal.prototype.bindEvents = function() {
99 | // Pressing escape closes modal
100 | this.nodes.$parent.on(
101 | 'keyup.modal',
102 | $.proxy(function(evt) {
103 | if (evt.keyCode === 27) {
104 | this.close();
105 | }
106 | }, this)
107 | );
108 | };
109 |
110 | Modal.prototype.unbindEvents = function() {
111 | this.nodes.$parent.off('.modal');
112 | };
113 |
114 | return Modal;
115 | })();
116 |
117 |
118 | $(function() {
119 | var selectors = {
120 | loginModal: '#LoginModal',
121 | loginField: '[data-login-field]'
122 | };
123 |
124 | var data = {
125 | formError: 'data-error'
126 | };
127 |
128 | var loginModal = document.querySelector(selectors.loginModal);
129 | var loginField = document.querySelector(selectors.loginField);
130 |
131 | if (!loginModal) {
132 | return;
133 | }
134 |
135 | var passwordModal = new window.Modals('LoginModal', 'login-modal', {
136 | focusOnOpen: '#Password'
137 | });
138 |
139 | // Open modal if errors exist
140 | if (loginField.hasAttribute(data.formError)) {
141 | passwordModal.open();
142 | }
143 | });
144 |
--------------------------------------------------------------------------------
/theme/config/settings_data.json:
--------------------------------------------------------------------------------
1 | {"current":{"sections":{"header":{"type":"header","settings":{}},"hero-1":{"type":"hero","settings":{"hero_size":"large","text_size":"large"}},"feature-row":{"type":"feature-row","settings":{}},"feature-columns":{"type":"feature-columns","blocks":{"feature-columns-0":{"type":"text_block","settings":{}},"feature-columns-1":{"type":"text_block","settings":{}},"feature-columns-2":{"type":"text_block","settings":{}}},"block_order":["feature-columns-0","feature-columns-1","feature-columns-2"],"settings":{"title":""}},"collection":{"type":"collection","settings":{"grid":4}},"hero-2":{"type":"hero","settings":{"text_size":"large"}},"quotes":{"type":"quotes","blocks":{"quotes-0":{"type":"quote","settings":{}},"quotes-1":{"type":"quote","settings":{}},"quotes-2":{"type":"quote","settings":{}}},"block_order":["quotes-0","quotes-1","quotes-2"],"settings":{"title":""}},"image-bar":{"type":"image-bar","blocks":{"image-bar-0":{"type":"image","settings":{}},"image-bar-1":{"type":"image","settings":{}},"image-bar-2":{"type":"image","settings":{}}},"block_order":["image-bar-0","image-bar-1","image-bar-2"],"settings":{}},"footer":{"type":"footer","blocks":{"footer-0":{"type":"link_list","settings":{}},"footer-1":{"type":"newsletter","settings":{}}},"block_order":["footer-0","footer-1"],"settings":{"show_payment_icons":true}}},"content_for_index":["hero-1","feature-row","feature-columns","collection","hero-2","quotes","image-bar"]},"presets":{"Default":{"sections":{"header":{"type":"header","settings":{}},"hero-1":{"type":"hero","settings":{"hero_size":"large","text_size":"large"}},"feature-row":{"type":"feature-row","settings":{}},"feature-columns":{"type":"feature-columns","blocks":{"feature-columns-0":{"type":"text_block","settings":{}},"feature-columns-1":{"type":"text_block","settings":{}},"feature-columns-2":{"type":"text_block","settings":{}}},"block_order":["feature-columns-0","feature-columns-1","feature-columns-2"],"settings":{"title":""}},"collection":{"type":"collection","settings":{"grid":4}},"hero-2":{"type":"hero","settings":{"text_size":"large"}},"quotes":{"type":"quotes","blocks":{"quotes-0":{"type":"quote","settings":{}},"quotes-1":{"type":"quote","settings":{}},"quotes-2":{"type":"quote","settings":{}}},"block_order":["quotes-0","quotes-1","quotes-2"],"settings":{"title":""}},"image-bar":{"type":"image-bar","blocks":{"image-bar-0":{"type":"image","settings":{}},"image-bar-1":{"type":"image","settings":{}},"image-bar-2":{"type":"image","settings":{}}},"block_order":["image-bar-0","image-bar-1","image-bar-2"],"settings":{}},"footer":{"type":"footer","blocks":{"footer-0":{"type":"link_list","settings":{}},"footer-1":{"type":"newsletter","settings":{}}},"block_order":["footer-0","footer-1"],"settings":{"show_payment_icons":true}}},"content_for_index":["hero-1","feature-row","feature-columns","collection","hero-2","quotes","image-bar"]},"Light":{"color_text":"#162950","color_body_text":"#6d6d6d","color_sale_text":"#DA2F0C","color_borders":"#e4e4e4","color_button":"#DA2F0C","color_button_text":"#ffffff","color_small_button_text_border":"#162950","color_text_field":"#ffffff","color_text_field_text":"#162950","color_text_field_border":"#909090","color_image_overlay_text":"#ffffff","color_image_overlay":"#3d3d3d","image_overlay_opacity":40,"color_body_bg":"#f8f8f8","type_header_font":"muli_n6","type_header_base_size":26,"type_base_font":"muli_n4","type_base_size":18,"share_facebook":true,"share_twitter":true,"share_pinterest":true,"social_twitter_link":"","social_facebook_link":"","social_pinterest_link":"","social_instagram_link":"","social_tumblr_link":"","social_snapchat_link":"","social_youtube_link":"","social_vimeo_link":"","favicon":"","checkout_header_image":"","checkout_logo_image":"","checkout_logo_position":"left","checkout_logo_size":"small","checkout_body_background_image":"","checkout_body_background_color":"#ffffff","checkout_input_background_color_mode":"white","checkout_sidebar_background_image":"","checkout_sidebar_background_color":"#e8f3f6","checkout_heading_font":"Roboto","checkout_body_font":"Source Sans Pro","checkout_accent_color":"#1990c6","checkout_button_color":"#23314e","checkout_error_color":"#ff6d6d","sections":{"header":{"type":"header","settings":{"align_logo":"left","logo":"","logo_max_width":135,"main_linklist":"main-menu","message":true,"color_bg":"#162950","color_text":"#ffffff"}},"hero":{"type":"hero","settings":{"alignment":"center","hero_size":"x-large","text_size":"large"}},"slideshow":{"type":"slideshow","blocks":{"slideshow-0":{"type":"image","settings":{"image":"","alignment":"center center"}},"1492095993817":{"type":"image","settings":{"image":"","alignment":"center"}}},"block_order":["slideshow-0","1492095993817"],"settings":{"slideshow_height":"medium","text_size":"medium","autorotate":false,"autorotate_speed":5}},"featured-collections":{"type":"collection","settings":{"grid":3,"rows":1,"show_vendor":true,"show_view_all":true}},"product-template":{"type":"product-template","settings":{"show_quantity_selector":false,"show_variant_labels":true,"show_vendor":false,"show_share_buttons":true,"media_size":"medium","enable_image_zoom":true,"enable_video_looping":false}},"collection-template":{"type":"collection-template","settings":{"layout":"grid","grid":2,"rows":2,"show_collection_image":true,"show_vendor":false,"sort_enable":true,"tags_enable":true}},"1492033809691":{"type":"map","settings":{}},"1492033877875":{"type":"quotes","blocks":{"1492033877875-0":{"type":"quote","settings":{}}},"block_order":["1492033877875-0"],"settings":{}},"1492033924902":{"type":"custom-content","blocks":{"1492033924902-0":{"type":"text","settings":{"width":"100%","alignment":"center","align_text":"center"}}},"block_order":["1492033924902-0"],"settings":{"title":""}},"1492096252560":{"type":"collection-list","blocks":{"1492096252560-0":{"type":"featured_collection","settings":{}},"1492096252560-1":{"type":"featured_collection","settings":{}},"1492096252560-2":{"type":"featured_collection","settings":{}}},"block_order":["1492096252560-0","1492096252560-1","1492096252560-2"],"settings":{"grid":3}},"blog-template":{"type":"blog-template","settings":{"layout":"grid","blog_show_author":true,"blog_show_date":false}},"article-template":{"type":"article-template","settings":{"blog_show_author":true,"blog_show_date":true,"show_share_buttons":true}},"cart-template":{"type":"cart-template","settings":{"cart_notes_enable":false}},"footer":{"type":"footer","blocks":{"link_list":{"type":"link_list","settings":{}},"text":{"type":"text","settings":{}},"newsletter":{"type":"newsletter","settings":{}}},"block_order":["link_list","text","newsletter"],"settings":{"color_footer_bg":"#f8f8f8","color_footer_text":"#6d6d6d"}}},"content_for_index":["hero","featured-collections","slideshow","1492033924902","1492096252560","1492033877875","1492033809691"]}}}
--------------------------------------------------------------------------------
/theme/layout/gift_card.liquid:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | {% if settings.favicon != blank %}
11 |
12 | {% endif %}
13 |
14 | {%- assign formatted_initial_value = gift_card.initial_value | money_without_trailing_zeros: gift_card.currency -%}
15 | {%- assign formatted_initial_value_stripped = formatted_initial_value | strip_html -%}
16 | {{ 'gift_cards.issued.title_html' | t: value: formatted_initial_value_stripped, shop: shop.name }}
17 |
18 |
19 |
20 | {{ 'theme.scss.css' | asset_url | stylesheet_tag }}
21 | {{ 'gift-card.scss.css' | asset_url | stylesheet_tag }}
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
36 |
37 | {{ content_for_header }}
38 |
39 |
40 |
41 | {{ content_for_layout }}
42 |
43 | {{ 'general.accessibility.link_messages.new_window' | t }}
44 | {{ 'general.accessibility.link_messages.external' | t }}
45 | {{ 'general.accessibility.link_messages.new_window_and_external' | t }}
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/theme/layout/password.liquid:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | {% if settings.favicon != blank %}
11 |
12 | {% endif %}
13 |
14 |
15 | {{ shop.name }} – {{ 'general.password_page.opening_soon' | t }}
16 |
17 |
18 | {% if page_description %}
19 |
20 | {% endif %}
21 |
22 | {% include 'social-meta-tags' %}
23 |
24 | {{ 'theme.scss.css' | asset_url | stylesheet_tag }}
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | {{ content_for_header }}
34 |
35 |
36 |
37 |
38 |
47 |
48 |
49 |
50 | {{ content_for_layout }}
51 |
52 |
53 |
54 |
55 |
56 |
57 | {% include 'icon-close' %}
58 | {{ 'general.accessibility.close_modal' | t | json }}
59 |
60 |
61 |
62 |
63 |
66 |
67 |
68 | {% form 'storefront_password', class: 'form-single-field' %}
69 | {%- assign formId = 'PasswordLoginForm' -%}
70 |
71 | {{ 'general.password_page.login_form_password_label' | t }}
72 |
84 |
85 |
86 | {{ 'general.password_page.login_form_submit' | t }}
87 |
88 |
89 |
90 | {%- if form.errors -%}
91 |
92 | {{ 'general.accessibility.error' | t }}
93 | {% include 'icon-error' %}
94 | {{ form.errors.messages['form'] }}
95 |
96 | {%- endif -%}
97 | {% endform %}
98 |
{{ 'general.password_page.admin_link_html' | t }}
99 |
100 |
101 |
102 |
103 |
113 |
114 |
115 |
116 |
--------------------------------------------------------------------------------
/theme/layout/theme.liquid:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | {%- if settings.favicon != blank -%}
11 |
12 | {%- endif -%}
13 |
14 | {%- capture seo_title -%}
15 | {%- if request.page_type == 'search' and search.performed == true -%}
16 | {{ 'general.search.heading' | t: count: search.results_count }}: {{ 'general.search.results_with_count' | t: terms: search.terms, count: search.results_count }}
17 | {%- else -%}
18 | {{ page_title }}
19 | {%- endif -%}
20 | {%- if current_tags -%}
21 | {%- assign meta_tags = current_tags | join: ', ' -%} – {{ 'general.meta.tags' | t: tags: meta_tags -}}
22 | {%- endif -%}
23 | {%- if current_page != 1 -%}
24 | – {{ 'general.meta.page' | t: page: current_page }}
25 | {%- endif -%}
26 | {%- assign escaped_page_title = page_title | escape -%}
27 | {%- unless escaped_page_title contains shop.name -%}
28 | – {{ shop.name }}
29 | {%- endunless -%}
30 | {%- endcapture -%}
31 | {{ seo_title | strip }}
32 |
33 | {%- if page_description -%}
34 |
35 | {%- endif -%}
36 |
37 | {% include 'social-meta-tags' %}
38 |
39 | {{ 'theme.scss.css' | asset_url | stylesheet_tag }}
40 |
41 |
98 |
99 | {%- if request.page_type contains 'customers/' -%}
100 |
101 | {%- endif -%}
102 |
103 |
104 |
105 |
106 |
107 | {{ content_for_header }}
108 |
109 |
110 |
111 |
112 | {{ 'general.accessibility.skip_to_content' | t }}
113 |
114 | {%- if settings.enable_ajax -%}
115 | {% include 'cart-popup' %}
116 | {%- endif -%}
117 |
118 | {% section 'header' %}
119 |
120 |
121 |
122 |
123 | {{ content_for_layout }}
124 |
125 |
126 | {% section 'footer' %}
127 |
128 |
129 | {{- 'sections.slideshow.navigation_instructions' | t -}}
130 |
131 |
132 |
133 |
134 |
135 | {{ 'general.accessibility.refresh_page' | t }}
136 | {{ 'general.accessibility.selection_help' | t }}
137 |
138 |
139 |
140 |
--------------------------------------------------------------------------------
/theme/sections/article-template.liquid:
--------------------------------------------------------------------------------
1 |
13 |
14 |
15 | {{ article.content }}
16 |
17 |
18 | {% if section.settings.show_share_buttons %}
19 | {% include 'social-sharing', share_title: article.title, share_permalink: article.url, share_image: article.image %}
20 | {% endif %}
21 |
22 |
23 |
24 | {% schema %}
25 | {
26 | "name": {
27 | "da": "Opslag",
28 | "de": "Posts",
29 | "en": "Posts",
30 | "es": "Publicaciones",
31 | "fi": "Julkaisut",
32 | "fr": "Articles",
33 | "hi": "पोस्ट",
34 | "it": "Articoli",
35 | "ja": "投稿",
36 | "ko": "게시물",
37 | "nb": "Innlegg",
38 | "nl": "Berichten",
39 | "pt-BR": "Posts",
40 | "pt-PT": "Publicações",
41 | "sv": "Inlägg",
42 | "th": "โพสต์",
43 | "zh-CN": "文章",
44 | "zh-TW": "貼文"
45 | },
46 | "settings": [
47 | {
48 | "type": "checkbox",
49 | "id": "blog_show_author",
50 | "label": {
51 | "da": "Vis forfatter",
52 | "de": "Autor anzeigen",
53 | "en": "Show author",
54 | "es": "Mostrar autor",
55 | "fi": "Näytä tekijä",
56 | "fr": "Afficher l'auteur",
57 | "hi": "लेखक दिखाएं",
58 | "it": "Mostra autore",
59 | "ja": "執筆者を表示する",
60 | "ko": "작성자 표시",
61 | "nb": "Vis forfatter",
62 | "nl": "Auteur weergeven",
63 | "pt-BR": "Exibir autor",
64 | "pt-PT": "Mostrar autor",
65 | "sv": "Visa författare",
66 | "th": "แสดงผู้เขียน",
67 | "zh-CN": "显示作者",
68 | "zh-TW": "顯示作者"
69 | },
70 | "default": true
71 | },
72 | {
73 | "type": "checkbox",
74 | "id": "blog_show_date",
75 | "label": {
76 | "da": "Vis dato",
77 | "de": "Datum anzeigen",
78 | "en": "Show date",
79 | "es": "Mostrar fecha",
80 | "fi": "Näytä päivämäärä",
81 | "fr": "Afficher la date",
82 | "hi": "दिनांक दिखाएं",
83 | "it": "Mostra data",
84 | "ja": "日付を表示する",
85 | "ko": "날짜 표시",
86 | "nb": "Vis dato",
87 | "nl": "Datum weergeven",
88 | "pt-BR": "Exibir data",
89 | "pt-PT": "Mostrar data",
90 | "sv": "Visa datum",
91 | "th": "แสดงวันที่",
92 | "zh-CN": "显示日期",
93 | "zh-TW": "顯示日期"
94 | },
95 | "default": true
96 | },
97 | {
98 | "type": "checkbox",
99 | "id": "show_share_buttons",
100 | "label": {
101 | "da": "Vis knapper til deling på sociale medier",
102 | "de": "Buttons für Social Media anzeigen",
103 | "en": "Show social sharing buttons",
104 | "es": "Mostrar botones para compartir en redes sociales",
105 | "fi": "Näytä sosiaalisen median jakamispainikkeet",
106 | "fr": "Afficher les boutons de partage sur les médias sociaux",
107 | "hi": "सोशल शेयरिंग बटन दिखाएं",
108 | "it": "Mostra i pulsanti per la condivisione sui social",
109 | "ja": "ソーシャルメディアでの共有ボタンを表示する",
110 | "ko": "소셜 공유 버튼 표시",
111 | "nb": "Vis knapper for deling på sosiale medier",
112 | "nl": "Knoppen voor sociaal delen weergeven",
113 | "pt-BR": "Exibir botões de compartilhamento em redes sociais",
114 | "pt-PT": "Mostrar botões de partilha nas redes sociais",
115 | "sv": "Visa knappar för delning i sociala medier",
116 | "th": "แสดงปุ่มสำหรับแชร์ลงโซเชียล",
117 | "zh-CN": "显示社交分享按钮",
118 | "zh-TW": "顯示社群分享按鈕"
119 | },
120 | "default": true
121 | }
122 | ]
123 | }
124 | {% endschema %}
125 |
--------------------------------------------------------------------------------
/theme/sections/collection-list.liquid:
--------------------------------------------------------------------------------
1 |
2 | {% if section.settings.title != blank %}
3 |
6 | {% endif %}
7 |
8 | {% case section.settings.grid %}
9 | {% when 2 %}
10 | {%- assign grid_item_width = 'medium-up--one-half' -%}
11 | {% when 3 %}
12 | {%- assign grid_item_width = 'small--one-half medium-up--one-third' -%}
13 | {% when 4 %}
14 | {%- assign grid_item_width = 'small--one-half medium-up--one-quarter' -%}
15 | {% when 5 %}
16 | {%- assign grid_item_width = 'small--one-half medium-up--one-fifth' -%}
17 | {% endcase %}
18 |
19 |
29 |
30 | {% if section.blocks.size == 0 %}
31 | {% include 'no-blocks' %}
32 | {% endif %}
33 |
34 |
35 |
36 |
37 | {% schema %}
38 | {
39 | "name": {
40 | "da": "Kollektionsliste",
41 | "de": "Kategorien-Liste",
42 | "en": "Collection list",
43 | "es": "Lista de colecciones",
44 | "fi": "Kokoelmaluettelo",
45 | "fr": "Liste des collections",
46 | "hi": "कलेक्शन सूची",
47 | "it": "Elenco delle collezioni",
48 | "ja": "コレクションリスト",
49 | "ko": "컬렉션 목록",
50 | "nb": "Samlingsliste",
51 | "nl": "Collectielijst",
52 | "pt-BR": "Lista de coleções",
53 | "pt-PT": "Lista de coleções",
54 | "sv": "Kollektionslista",
55 | "th": "รายการคอลเลกชัน",
56 | "zh-CN": "产品系列列表",
57 | "zh-TW": "商品系列清單"
58 | },
59 | "class": "index-section",
60 | "max_blocks": 12,
61 | "settings": [
62 | {
63 | "type": "text",
64 | "id": "title",
65 | "label": {
66 | "da": "Overskrift",
67 | "de": "Titel",
68 | "en": "Heading",
69 | "es": "Título",
70 | "fi": "Otsake",
71 | "fr": "En-tête",
72 | "hi": "शीर्षक",
73 | "it": "Heading",
74 | "ja": "見出し",
75 | "ko": "제목",
76 | "nb": "Overskrift",
77 | "nl": "Kop",
78 | "pt-BR": "Título",
79 | "pt-PT": "Título",
80 | "sv": "Rubrik",
81 | "th": "ส่วนหัว",
82 | "zh-CN": "标题",
83 | "zh-TW": "標題"
84 | },
85 | "default": {
86 | "da": "Kollektionsliste",
87 | "de": "Kategorien-Liste",
88 | "en": "Collection list",
89 | "es": "Lista de colecciones",
90 | "fi": "Kokoelmaluettelo",
91 | "fr": "Page de liste des collections",
92 | "hi": "कलेक्शन सूची",
93 | "it": "Elenco delle collezioni",
94 | "ja": "コレクションリスト",
95 | "ko": "컬렉션 목록",
96 | "nb": "Samlingsliste",
97 | "nl": "Collectielijst",
98 | "pt-BR": "Lista de coleções",
99 | "pt-PT": "Lista de coleções",
100 | "sv": "Kollektionslista",
101 | "th": "รายการคอลเลกชัน",
102 | "zh-CN": "产品系列列表",
103 | "zh-TW": "商品系列清單"
104 | }
105 | },
106 | {
107 | "type": "range",
108 | "id": "grid",
109 | "label": {
110 | "da": "Kollektioner pr. række",
111 | "de": "Kategorien per Reihe",
112 | "en": "Collections per row",
113 | "es": "Colecciones por fila",
114 | "fi": "Kokoelmia per rivi",
115 | "fr": "Collections par rangée",
116 | "hi": "प्रति पंक्ति कलेक्शन",
117 | "it": "Collezioni per riga",
118 | "ja": "行あたりのコレクション数",
119 | "ko": "열 별 컬렉션",
120 | "nb": "Samlinger per rad",
121 | "nl": "Collecties per rij",
122 | "pt-BR": "Coleções por linha",
123 | "pt-PT": "Coleções por linha",
124 | "sv": "Produktserier per rad",
125 | "th": "คอลเลกชันต่อแถว",
126 | "zh-CN": "每行产品系列数",
127 | "zh-TW": "每列商品系列數"
128 | },
129 | "min": 2,
130 | "max": 5,
131 | "step": 1,
132 | "default": 3
133 | }
134 | ],
135 | "blocks": [
136 | {
137 | "type": "featured_collection",
138 | "name": {
139 | "da": "Kollektion",
140 | "de": "Kategorie",
141 | "en": "Collection",
142 | "es": "Colección",
143 | "fi": "Kokoelma",
144 | "fr": "Collection",
145 | "hi": "कलेक्शन",
146 | "it": "Collezione",
147 | "ja": "コレクション",
148 | "ko": "컬렉션",
149 | "nb": "Samling",
150 | "nl": "Collectie",
151 | "pt-BR": "Coleção",
152 | "pt-PT": "Coleção",
153 | "sv": "Produktserie",
154 | "th": "คอลเลกชัน",
155 | "zh-CN": "收藏",
156 | "zh-TW": "商品系列"
157 | },
158 | "settings": [
159 | {
160 | "label": {
161 | "da": "Kollektion",
162 | "de": "Kategorie",
163 | "en": "Collection",
164 | "es": "Colección",
165 | "fi": "Kokoelma",
166 | "fr": "Collection",
167 | "hi": "कलेक्शन",
168 | "it": "Collezione",
169 | "ja": "コレクション",
170 | "ko": "컬렉션",
171 | "nb": "Samling",
172 | "nl": "Collectie",
173 | "pt-BR": "Coleção",
174 | "pt-PT": "Coleção",
175 | "sv": "Produktserie",
176 | "th": "คอลเลกชัน",
177 | "zh-CN": "收藏",
178 | "zh-TW": "商品系列"
179 | },
180 | "id": "collection",
181 | "type": "collection"
182 | }
183 | ]
184 | }
185 | ],
186 | "presets": [
187 | {
188 | "name": {
189 | "da": "Kollektionsliste",
190 | "de": "Kategorien-Liste",
191 | "en": "Collection list",
192 | "es": "Lista de colecciones",
193 | "fi": "Kokoelmaluettelo",
194 | "fr": "Page de liste des collections",
195 | "hi": "कलेक्शन सूची",
196 | "it": "Elenco delle collezioni",
197 | "ja": "コレクションリスト",
198 | "ko": "컬렉션 목록",
199 | "nb": "Samlingsliste",
200 | "nl": "Collectielijst",
201 | "pt-BR": "Lista de coleções",
202 | "pt-PT": "Lista de coleções",
203 | "sv": "Kollektionslista",
204 | "th": "รายการคอลเลกชัน",
205 | "zh-CN": "产品系列列表",
206 | "zh-TW": "商品系列清單"
207 | },
208 | "category": {
209 | "da": "Kollektion",
210 | "de": "Kategorie",
211 | "en": "Collection",
212 | "es": "Colección",
213 | "fi": "Kokoelma",
214 | "fr": "Collection",
215 | "hi": "कलेक्शन",
216 | "it": "Collezione",
217 | "ja": "コレクション",
218 | "ko": "컬렉션",
219 | "nb": "Samling",
220 | "nl": "Collectie",
221 | "pt-BR": "Coleção",
222 | "pt-PT": "Coleção",
223 | "sv": "Produktserie",
224 | "th": "คอลเลกชัน",
225 | "zh-CN": "收藏",
226 | "zh-TW": "商品系列"
227 | },
228 | "blocks": [
229 | {
230 | "type": "featured_collection"
231 | },
232 | {
233 | "type": "featured_collection"
234 | },
235 | {
236 | "type": "featured_collection"
237 | }
238 | ]
239 | }
240 | ]
241 | }
242 | {% endschema %}
243 |
--------------------------------------------------------------------------------
/theme/sections/collection.liquid:
--------------------------------------------------------------------------------
1 |
2 | {% if section.settings.title != blank %}
3 |
6 | {% endif %}
7 |
8 | {%- assign collection = collections[section.settings.collection] -%}
9 |
10 | {% case section.settings.grid %}
11 | {% when 2 %}
12 | {%- assign max_height = 530 -%}
13 | {%- assign grid_item_width = 'medium-up--one-half' -%}
14 | {% when 3 %}
15 | {%- assign max_height = 345 -%}
16 | {%- assign grid_item_width = 'small--one-half medium-up--one-third' -%}
17 | {% when 4 %}
18 | {%- assign max_height = 250 -%}
19 | {%- assign grid_item_width = 'small--one-half medium-up--one-quarter' -%}
20 | {% when 5 %}
21 | {%- assign max_height = 195 -%}
22 | {%- assign grid_item_width = 'small--one-half medium-up--one-fifth' -%}
23 | {% endcase %}
24 |
25 | {%- assign product_limit = section.settings.grid | times: section.settings.rows -%}
26 |
27 |
51 |
52 | {% if section.settings.show_view_all %}
53 |
54 |
59 | {% endif %}
60 |
61 |
62 |
63 |
64 |
65 | {% schema %}
66 | {
67 | "name": {
68 | "da": "Udvalgt kollektion",
69 | "de": "Vorgestellte Kategorie",
70 | "en": "Featured collection",
71 | "es": "Colección destacada",
72 | "fi": "Esittelyssä oleva kokoelma",
73 | "fr": "Collection en vedette",
74 | "hi": "फ़ीचर्ड कलेक्शन",
75 | "it": "Collezione in evidenza",
76 | "ja": "特集コレクション",
77 | "ko": "추천 컬렉션",
78 | "nb": "Utvalgt samling",
79 | "nl": "Uitgelichte collectie",
80 | "pt-BR": "Coleção em destaque",
81 | "pt-PT": "Coleção em destaque",
82 | "sv": "Utvald kollektion",
83 | "th": "คอลเลกชันแนะนำ",
84 | "zh-CN": "特色产品系列",
85 | "zh-TW": "精選商品系列"
86 | },
87 | "class": "index-section",
88 | "settings": [
89 | {
90 | "type": "text",
91 | "id": "title",
92 | "label": {
93 | "da": "Overskrift",
94 | "de": "Titel",
95 | "en": "Heading",
96 | "es": "Título",
97 | "fi": "Otsake",
98 | "fr": "En-tête",
99 | "hi": "शीर्षक",
100 | "it": "Heading",
101 | "ja": "見出し",
102 | "ko": "제목",
103 | "nb": "Overskrift",
104 | "nl": "Kop",
105 | "pt-BR": "Título",
106 | "pt-PT": "Título",
107 | "sv": "Rubrik",
108 | "th": "ส่วนหัว",
109 | "zh-CN": "标题",
110 | "zh-TW": "標題"
111 | },
112 | "default": {
113 | "da": "Udvalgt kollektion",
114 | "de": "Vorgestellte Kategorie",
115 | "en": "Featured collection",
116 | "es": "Colección destacada",
117 | "fi": "Esittelyssä oleva kokoelma",
118 | "fr": "Collection en vedette",
119 | "hi": "फ़ीचर्ड कलेक्शन",
120 | "it": "Collezione in evidenza",
121 | "ja": "特集コレクション",
122 | "ko": "추천 컬렉션",
123 | "nb": "Fremhevet samling",
124 | "nl": "Uitgelichte collectie",
125 | "pt-BR": "Coleção em destaque",
126 | "pt-PT": "Coleção em destaque",
127 | "sv": "Utvald kollektion",
128 | "th": "คอลเลกชันแนะนำ",
129 | "zh-CN": "特色产品系列",
130 | "zh-TW": "精選商品系列"
131 | }
132 | },
133 | {
134 | "id": "collection",
135 | "type": "collection",
136 | "label": {
137 | "da": "Kollektion",
138 | "de": "Kategorie",
139 | "en": "Collection",
140 | "es": "Colección",
141 | "fi": "Kokoelma",
142 | "fr": "Collection",
143 | "hi": "कलेक्शन",
144 | "it": "Collezione",
145 | "ja": "コレクション",
146 | "ko": "컬렉션",
147 | "nb": "Samling",
148 | "nl": "Collectie",
149 | "pt-BR": "Coleção",
150 | "pt-PT": "Coleção",
151 | "sv": "Produktserie",
152 | "th": "คอลเลกชัน",
153 | "zh-CN": "收藏",
154 | "zh-TW": "商品系列"
155 | }
156 | },
157 | {
158 | "type": "range",
159 | "id": "grid",
160 | "label": {
161 | "da": "Produkter pr. række",
162 | "de": "Produkte per Reihe",
163 | "en": "Products per row",
164 | "es": "Productos por fila",
165 | "fi": "Tuotteita per rivi",
166 | "fr": "Produits par rangée",
167 | "hi": "प्रति पंक्ति उत्पाद",
168 | "it": "Prodotti per riga",
169 | "ja": "行あたりの商品数",
170 | "ko": "열 별 제품",
171 | "nb": "Produkter per rad",
172 | "nl": "Producten per rij",
173 | "pt-BR": "Produtos por linha",
174 | "pt-PT": "Produtos por linha",
175 | "sv": "Produkter per rad",
176 | "th": "สินค้าต่อแถว",
177 | "zh-CN": "每行产品数",
178 | "zh-TW": "每列產品數"
179 | },
180 | "min": 2,
181 | "max": 5,
182 | "step": 1,
183 | "default": 3
184 | },
185 | {
186 | "type": "range",
187 | "id": "rows",
188 | "label": {
189 | "da": "Rækker",
190 | "de": "Reihen",
191 | "en": "Rows",
192 | "es": "Filas",
193 | "fi": "Rivit",
194 | "fr": "Rangées",
195 | "hi": "पंक्ति",
196 | "it": "Righe",
197 | "ja": "行",
198 | "ko": "열",
199 | "nb": "Rader",
200 | "nl": "Rijen",
201 | "pt-BR": "Linhas",
202 | "pt-PT": "Linhas",
203 | "sv": "Rader",
204 | "th": "แถว",
205 | "zh-CN": "行数",
206 | "zh-TW": "列"
207 | },
208 | "min": 1,
209 | "max": 5,
210 | "step": 1,
211 | "default": 2
212 | },
213 | {
214 | "type": "checkbox",
215 | "id": "show_vendor",
216 | "label": {
217 | "da": "Vis produktleverandører",
218 | "de": "Produkt-Lieferanten anzeigen",
219 | "en": "Show product vendors",
220 | "es": "Mostrar proveedores del producto",
221 | "fi": "Näytä tuotteen myyjät",
222 | "fr": "Afficher les vendeurs",
223 | "hi": "उत्पाद विक्रेताओं को दिखाएं",
224 | "it": "Mostra fornitori prodotto",
225 | "ja": "商品の販売元を表示する",
226 | "ko": "제품 공급 업체 표시",
227 | "nb": "Vis produktleverandører",
228 | "nl": "Productleveranciers weergeven",
229 | "pt-BR": "Exibir fornecedores do produto",
230 | "pt-PT": "Mostrar fornecedores do produto",
231 | "sv": "Visa produktleverantörer",
232 | "th": "แสดงผู้ขายสินค้า",
233 | "zh-CN": "显示产品厂商",
234 | "zh-TW": "顯示產品廠商"
235 | },
236 | "default": false
237 | },
238 | {
239 | "type": "checkbox",
240 | "id": "show_view_all",
241 | "label": {
242 | "da": "Vis knappen \"Se flere\"",
243 | "de": "'Alle anzeigen' Button anzeigen",
244 | "en": "Show 'View all' button",
245 | "es": "Mostrar el botón 'Ver todo'",
246 | "fi": "Näytä \"Näytä kaikki\" -painike",
247 | "fr": "Afficher le bouton “Tout voir”",
248 | "hi": "'सभी देखें' बटन दिखाएं",
249 | "it": "Mostra il pulsante \"Visualizza tutto\"",
250 | "ja": "「すべて表示」ボタンを表示する",
251 | "ko": "'모두 보기' 버튼 표시",
252 | "nb": "Vis «Se alle»-knapp",
253 | "nl": "Knop 'Alles weergeven' weergeven",
254 | "pt-BR": "Exibir botão 'Visualizar tudo'",
255 | "pt-PT": "Mostrar botão 'Ver tudo'",
256 | "sv": "Visa \"Visa alla\"-knappen",
257 | "th": "แสดงปุ่ม 'ดูทั้งหมด'",
258 | "zh-CN": "显示“查看全部”按钮",
259 | "zh-TW": "顯示「檢視全部」按鈕"
260 | },
261 | "default": false
262 | }
263 | ],
264 | "presets": [
265 | {
266 | "name": {
267 | "da": "Udvalgt kollektion",
268 | "de": "Vorgestellte Kategorie",
269 | "en": "Featured collection",
270 | "es": "Colección destacada",
271 | "fi": "Esittelyssä oleva kokoelma",
272 | "fr": "Collection en vedette",
273 | "hi": "फ़ीचर्ड कलेक्शन",
274 | "it": "Collezione in evidenza",
275 | "ja": "特集コレクション",
276 | "ko": "추천 컬렉션",
277 | "nb": "Utvalgt samling",
278 | "nl": "Uitgelichte collectie",
279 | "pt-BR": "Coleção em destaque",
280 | "pt-PT": "Coleção em destaque",
281 | "sv": "Utvald kollektion",
282 | "th": "คอลเลกชันแนะนำ",
283 | "zh-CN": "特色产品系列",
284 | "zh-TW": "精選商品系列"
285 | },
286 | "category": {
287 | "da": "Kollektion",
288 | "de": "Kategorie",
289 | "en": "Collection",
290 | "es": "Colección",
291 | "fi": "Kokoelma",
292 | "fr": "Collection",
293 | "hi": "कलेक्शन",
294 | "it": "Collezione",
295 | "ja": "コレクション",
296 | "ko": "컬렉션",
297 | "nb": "Samling",
298 | "nl": "Collectie",
299 | "pt-BR": "Coleção",
300 | "pt-PT": "Coleção",
301 | "sv": "Produktserie",
302 | "th": "คอลเลกชัน",
303 | "zh-CN": "收藏",
304 | "zh-TW": "商品系列"
305 | }
306 | }
307 | ]
308 | }
309 | {% endschema %}
310 |
--------------------------------------------------------------------------------
/theme/sections/logo-bar.liquid:
--------------------------------------------------------------------------------
1 |
2 | {% if section.settings.title != blank %}
3 |
6 | {% endif %}
7 |
8 | {% if section.blocks.size > 0 %}
9 |
26 | {% endif %}
27 |
28 | {% if section.blocks.size == 0 %}
29 | {% include 'no-blocks' %}
30 | {% endif %}
31 |
32 |
33 |
34 |
35 | {% schema %}
36 | {
37 | "name": {
38 | "da": "Logoliste",
39 | "de": "Logo-Liste",
40 | "en": "Logo list",
41 | "es": "Lista de logos",
42 | "fi": "Logoluettelo",
43 | "fr": "Liste des logos",
44 | "hi": "लोगो सूची",
45 | "it": "Elenco loghi",
46 | "ja": "ロゴリスト",
47 | "ko": "로고 목록",
48 | "nb": "Logoliste",
49 | "nl": "Logolijst",
50 | "pt-BR": "Lista de logotipos",
51 | "pt-PT": "Lista de logótipos",
52 | "sv": "Logotyplista",
53 | "th": "รายการโลโก้",
54 | "zh-CN": "logo 列表",
55 | "zh-TW": "標誌清單"
56 | },
57 | "class": "index-section",
58 | "max_blocks": 20,
59 | "settings": [
60 | {
61 | "type": "text",
62 | "id": "title",
63 | "label": {
64 | "da": "Overskrift",
65 | "de": "Titel",
66 | "en": "Heading",
67 | "es": "Título",
68 | "fi": "Otsake",
69 | "fr": "En-tête",
70 | "hi": "शीर्षक",
71 | "it": "Heading",
72 | "ja": "見出し",
73 | "ko": "제목",
74 | "nb": "Overskrift",
75 | "nl": "Kop",
76 | "pt-BR": "Título",
77 | "pt-PT": "Título",
78 | "sv": "Rubrik",
79 | "th": "ส่วนหัว",
80 | "zh-CN": "标题",
81 | "zh-TW": "標題"
82 | },
83 | "default": {
84 | "da": "Logoliste",
85 | "de": "Logo-Liste",
86 | "en": "Logo list",
87 | "es": "Lista de logos",
88 | "fi": "Logoluettelo",
89 | "fr": "Liste de logos",
90 | "hi": "लोगो सूची",
91 | "it": "Elenco loghi",
92 | "ja": "ロゴリスト",
93 | "ko": "로고 목록",
94 | "nb": "Logoliste",
95 | "nl": "Logolijst",
96 | "pt-BR": "Lista de logotipos",
97 | "pt-PT": "Lista de logótipos",
98 | "sv": "Logotyplista",
99 | "th": "รายการโลโก้",
100 | "zh-CN": "logo 列表",
101 | "zh-TW": "標誌清單"
102 | }
103 | }
104 | ],
105 | "blocks": [
106 | {
107 | "type": "logo_image",
108 | "name": {
109 | "da": "Logo",
110 | "de": "Logo",
111 | "en": "Logo",
112 | "es": "Logo",
113 | "fi": "Logo",
114 | "fr": "Logo",
115 | "hi": "लोगो",
116 | "it": "Logo",
117 | "ja": "ロゴ",
118 | "ko": "로고",
119 | "nb": "Logo",
120 | "nl": "Logo",
121 | "pt-BR": "Logotipo",
122 | "pt-PT": "Logótipo",
123 | "sv": "Logotyp",
124 | "th": "โลโก้",
125 | "zh-CN": "logo",
126 | "zh-TW": "商標"
127 | },
128 | "settings": [
129 | {
130 | "type": "image_picker",
131 | "id": "image",
132 | "label": {
133 | "da": "Billede",
134 | "de": "Foto",
135 | "en": "Image",
136 | "es": "Imagen",
137 | "fi": "Kuva",
138 | "fr": "Image",
139 | "hi": "इमेज",
140 | "it": "Immagine",
141 | "ja": "画像",
142 | "ko": "이미지",
143 | "nb": "Bilde",
144 | "nl": "Afbeelding",
145 | "pt-BR": "Imagem",
146 | "pt-PT": "Imagem",
147 | "sv": "Bild",
148 | "th": "รูปภาพ",
149 | "zh-CN": "图片",
150 | "zh-TW": "圖片"
151 | }
152 | },
153 | {
154 | "type": "url",
155 | "id": "link",
156 | "label": {
157 | "da": "Link",
158 | "de": "Link",
159 | "en": "Link",
160 | "es": "Enlace",
161 | "fi": "Linkki",
162 | "fr": "Lien",
163 | "hi": "लिंक",
164 | "it": "Link",
165 | "ja": "リンク",
166 | "ko": "링크",
167 | "nb": "Kobling",
168 | "nl": "Link",
169 | "pt-BR": "Link",
170 | "pt-PT": "Ligação",
171 | "sv": "Länk",
172 | "th": "ลิงก์",
173 | "zh-CN": "链接",
174 | "zh-TW": "連結"
175 | },
176 | "info": {
177 | "da": "Valgfri",
178 | "de": "Optional",
179 | "en": "Optional",
180 | "es": "Opcional",
181 | "fi": "Valinnainen",
182 | "fr": "Facultatif",
183 | "hi": "वैकल्पिक",
184 | "it": "Facoltativo",
185 | "ja": "オプション",
186 | "ko": "선택 사항",
187 | "nb": "Valgfritt",
188 | "nl": "Optioneel",
189 | "pt-BR": "Opcional",
190 | "pt-PT": "Opcional",
191 | "sv": "Valfritt",
192 | "th": "ไม่จำเป็น",
193 | "zh-CN": "可选",
194 | "zh-TW": "(選填)"
195 | }
196 | }
197 | ]
198 | }
199 | ],
200 | "presets": [
201 | {
202 | "name": {
203 | "da": "Logoliste",
204 | "de": "Logo-Liste",
205 | "en": "Logo list",
206 | "es": "Lista de logos",
207 | "fi": "Logoluettelo",
208 | "fr": "Liste de logos",
209 | "hi": "लोगो सूची",
210 | "it": "Elenco loghi",
211 | "ja": "ロゴリスト",
212 | "ko": "로고 목록",
213 | "nb": "Logoliste",
214 | "nl": "Logolijst",
215 | "pt-BR": "Lista de logotipos",
216 | "pt-PT": "Lista de logótipos",
217 | "sv": "Logotyplista",
218 | "th": "รายการโลโก้",
219 | "zh-CN": "logo 列表",
220 | "zh-TW": "標誌清單"
221 | },
222 | "category": {
223 | "da": "Billede",
224 | "de": "Foto",
225 | "en": "Image",
226 | "es": "Imagen",
227 | "fi": "Kuva",
228 | "fr": "Image",
229 | "hi": "इमेज",
230 | "it": "Immagine",
231 | "ja": "画像",
232 | "ko": "이미지",
233 | "nb": "Bilde",
234 | "nl": "Afbeelding",
235 | "pt-BR": "Imagem",
236 | "pt-PT": "Imagem",
237 | "sv": "Bild",
238 | "th": "รูปภาพ",
239 | "zh-CN": "图片",
240 | "zh-TW": "圖片"
241 | },
242 | "blocks": [
243 | {
244 | "type": "logo_image"
245 | },
246 | {
247 | "type": "logo_image"
248 | },
249 | {
250 | "type": "logo_image"
251 | },
252 | {
253 | "type": "logo_image"
254 | }
255 | ]
256 | }
257 | ]
258 | }
259 | {% endschema %}
260 |
--------------------------------------------------------------------------------
/theme/sections/password-footer.liquid:
--------------------------------------------------------------------------------
1 |
2 | {% if section.settings.show_share_buttons %}
3 |
4 |
{{ section.settings.social_message | escape }}
5 | {% include 'social-sharing' %}
6 |
7 | {% endif %}
8 |
9 |
10 | {% capture shopify %}
11 |
Shopify
12 | {% endcapture %}
13 |
14 |
{{ 'general.password_page.powered_by_shopify_html' | t: shopify: shopify }}
15 |
16 |
17 |
18 |
19 | {% schema %}
20 | {
21 | "name": {
22 | "da": "Sidefod",
23 | "de": "Fußzeile",
24 | "en": "Footer",
25 | "es": "Pie de página",
26 | "fi": "Alatunniste",
27 | "fr": "Pied de page",
28 | "hi": "फुटर",
29 | "it": "Footer",
30 | "ja": "フッター",
31 | "ko": "바닥글",
32 | "nb": "Footer",
33 | "nl": "Voettekst",
34 | "pt-BR": "Rodapé",
35 | "pt-PT": "Rodapé",
36 | "sv": "Sidfot",
37 | "th": "ส่วนท้าย",
38 | "zh-CN": "页脚",
39 | "zh-TW": "頁尾"
40 | },
41 | "settings": [
42 | {
43 | "type": "checkbox",
44 | "id": "show_share_buttons",
45 | "label": {
46 | "da": "Vis knapper til deling på sociale medier",
47 | "de": "Buttons für Social Media anzeigen",
48 | "en": "Show social sharing buttons",
49 | "es": "Mostrar botones para compartir en redes sociales",
50 | "fi": "Näytä sosiaalisen median jakamispainikkeet",
51 | "fr": "Affichez les boutons de partage sur les médias sociaux",
52 | "hi": "सोशल शेयरिंग बटन दिखाएं",
53 | "it": "Mostra i pulsanti per la condivisione sui social",
54 | "ja": "ソーシャルメディアでの共有ボタンを表示する",
55 | "ko": "소셜 공유 버튼 표시",
56 | "nb": "Vis knapper for deling på sosiale medier",
57 | "nl": "Knoppen voor sociaal delen weergeven",
58 | "pt-BR": "Exibir botões de compartilhamento em redes sociais",
59 | "pt-PT": "Mostrar botões de partilha nas redes sociais",
60 | "sv": "Visa knappar för delning i sociala medier",
61 | "th": "แสดงปุ่มสำหรับแชร์ลงโซเชียล",
62 | "zh-CN": "显示社交分享按钮",
63 | "zh-TW": "顯示社群分享按鈕"
64 | },
65 | "default": true
66 | },
67 | {
68 | "type": "text",
69 | "id": "social_message",
70 | "label": {
71 | "da": "Overskrift på knapper til deling på sociale medier",
72 | "de": "Titel für Social Media Buttons",
73 | "en": "Social sharing buttons heading",
74 | "es": "Título de botones para compartir en redes sociales",
75 | "fi": "Sosiaalisen median jakamispainikkeiden otsikko",
76 | "fr": "Titre des options de partage",
77 | "hi": "सोशल शेयरिंग बटन शीर्षक",
78 | "it": "Titolo dei pulsanti per la condivisione sui social",
79 | "ja": "ソーシャル共有ボタンの見出し",
80 | "ko": "소셜 공유 버튼 제목",
81 | "nb": "Overskrift til knapper for sosial deling",
82 | "nl": "Kop van knoppen voor delen via social media",
83 | "pt-BR": "Exibir botões de compartilhamento em redes sociais",
84 | "pt-PT": "Título dos botões de partilha nas redes sociais",
85 | "sv": "Knapprubrik för social delning",
86 | "th": "ส่วนหัวปุ่มสำหรับแชร์ลงโซเชียล",
87 | "zh-CN": "社交分享按钮标题",
88 | "zh-TW": "社交分享按鈕標題"
89 | },
90 | "default": {
91 | "da": "Spred budskabet",
92 | "de": "Machen Sie Werbung",
93 | "en": "Spread the word",
94 | "es": "Riega la voz",
95 | "fi": "Levitä sanaa",
96 | "fr": "Faites passer le mot",
97 | "hi": "जानकारी अधिक लोगों तक पहुंचाएं",
98 | "it": "Spargi la voce",
99 | "ja": "情報を広く伝えましょう",
100 | "ko": "소문 내기:",
101 | "nb": "Spre ordet",
102 | "nl": "Vertel het verder",
103 | "pt-BR": "Divulgue a novidade",
104 | "pt-PT": "Passar a palavra",
105 | "sv": "Sprid meddelandet",
106 | "th": "ประกาศ",
107 | "zh-CN": "传播消息",
108 | "zh-TW": "四處宣傳"
109 | }
110 | }
111 | ]
112 | }
113 | {% endschema %}
114 |
--------------------------------------------------------------------------------
/theme/sections/password-header.liquid:
--------------------------------------------------------------------------------
1 |
2 | {% if section.settings.logo %}
3 | {%- assign img_url = section.settings.logo | img_url: '1x1' | replace: '_1x1.', '_{width}x.' -%}
4 |
23 | {% else %}
24 |
27 | {% endif %}
28 |
29 | {{ section.settings.header | escape }}
30 |
31 |
32 |
33 | {% schema %}
34 | {
35 | "name": {
36 | "da": "Overskrift",
37 | "de": "Titel",
38 | "en": "Header",
39 | "es": "Encabezado",
40 | "fi": "Ylätunniste",
41 | "fr": "En-tête",
42 | "hi": "हैडर",
43 | "it": "Header",
44 | "ja": "ヘッダー",
45 | "ko": "머리글",
46 | "nb": "Header",
47 | "nl": "Koptekst",
48 | "pt-BR": "Cabeçalho",
49 | "pt-PT": "Cabeçalho",
50 | "sv": "Rubrik",
51 | "th": "ส่วนหัว",
52 | "zh-CN": "标头",
53 | "zh-TW": "標頭"
54 | },
55 | "settings": [
56 | {
57 | "type": "image_picker",
58 | "id": "logo",
59 | "label": {
60 | "da": "Logobillede",
61 | "de": "Logo-Foto",
62 | "en": "Logo image",
63 | "es": "Logo",
64 | "fi": "Logokuva",
65 | "fr": "Image du logo",
66 | "hi": "लोगो इमेज",
67 | "it": "Immagine del logo",
68 | "ja": "ロゴ画像",
69 | "ko": "로고 이미지",
70 | "nb": "Logobilde",
71 | "nl": "Afbeelding van logo",
72 | "pt-BR": "Imagem do logotipo",
73 | "pt-PT": "Imagem do logótipo",
74 | "sv": "Logobild",
75 | "th": "รูปภาพโลโก้",
76 | "zh-CN": "logo 图片",
77 | "zh-TW": "標誌圖片"
78 | }
79 | },
80 | {
81 | "type": "range",
82 | "id": "logo_max_width",
83 | "label": {
84 | "da": "Tilpasset logobredde",
85 | "de": "Logobreite",
86 | "en": "Custom logo width",
87 | "es": "Ancho del logo personalizado",
88 | "fi": "Mukautetun logon leveys",
89 | "fr": "Largeur personnalisée du logo",
90 | "hi": "कस्टम लोगो की चौड़ाई",
91 | "it": "Larghezza logo personalizzato",
92 | "ja": "ロゴの幅をカスタマイズする",
93 | "ko": "사용자 지정 로고 폭",
94 | "nb": "Tilpasset logobredde",
95 | "nl": "Aangepaste logo-breedte",
96 | "pt-BR": "Largura do logotipo personalizado",
97 | "pt-PT": "Largura de logótipo personalizada",
98 | "sv": "Anpassad logotypsbredd",
99 | "th": "ความกว้างของโลโก้แบบกำหนดเอง",
100 | "zh-CN": "自定义 logo 宽度",
101 | "zh-TW": "自訂商標寬度"
102 | },
103 | "min": 50,
104 | "max": 500,
105 | "step": 10,
106 | "unit": "px",
107 | "default": 100
108 | },
109 | {
110 | "type": "text",
111 | "id": "header",
112 | "label": {
113 | "da": "Overskrift",
114 | "de": "Titel",
115 | "en": "Heading",
116 | "es": "Título",
117 | "fi": "Otsake",
118 | "fr": "En-tête",
119 | "hi": "शीर्षक",
120 | "it": "Heading",
121 | "ja": "見出し",
122 | "ko": "제목",
123 | "nb": "Overskrift",
124 | "nl": "Kop",
125 | "pt-BR": "Título",
126 | "pt-PT": "Título",
127 | "sv": "Rubrik",
128 | "th": "ส่วนหัว",
129 | "zh-CN": "标题",
130 | "zh-TW": "標題"
131 | },
132 | "default": {
133 | "da": "Kommer snart",
134 | "de": "Demnächst",
135 | "en": "Coming Soon",
136 | "es": "Próximamente",
137 | "fi": "Tulossa pian",
138 | "fr": "En construction",
139 | "hi": "जल्द आ रहा है",
140 | "it": "Presto disponibile",
141 | "ja": "まもなく公開",
142 | "ko": "곧 출시 예정",
143 | "nb": "Kommer snart",
144 | "nl": "Binnenkort",
145 | "pt-BR": "Em breve",
146 | "pt-PT": "Em breve",
147 | "sv": "Kommer snart",
148 | "th": "เร็วๆ นี้",
149 | "zh-CN": "即将推出",
150 | "zh-TW": "即將推出"
151 | }
152 | }
153 | ]
154 | }
155 | {% endschema %}
156 |
--------------------------------------------------------------------------------
/theme/sections/product-recommendations.liquid:
--------------------------------------------------------------------------------
1 | {%- if section.settings.show_product_recommendations -%}
2 | {%- if recommendations.performed -%}
3 | {%- if recommendations.products_count > 0 -%}
4 |
5 | {%- if section.settings.heading != blank -%}
6 |
9 | {%- endif -%}
10 |
17 |
18 | {%- endif -%}
19 | {%- else -%}
20 |
21 | {%- endif -%}
22 | {%- endif -%}
23 |
24 | {% schema %}
25 | {
26 | "name": {
27 | "da": "Produktanbefalinger",
28 | "de": "Produktempfehlungen",
29 | "en": "Product recommendations",
30 | "es": "Recomendaciones de productos",
31 | "fi": "Tuotesuositukset",
32 | "fr": "Recommandations de produits",
33 | "hi": "उत्पाद की अनुशंसाएं",
34 | "it": "Raccomandazioni sui prodotti",
35 | "ja": "商品の推奨",
36 | "ko": "제품 권장 사항",
37 | "nb": "Produktanbefalinger",
38 | "nl": "Productaanbevelingen",
39 | "pt-BR": "Recomendações de produtos",
40 | "pt-PT": "Recomendações de produtos",
41 | "sv": "Produktrekommendationer",
42 | "th": "คำแนะนำสินค้า",
43 | "zh-CN": "产品推荐",
44 | "zh-TW": "商品推薦"
45 | },
46 | "settings": [
47 | {
48 | "type": "checkbox",
49 | "id": "show_product_recommendations",
50 | "label": {
51 | "da": "Vis dynamiske anbefalinger",
52 | "de": "Dynamische Empfehlungen anzeigen",
53 | "en": "Show dynamic recommendations",
54 | "es": "Mostrar recomendaciones dinámicas",
55 | "fi": "Näytä dynaamiset suositukset",
56 | "fr": "Afficher les recommandations dynamiques",
57 | "hi": "डायनेमिक सुझाव दिखाएं",
58 | "it": "Mostra raccomandazioni dinamiche",
59 | "ja": "動的推奨を表示する",
60 | "ko": "동적 권장 사항 표시",
61 | "nb": "Vis dynamiske anbefalinger",
62 | "nl": "Dynamische aanbevelingen weergeven",
63 | "pt-BR": "Mostrar recomendações dinâmicas",
64 | "pt-PT": "Mostrar recomendações dinâmicas",
65 | "sv": "Visa dynamiska rekommendationer",
66 | "th": "แสดงคำแนะนำแบบไดนามิก",
67 | "zh-CN": "显示动态推荐",
68 | "zh-TW": "顯示動態推薦"
69 | },
70 | "info": {
71 | "da": "Dynamiske anbefalinger ændres og forbedres med tiden. [Få mere at vide](https://help.shopify.com/en/themes/development/recommended-products)",
72 | "de": "Dynamische Empfehlungen werden im Laufe der Zeit angepasst und verbessert. [Mehr Informationen](https://help.shopify.com/en/themes/development/recommended-products)",
73 | "en": "Dynamic recommendations change and improve with time. [Learn more](https://help.shopify.com/en/themes/development/recommended-products)",
74 | "es": "Las recomendaciones dinámicas cambian y mejoran con el tiempo. [Más información](https://help.shopify.com/en/themes/development/recommended-products)",
75 | "fi": "Dynaamiset suositukset muuttuvat ja paranevat ajan myötä. [Lisätietoja](https://help.shopify.com/en/themes/development/recommended-products)",
76 | "fr": "Les recommandations dynamiques changent et s'améliorent avec le temps. [En savoir plus](https://help.shopify.com/en/themes/development/recommended-products)",
77 | "hi": "समय के साथ डायनेमिक सुझाव परिवर्तन और सुधार. [अधिक जानें](https://help.shopify.com/en/themes/development/recommended-products)",
78 | "it": "Le raccomandazioni dinamiche cambiano e migliorano nel tempo. [Maggiori informazioni](https://help.shopify.com/en/themes/development/recommended-products)",
79 | "ja": "動的推奨は時間とともに変化し改善します。[詳細情報](https://help.shopify.com/en/themes/development/recommended-products)",
80 | "ko": "동적 권장 사항은 시간이 지나면서 변하고 개선됩니다. [자세히 알아보기](https://help.shopify.com/en/themes/development/recommended-products)",
81 | "nb": "Dynamiske anbefalinger endrer seg og forbedres med tiden. [Finn ut mer](https://help.shopify.com/en/themes/development/recommended-products)",
82 | "nl": "Dynamische aanbevelingen veranderen en verbeteren mettertijd. [Meer informatie](https://help.shopify.com/en/themes/development/recommended-products)",
83 | "pt-BR": "As recomendações dinâmicas mudam e melhoram com o tempo. [Saiba mais](https://help.shopify.com/en/themes/development/recommended-products)",
84 | "pt-PT": "As recomendações dinâmicas mudam e melhoram com o tempo. [Saiba mais](https://help.shopify.com/en/themes/development/recommended-products)",
85 | "sv": "Dynamiska rekommendationer ändras och förbättras med tiden. [Läs mer](https://help.shopify.com/en/themes/development/recommended-products)",
86 | "th": "คำแนะนำแบบไดนามิกนั้นเปลี่ยนแปลงและถูกปรับปรุงให้ดีขึ้นตลอดเวลา [เรียนรู้เพิ่มเติม](https://help.shopify.com/en/themes/development/recommended-products)",
87 | "zh-CN": "动态推荐会随着时间而变化和改进。[了解详细信息](https://help.shopify.com/en/themes/development/recommended-products)",
88 | "zh-TW": "動態推薦會隨著時間改變與改進。[深入瞭解](https://help.shopify.com/en/themes/development/recommended-products)"
89 | },
90 | "default": true
91 | },
92 | {
93 | "type": "text",
94 | "id": "heading",
95 | "label": {
96 | "da": "Overskrift",
97 | "de": "Überschrift",
98 | "en": "Heading",
99 | "es": "Título",
100 | "fi": "Otsake",
101 | "fr": "En-tête",
102 | "hi": "शीर्षक",
103 | "it": "Heading",
104 | "ja": "見出し",
105 | "ko": "제목",
106 | "nb": "Overskrift",
107 | "nl": "Kop",
108 | "pt-BR": "Título",
109 | "pt-PT": "Título",
110 | "sv": "Rubrik",
111 | "th": "ส่วนหัว",
112 | "zh-CN": "标题",
113 | "zh-TW": "標題"
114 | },
115 | "default": {
116 | "da": "Du vil muligvis også synes om",
117 | "de": "Das könnte Ihnen auch gefallen",
118 | "en": "You may also like",
119 | "es": "También te puede interesar",
120 | "fi": "Saatat pitää myös näistä",
121 | "fr": "Vous pourriez aimer également",
122 | "hi": "आप शायद इसे भी पसंद करें",
123 | "it": "Potrebbero interessarti anche",
124 | "ja": "あなたへのおすすめ",
125 | "ko": "회원님도 좋아할 것입니다.",
126 | "nb": "Kanskje du også liker",
127 | "nl": "Wellicht vindt u dit ook leuk",
128 | "pt-BR": "Talvez você também goste de",
129 | "pt-PT": "Também poderá gostar de",
130 | "sv": "Du kanske också gillar",
131 | "th": "คุณอาจจะชอบ",
132 | "zh-CN": "您可能还喜欢",
133 | "zh-TW": "您也可能喜歡"
134 | }
135 | },
136 | {
137 | "type": "checkbox",
138 | "id": "show_vendor",
139 | "label": {
140 | "da": "Vis leverandør",
141 | "de": "Lieferanten anzeigen",
142 | "en": "Show vendor",
143 | "es": "Mostrar proveedor",
144 | "fi": "Näytä myyjä",
145 | "fr": "Afficher les vendeurs",
146 | "hi": "विक्रेता दिखाएं",
147 | "it": "Mostra fornitore",
148 | "ja": "販売元を表示する",
149 | "ko": "공급업체 표시",
150 | "nb": "Vis leverandør",
151 | "nl": "Leverancier weergeven",
152 | "pt-BR": "Exibir fornecedor",
153 | "pt-PT": "Mostrar fornecedor",
154 | "sv": "Visa säljare",
155 | "th": "แสดงผู้ขาย",
156 | "zh-CN": "显示厂商",
157 | "zh-TW": "顯示廠商"
158 | },
159 | "default": false
160 | }
161 | ]
162 | }
163 | {% endschema %}
164 |
--------------------------------------------------------------------------------
/theme/sections/quotes.liquid:
--------------------------------------------------------------------------------
1 |
2 | {% if section.settings.title != blank %}
3 |
6 | {% endif %}
7 |
8 | {% if section.blocks.size > 0 %}
9 |
10 |
11 | {% for block in section.blocks %}
12 |
13 |
14 | {% include 'icon-quote' %}
15 | {% if block.settings.quote != blank %}
16 | {{ block.settings.quote }}
17 | {% endif %}
18 | {% if block.settings.author != blank %}
19 | {{ block.settings.author | escape }}
20 | {% endif %}
21 |
22 |
23 | {% endfor %}
24 |
25 |
26 | {% endif %}
27 |
28 | {% if section.blocks.size == 0 %}
29 | {% include 'no-blocks' %}
30 | {% endif %}
31 |
32 |
33 |
34 |
35 | {% schema %}
36 | {
37 | "name": {
38 | "da": "Udtalelser",
39 | "de": "Testimonials",
40 | "en": "Testimonials",
41 | "es": "Testimonios",
42 | "fi": "Suositukset",
43 | "fr": "Témoignages",
44 | "hi": "प्रमाणपत्र",
45 | "it": "Testimonial",
46 | "ja": "お客様の声",
47 | "ko": "추천",
48 | "nb": "Tilbakemeldinger fra kunder",
49 | "nl": "Getuigenissen",
50 | "pt-BR": "Depoimentos",
51 | "pt-PT": "Depoimentos",
52 | "sv": "Kundberättelser",
53 | "th": "เสียงชื่นชมจากลูกค้า",
54 | "zh-CN": "感言",
55 | "zh-TW": "推薦文"
56 | },
57 | "class": "index-section",
58 | "max_blocks": 9,
59 | "settings": [
60 | {
61 | "type": "text",
62 | "id": "title",
63 | "label": {
64 | "da": "Overskrift",
65 | "de": "Titel",
66 | "en": "Heading",
67 | "es": "Título",
68 | "fi": "Otsake",
69 | "fr": "En-tête",
70 | "hi": "शीर्षक",
71 | "it": "Heading",
72 | "ja": "見出し",
73 | "ko": "제목",
74 | "nb": "Overskrift",
75 | "nl": "Kop",
76 | "pt-BR": "Título",
77 | "pt-PT": "Título",
78 | "sv": "Rubrik",
79 | "th": "ส่วนหัว",
80 | "zh-CN": "标题",
81 | "zh-TW": "標題"
82 | },
83 | "default": {
84 | "da": "Udtalelser",
85 | "de": "Testimonials",
86 | "en": "Testimonials",
87 | "es": "Testimonios",
88 | "fi": "Suositukset",
89 | "fr": "Témoignages",
90 | "hi": "प्रमाणपत्र",
91 | "it": "Testimonial",
92 | "ja": "お客様の声",
93 | "ko": "추천",
94 | "nb": "Tilbakemeldinger fra kunder",
95 | "nl": "Getuigenissen",
96 | "pt-BR": "Depoimentos",
97 | "pt-PT": "Depoimentos",
98 | "sv": "Kundberättelser",
99 | "th": "เสียงชื่นชมจากลูกค้า",
100 | "zh-CN": "感言",
101 | "zh-TW": "推薦文"
102 | }
103 | }
104 | ],
105 | "blocks": [
106 | {
107 | "type": "quote",
108 | "name": {
109 | "da": "Udtalelse",
110 | "de": "Testimonial",
111 | "en": "Testimonial",
112 | "es": "Testimonio",
113 | "fi": "Suositukset",
114 | "fr": "Témoignages",
115 | "hi": "प्रमाणपत्र",
116 | "it": "Testimonial",
117 | "ja": "お客様の声",
118 | "ko": "추천",
119 | "nb": "Anbefaling",
120 | "nl": "Testimonial",
121 | "pt-BR": "Depoimento",
122 | "pt-PT": "Testemunho",
123 | "sv": "Kundberättelser",
124 | "th": "เสียงชื่นชมจากลูกค้า",
125 | "zh-CN": "感言",
126 | "zh-TW": "推薦文"
127 | },
128 | "settings": [
129 | {
130 | "type": "richtext",
131 | "id": "quote",
132 | "label": {
133 | "da": "Tekst",
134 | "de": "Text",
135 | "en": "Text",
136 | "es": "Texto",
137 | "fi": "Teksti",
138 | "fr": "Texte",
139 | "hi": "टेक्स्ट",
140 | "it": "Testo",
141 | "ja": "テキスト",
142 | "ko": "텍스트",
143 | "nb": "Tekst",
144 | "nl": "Tekst",
145 | "pt-BR": "Texto",
146 | "pt-PT": "Texto",
147 | "sv": "Text",
148 | "th": "ข้อความ",
149 | "zh-CN": "文本",
150 | "zh-TW": "文字"
151 | },
152 | "default": {
153 | "da": "Tilføj kundeanmeldelser og udtalelser for at fremhæve din butiks tilfredse kunder.
",
154 | "de": "Kunden-Reviews und Testimonials, die Kundenzufriedenheit beweisen.
",
155 | "en": "Add customer reviews and testimonials to showcase your store’s happy customers.
",
156 | "es": "Agrega las reseñas y los testimonios de los clientes para mostrar a los clientes satisfechos de tu tienda.
",
157 | "fi": "Lisää asiakasarviointeja ja suositteluja esimerkeiksi myymäläsi tyytyväisistä asiakkaista.
",
158 | "fr": "Ajoutez des avis et témoignages pour mettre en avant vos clients satisfaits.
",
159 | "hi": "अपने स्टोर के खुश ग्राहकों को दिखाने के लिए ग्राहक समीक्षा और प्रशंसापत्र जोड़ें.
",
160 | "it": "Aggiungi recensioni e testimonianze sul tuo negozio per dimostrare che i clienti sono soddisfatti.
",
161 | "ja": "あなたのストアの幸せなお客様を紹介するために、カスタマーレビューとお客様の声を追加してください。
",
162 | "ko": "고객 리뷰 및 추천을 추가하여 스토어에 만족한 고객을 보여주십시오.
",
163 | "nb": "Legg til kundeomtaler og anbefalinger for å vise frem butikkens glade kunder.
",
164 | "nl": "Voeg beoordelingen van klanten en testimonials toe om te laten zien dat je klanten tevreden zijn.
",
165 | "pt-BR": "Adicione comentários e depoimentos para dar destaque aos clientes satisfeitos com a sua loja.
",
166 | "pt-PT": "Adicione análises e testemunhos para mostrar os clientes felizes da sua loja.
",
167 | "sv": "Lägg till kundrecensioner och berättelser för att visa upp din butiks nöjda kunder.
",
168 | "th": "เพิ่มรีวิวและเสียงชื่นชมจากลูกค้าเพื่อนำเสนอลูกค้าที่ได้รับความพึงพอใจจากร้านค้า
",
169 | "zh-CN": "添加客户评论和感言,以展示对您的商店满意的客户。
",
170 | "zh-TW": "新增顧客評論和推薦文,展示對您商店滿意之顧客。
"
171 | }
172 | },
173 | {
174 | "type": "text",
175 | "id": "author",
176 | "label": {
177 | "da": "Forfatter",
178 | "de": "Autor",
179 | "en": "Author",
180 | "es": "Autor",
181 | "fi": "Kirjoittaja",
182 | "fr": "Auteur",
183 | "hi": "लेखक",
184 | "it": "Autore",
185 | "ja": "執筆者",
186 | "ko": "작성자",
187 | "nb": "Forfatter",
188 | "nl": "Auteur",
189 | "pt-BR": "Autoria",
190 | "pt-PT": "Autoria",
191 | "sv": "Upphovsman",
192 | "th": "ผู้เขียน",
193 | "zh-CN": "作者",
194 | "zh-TW": "作者"
195 | },
196 | "default": {
197 | "da": "Forfatterens navn",
198 | "de": "Name des Autors",
199 | "en": "Author's name",
200 | "es": "Nombre del autor",
201 | "fi": "Kirjoittajan nimi",
202 | "fr": "Nom de l'auteur",
203 | "hi": "लेखक का नाम",
204 | "it": "Nome dell'autore",
205 | "ja": "筆者の名前",
206 | "ko": "작성자 이름",
207 | "nb": "Forfatterens navn",
208 | "nl": "Naam auteur",
209 | "pt-BR": "Nome do autor",
210 | "pt-PT": "Nome do autor",
211 | "sv": "Författarens namn",
212 | "th": "ชื่อผู้เขียน",
213 | "zh-CN": "作者姓名",
214 | "zh-TW": "作者名稱"
215 | }
216 | }
217 | ]
218 | }
219 | ],
220 | "presets": [
221 | {
222 | "name": {
223 | "da": "Udtalelser",
224 | "de": "Testimonials",
225 | "en": "Testimonials",
226 | "es": "Testimonios",
227 | "fi": "Suositukset",
228 | "fr": "Témoignages",
229 | "hi": "प्रमाणपत्र",
230 | "it": "Testimonial",
231 | "ja": "お客様の声",
232 | "ko": "추천",
233 | "nb": "Tilbakemeldinger fra kunder",
234 | "nl": "Getuigenissen",
235 | "pt-BR": "Depoimentos",
236 | "pt-PT": "Depoimentos",
237 | "sv": "Kundberättelser",
238 | "th": "เสียงชื่นชมจากลูกค้า",
239 | "zh-CN": "感言",
240 | "zh-TW": "推薦文"
241 | },
242 | "category": {
243 | "da": "Tekst",
244 | "de": "Text",
245 | "en": "Text",
246 | "es": "Texto",
247 | "fi": "Teksti",
248 | "fr": "Texte",
249 | "hi": "टेक्स्ट",
250 | "it": "Testo",
251 | "ja": "テキスト",
252 | "ko": "텍스트",
253 | "nb": "Tekst",
254 | "nl": "Tekst",
255 | "pt-BR": "Texto",
256 | "pt-PT": "Texto",
257 | "sv": "Text",
258 | "th": "ข้อความ",
259 | "zh-CN": "文本",
260 | "zh-TW": "文字"
261 | },
262 | "blocks": [
263 | {
264 | "type": "quote"
265 | },
266 | {
267 | "type": "quote"
268 | },
269 | {
270 | "type": "quote"
271 | }
272 | ]
273 | }
274 | ]
275 | }
276 | {% endschema %}
277 |
--------------------------------------------------------------------------------
/theme/snippets/bgset.liquid:
--------------------------------------------------------------------------------
1 | {%- if image != blank -%}
2 | {% if image.width > 180 %}{{ image | img_url: '180x' }} 180w {{ 180 | divided_by: image.aspect_ratio | round }}h,{% endif %}
3 | {% if image.width > 360 %}{{ image | img_url: '360x' }} 360w {{ 360 | divided_by: image.aspect_ratio | round }}h,{% endif %}
4 | {% if image.width > 540 %}{{ image | img_url: '540x' }} 540w {{ 540 | divided_by: image.aspect_ratio | round }}h,{% endif %}
5 | {% if image.width > 720 %}{{ image | img_url: '720x' }} 720w {{ 720 | divided_by: image.aspect_ratio | round }}h,{% endif %}
6 | {% if image.width > 900 %}{{ image | img_url: '900x' }} 900w {{ 900 | divided_by: image.aspect_ratio | round }}h,{% endif %}
7 | {% if image.width > 1080 %}{{ image | img_url: '1080x' }} 1080w {{ 1080 | divided_by: image.aspect_ratio | round }}h,{% endif %}
8 | {% if image.width > 1296 %}{{ image | img_url: '1296x' }} 1296w {{ 1296 | divided_by: image.aspect_ratio | round }}h,{% endif %}
9 | {% if image.width > 1512 %}{{ image | img_url: '1512x' }} 1512w {{ 1512 | divided_by: image.aspect_ratio | round }}h,{% endif %}
10 | {% if image.width > 1728 %}{{ image | img_url: '1728x' }} 1728w {{ 1728 | divided_by: image.aspect_ratio | round }}h,{% endif %}
11 | {% if image.width > 1950 %}{{ image | img_url: '1950x' }} 1950w {{ 1950 | divided_by: image.aspect_ratio | round }}h,{% endif %}
12 | {% if image.width > 2100 %}{{ image | img_url: '2100x' }} 2100w {{ 2100 | divided_by: image.aspect_ratio | round }}h,{% endif %}
13 | {% if image.width > 2260 %}{{ image | img_url: '2260x' }} 2260w {{ 2260 | divided_by: image.aspect_ratio | round }}h,{% endif %}
14 | {% if image.width > 2450 %}{{ image | img_url: '2450x' }} 2450w {{ 2450 | divided_by: image.aspect_ratio | round }}h,{% endif %}
15 | {% if image.width > 2700 %}{{ image | img_url: '2700x' }} 2700w {{ 2700 | divided_by: image.aspect_ratio | round }}h,{% endif %}
16 | {% if image.width > 3000 %}{{ image | img_url: '3000x' }} 3000w {{ 3000 | divided_by: image.aspect_ratio | round }}h,{% endif %}
17 | {% if image.width > 3350 %}{{ image | img_url: '3350x' }} 3350w {{ 3350 | divided_by: image.aspect_ratio | round }}h,{% endif %}
18 | {% if image.width > 3750 %}{{ image | img_url: '3750x' }} 3750w {{ 3750 | divided_by: image.aspect_ratio | round }}h,{% endif %}
19 | {% if image.width > 4100 %}{{ image | img_url: '4100x' }} 4100w {{ 4100 | divided_by: image.aspect_ratio | round }}h,{% endif %}
20 | {{ image | img_url: 'master' }} {{ image.width }}w {{ image.height }}h
21 | {%- endif -%}
22 |
--------------------------------------------------------------------------------
/theme/snippets/cart-popup.liquid:
--------------------------------------------------------------------------------
1 | {%- style -%}
2 | {% assign cart_popup_box_shadow = settings.color_borders | color_modify: 'alpha', 0.5 %}
3 |
4 | .cart-popup {
5 | box-shadow: 1px 1px 10px 2px {{ cart_popup_box_shadow }};
6 | }
7 | {%- endstyle -%}
8 |
9 |
46 |
--------------------------------------------------------------------------------
/theme/snippets/collection-grid-item.liquid:
--------------------------------------------------------------------------------
1 | {% comment %}
2 | Renders a list of products from a collection
3 |
4 | Accepts:
5 | - collection: {Object} Collection Liquid object (required)
6 |
7 | Usage:
8 | {% include 'collection-grid-item', collection: collection %}
9 | {% endcomment %}
10 | {% if collection.image %}
11 | {%- assign collection_image = collection.image -%}
12 | {% elsif collection.products.first and collection.products.first.media != empty %}
13 | {%- assign collection_image = collection.products.first.featured_media.preview_image -%}
14 | {% else %}
15 | {% assign collection_image = blank %}
16 | {% endif %}
17 |
18 |
52 |
--------------------------------------------------------------------------------
/theme/snippets/comment.liquid:
--------------------------------------------------------------------------------
1 |
2 |
5 |
9 |
--------------------------------------------------------------------------------
/theme/snippets/form-status.liquid:
--------------------------------------------------------------------------------
1 | {% comment %}
2 | Renders a form status message
3 | Accepts:
4 | - form: {Object} Form Liquid object (required)
5 | - form_id: {String} Form's id attribute for accessibility purpose (required)
6 | - success_message: {String} Success message locale key. Default to 'contact.form.post_success' (optional)
7 |
8 | Usage:
9 | {% include 'form-status', form: form, form_id: formId, success_message: post_message %}
10 | {% endcomment %}
11 | {%- if form.posted_successfully? -%}
12 |
13 | {{ success_message | default: 'contact.form.post_success' | t }}
14 |
15 | {%- endif -%}
16 |
17 | {% comment %} We need to add this so the errors are output in the right order {% endcomment %}
18 | {% assign error_order = "author, email, body, password, form" | split: ", " %}
19 |
20 | {%- if form.errors -%}
21 |
22 |
53 | {%- endif -%}
54 |
--------------------------------------------------------------------------------
/theme/snippets/icon-3d-badge-full-color.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-arrow-left.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-arrow-right.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-cart.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-chevron-down.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-chevron-left.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-chevron-right.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-close.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-error.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-facebook.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-hamburger.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-instagram.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-laser.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-lock.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-login.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-minus.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-pause.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-pin.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-pinterest.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-play.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-plus.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-quote.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-resume.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-rss.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-saletag.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-search.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-shopify-logo.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-snapchat.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-spinner.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-tumblr.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-twitter.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-video-badge-full-color.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-vimeo.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/icon-youtube.liquid:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/theme/snippets/image-style.liquid:
--------------------------------------------------------------------------------
1 |
19 |
--------------------------------------------------------------------------------
/theme/snippets/media.liquid:
--------------------------------------------------------------------------------
1 | {% comment %}
2 | Renders a media element for the product gallery.
3 | Media types include: image, video, external_video and model.
4 | Accepts:
5 | - media: {Object} Media Liquid object (required)
6 | - featured_media: {Object} Media Liquid object (required) - featured media of a given product or variant
7 | - height: {Number} Maximum height of the gallery (required)
8 | - image_zoom_size: {String} Size of the zoomed image (e.g., '1024x1024') (required for media type image)
9 | - enable_image_zoom: {Boolean} Image zoom setting (required for media type image)
10 | - image_scale: {String} Image scale (e.g., '2') (required for media type image)
11 |
12 | Usage:
13 | {%- for media in product.media -%}
14 | {% include 'media', media: media, featured_media: featured_media, height: height %}
15 | {%- endfor -%}
16 |
17 | {%- for media in product.media -%}
18 | {% include 'media', media: media, featured_media: featured_media, height: height,
19 | enable_image_zoom: enable_image_zoom, image_zoom_size: product_image_zoom_size, image_scale: product_image_scale %}
20 | {%- endfor -%}
21 | {% endcomment %}
22 |
23 | {% capture media_id %}FeaturedMedia-{{ section.id }}-{{ media.id }}{% endcapture %}
24 | {% capture media_class %}product-featured-media{% endcapture %}
25 | {% capture media_wrapper_id %}{{ media_id }}-wrapper{% endcapture %}
26 |
27 | {%- comment -%}
28 | Load different poster image sizes depending on the product layout
29 | {%- endcomment -%}
30 | {% capture image_size %}{{ height }}x{{ height }}{% endcapture %}
31 |
32 |
77 |
--------------------------------------------------------------------------------
/theme/snippets/no-blocks.liquid:
--------------------------------------------------------------------------------
1 |
2 | {{ 'homepage.onboarding.no_content' | t }}
3 |
4 |
--------------------------------------------------------------------------------
/theme/snippets/pagination.liquid:
--------------------------------------------------------------------------------
1 | {% comment %}
2 | Renders a pagination bar
3 |
4 | Accepts:
5 | - paginate: {Object} Paginate Liquid object (required)
6 |
7 | Usage:
8 | {% include 'pagination', paginate: paginate %}
9 | {% endcomment %}
10 |
45 |
--------------------------------------------------------------------------------
/theme/snippets/product-card-grid.liquid:
--------------------------------------------------------------------------------
1 | {% comment %}
2 | Renders a product card using "Grid" style
3 | Accepts:
4 | - max_height: {Number} Maximum height of the product's image (required)
5 | - product: {Object} Product Liquid object (required)
6 | - show_vendor: {Boolean} Show the product's vendor depending on the section setting (optional)
7 |
8 | Usage:
9 | {% include 'product-card-grid', max_height: max_height, product: product, show_vendor: section.settings.show_vendor %}
10 | {% endcomment %}
11 |
12 |
13 | {{ product.title }}
14 |
15 |
16 | {% capture img_id %}ProductCardImage-{{ section.id }}-{{ product.id }}{% endcapture %}
17 | {% capture wrapper_id %}ProductCardImageWrapper-{{ section.id }}-{{ product.id }}{% endcapture %}
18 | {%- assign preview_image = product.featured_media.preview_image -%}
19 | {%- assign img_url = preview_image | img_url: '1x1' | replace: '_1x1.', '_{width}x.' -%}
20 |
21 | {% unless preview_image == blank %}
22 | {% include 'image-style', image: preview_image, height: max_height, wrapper_id: wrapper_id, img_id: img_id %}
23 | {% endunless %}
24 |
25 |
26 |
27 |
28 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | {% capture image_size %}{{ max_height }}x{{ max_height }}{% endcapture %}
43 |
44 |
45 |
46 |
{{ product.title }}
47 |
48 | {% include 'product-price-listing', product: product, show_vendor: show_vendor %}
49 |
50 |
51 |
--------------------------------------------------------------------------------
/theme/snippets/product-card-list.liquid:
--------------------------------------------------------------------------------
1 | {% comment %}
2 | Renders a product card using "List" style
3 |
4 | Accepts:
5 | - product: {Object} Product Liquid object (required)
6 | - show_vendor: {Boolean} Show the product's vendor depending on the section setting (optional)
7 |
8 | Usage:
9 | {% include 'product-card-list', product: product, show_vendor: section.settings.show_vendor %}
10 | {% endcomment %}
11 |
12 |
13 | {{ product.title }}
14 |
15 |
16 |
17 |
18 |
19 | {% unless product.featured_media == null %}
20 |
21 | {% endunless %}
22 |
23 |
24 |
25 |
26 |
27 | {{ product.title }}
28 |
29 | {% if show_vendor %}
30 |
{{ product.vendor }}
31 | {% endif %}
32 |
33 |
34 |
35 | {% include 'product-price-listing', product: product, show_vendor: false %}
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/theme/snippets/product-price-listing.liquid:
--------------------------------------------------------------------------------
1 | {% comment %}
2 | Renders a list of product's price (regular, sale, unit)
3 | Accompanies product listings (collection page, search result) and not updated dynamically
4 | Accepts:
5 | - variant: {Object} Variant Liquid object (optional)
6 | - product: {Object} Product Liquid object (optional)
7 | - show_vendor: {Boolean} Show the product's vendor depending on the section setting (optional)
8 |
9 | Usage:
10 | {% include 'product-price-listing', product: product %}
11 | {% endcomment %}
12 | {%- liquid
13 | if product.title
14 | assign compare_at_price = product.compare_at_price
15 | assign price = product.price
16 | assign available = product.available
17 | assign variant = product.variants.first
18 | else
19 | assign compare_at_price = 1999
20 | assign price = 1999
21 | assign available = true
22 | endif
23 |
24 | assign money_price = price | money
25 | -%}
26 |
27 |
33 | {% if show_vendor and product %}
34 |
35 |
36 | {{ 'products.product.vendor' | t }}
37 |
38 |
39 | {{ product.vendor }}
40 |
41 |
42 | {% endif %}
43 |
44 | {%- comment -%}
45 | Explanation of description list:
46 | - div.price__regular: Displayed when there are no variants on sale
47 | - div.price__sale: Displayed when a variant is a sale
48 | - div.price__unit: Displayed when the first variant has a unit price
49 | - div.price__availability: Displayed when the product is sold out
50 | {%- endcomment -%}
51 |
52 |
53 | {{ 'products.product.regular_price' | t }}
54 |
55 |
56 |
57 | {%- if product.price_varies -%}
58 | {{ 'products.product.from_lowest_price_html' | t: lowest_price: money_price }}
59 | {%- else -%}
60 | {{ money_price }}
61 | {%- endif -%}
62 |
63 |
64 |
65 |
66 |
67 | {{ 'products.product.sale_price' | t }}
68 |
69 |
70 |
71 | {%- if product.price_varies -%}
72 | {{ 'products.product.from_lowest_price_html' | t: lowest_price: money_price }}
73 | {%- else -%}
74 | {{ money_price }}
75 | {%- endif -%}
76 |
77 |
78 |
79 |
80 | {{ 'products.product.regular_price' | t }}
81 |
82 |
83 |
84 | {{ compare_at_price | money }}
85 |
86 |
87 |
88 |
89 |
90 |
91 | {{ 'products.product.unit_price_label' | t }}
92 |
93 |
94 | {%- capture unit_price_separator -%}
95 | / {{ 'general.accessibility.unit_price_separator' | t }}
96 | {%- endcapture -%}
97 | {%- capture unit_price_base_unit -%}
98 |
99 | {%- if variant.unit_price_measurement -%}
100 | {%- if variant.unit_price_measurement.reference_value != 1 -%}
101 | {{- variant.unit_price_measurement.reference_value -}}
102 | {%- endif -%}
103 | {{ variant.unit_price_measurement.reference_unit }}
104 | {%- endif -%}
105 |
106 | {%- endcapture -%}
107 |
108 | {{ variant.unit_price | money }} {{- unit_price_separator -}}{{- unit_price_base_unit -}}
109 |
110 |
111 |
112 |
113 | {{ 'products.product.on_sale' | t }}
114 |
115 |
116 | {{ 'products.product.sold_out' | t }}
117 |
118 |
119 |
120 |
--------------------------------------------------------------------------------
/theme/snippets/product-price.liquid:
--------------------------------------------------------------------------------
1 | {% comment %}
2 | Renders a list of product's price (regular, sale, unit)
3 | Accompanies product forms and meant to be updated dynamically
4 | Accepts:
5 | - variant: {Object} Variant Liquid object (optional)
6 | - product: {Object} Product Liquid object (optional)
7 | - show_vendor: {Boolean} Show the product's vendor depending on the section setting (optional)
8 |
9 | Usage:
10 | {% include 'product-price', variant: current_variant, product: product %}
11 | {% endcomment %}
12 | {%- liquid
13 | if variant.title
14 | assign compare_at_price = variant.compare_at_price
15 | assign price = variant.price
16 | assign available = variant.available
17 | else
18 | assign compare_at_price = 1999
19 | assign price = 1999
20 | assign available = true
21 | endif
22 |
23 | assign money_price = price | money
24 | -%}
25 |
26 |
32 |
33 | {% if show_vendor and product %}
34 |
35 |
36 | {{ 'products.product.vendor' | t }}
37 |
38 |
39 | {{ product.vendor }}
40 |
41 |
42 | {% endif %}
43 |
44 | {%- comment -%}
45 | Explanation of description list:
46 | - div.price__regular: Displayed when there are no variants on sale
47 | - div.price__sale: Displayed when a variant is a sale
48 | - div.price__unit: Displayed when the first variant has a unit price
49 | - div.price__availability: Displayed when the product is sold out
50 | {%- endcomment -%}
51 |
52 |
53 |
54 | {{ 'products.product.regular_price' | t }}
55 |
56 |
57 |
58 | {{ money_price }}
59 |
60 |
61 |
62 |
63 |
64 | {{ 'products.product.sale_price' | t }}
65 |
66 |
67 |
68 | {{ money_price }}
69 |
70 |
71 |
72 | {{ 'products.product.regular_price' | t }}
73 |
74 |
75 |
76 | {{ compare_at_price | money }}
77 |
78 |
79 |
80 |
81 |
82 | {{ 'products.product.on_sale' | t }}
83 |
84 |
85 | {{ 'products.product.sold_out' | t }}
86 |
87 |
88 |
89 |
90 |
91 | {{ 'products.product.unit_price_label' | t }}
92 |
93 |
94 | {%- capture unit_price_separator -%}
95 | / {{ 'general.accessibility.unit_price_separator' | t }}
96 | {%- endcapture -%}
97 | {%- capture unit_price_base_unit -%}
98 |
99 | {%- if variant.unit_price_measurement -%}
100 | {%- if variant.unit_price_measurement.reference_value != 1 -%}
101 | {{- variant.unit_price_measurement.reference_value -}}
102 | {%- endif -%}
103 | {{ variant.unit_price_measurement.reference_unit }}
104 | {%- endif -%}
105 |
106 | {%- endcapture -%}
107 |
108 | {{ variant.unit_price | money }} {{- unit_price_separator -}}{{- unit_price_base_unit -}}
109 |
110 |
111 |
112 |
--------------------------------------------------------------------------------
/theme/snippets/search-drawer.liquid:
--------------------------------------------------------------------------------
1 |
40 |
--------------------------------------------------------------------------------
/theme/snippets/site-nav.liquid:
--------------------------------------------------------------------------------
1 | {% comment %}
2 | Renders a list of menu items
3 | Accepts:
4 | - linklist: {Object} Linklist Liquid object (required)
5 | - wrapper_class: {String} CSS wrapper class for the navigation (optional)
6 |
7 | Usage:
8 | {% include 'site-nav', linklist: section.settings.main_linklist, wrapper_class: 'site-nav--centered' %}
9 | {% endcomment %}
10 |
11 | {% for link in linklists[linklist].links %}
12 | {%- assign child_list_handle = link.title | handleize -%}
13 |
14 | {% comment %}
15 | Check if third-level nav exists on each parent link.
16 | {% endcomment %}
17 | {%- assign three_level_nav = false -%}
18 | {% if link.links != blank %}
19 | {% if link.levels == 2 %}
20 | {%- assign three_level_nav = true -%}
21 | {% endif %}
22 | {% endif %}
23 |
24 | {% if link.links != blank %}
25 |
26 |
27 | {{ link.title | escape }} {% include 'icon-chevron-down' %}
28 |
29 |
30 |
31 | {% if three_level_nav %}
32 |
33 |
34 | {% if link.links != blank %}
35 | {% for childlink in link.links %}
36 |
37 |
41 | {{ childlink.title | escape }}
42 |
43 |
44 | {% if childlink.links != blank %}
45 |
57 | {% endif %}
58 |
59 |
60 | {% endfor %}
61 | {% endif %}
62 |
63 |
64 |
65 | {% else %}
66 |
78 | {% endif %}
79 |
80 |
81 | {% else %}
82 |
83 |
87 | {{ link.title | escape }}
88 |
89 |
90 | {% endif %}
91 | {% endfor %}
92 |
93 |
--------------------------------------------------------------------------------
/theme/snippets/social-meta-tags.liquid:
--------------------------------------------------------------------------------
1 |
2 | {%- assign og_title = page_title -%}
3 | {%- assign og_url = canonical_url -%}
4 | {%- assign og_type = 'website' -%}
5 | {%- assign og_description = page_description | default: shop.description | default: shop.name -%}
6 | {% if settings.share_image %}
7 | {%- capture og_image_tags -%} {%- endcapture -%}
8 | {%- capture og_image_secure_url_tags -%} {%- endcapture -%}
9 | {% endif %}
10 |
11 | {% comment %} Template specific overides {% endcomment %}
12 | {% if request.page_type == 'product' %}
13 | {%- assign og_title = product.title | strip_html -%}
14 | {%- assign og_type = 'product' -%}
15 | {% if product.media.size > 0 %}
16 | {%- capture og_image_tags -%}{% for media in product.media limit:3 -%} {% endfor -%}{% endcapture -%}
17 | {%- capture og_image_secure_url_tags -%}{% for media in product.media limit:3 -%} {% endfor -%}{% endcapture -%}
18 | {% endif %}
19 |
20 | {% elsif request.page_type == 'article' %}
21 | {%- assign og_title = article.title | strip_html -%}
22 | {%- assign og_type = 'article' -%}
23 | {%- assign og_description = article.excerpt_or_content | strip_html -%}
24 | {% if article.image %}
25 | {%- capture og_image_tags -%} {%- endcapture -%}
26 | {%- capture og_image_secure_url_tags -%} {%- endcapture -%}
27 | {% endif %}
28 |
29 | {% elsif request.page_type == 'collection' %}
30 | {%- assign og_title = collection.title | strip_html -%}
31 | {%- assign og_type = 'product.group' -%}
32 | {% if collection.image %}
33 | {%- capture og_image_tags -%} {%- endcapture -%}
34 | {%- capture og_image_secure_url_tags -%} {%- endcapture -%}
35 | {% endif %}
36 |
37 | {% elsif request.page_type == 'password' %}
38 | {%- assign og_title = shop.name -%}
39 | {%- assign og_url = shop.url -%}
40 | {%- assign og_description = shop.description | default: shop.name -%}
41 | {% endif %}
42 |
43 |
44 |
45 |
46 |
47 |
48 | {% if request.page_type == 'product' %}
49 |
50 |
51 | {% endif %}
52 | {{ og_image_tags }}
53 | {{ og_image_secure_url_tags }}
54 |
55 | {% unless settings.social_twitter_link == blank %}
56 |
57 | {% endunless %}
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/theme/snippets/social-sharing.liquid:
--------------------------------------------------------------------------------
1 |
2 |
35 |
--------------------------------------------------------------------------------
/theme/templates/404.liquid:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{ 'general.404.title' | t }}
4 |
{{ 'general.404.subtext' | t }}
5 |
6 | {{ 'general.404.link' | t }}{% include 'icon-arrow-right' %}
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/theme/templates/article.liquid:
--------------------------------------------------------------------------------
1 | {%- comment -%}
2 | Comments may not appear right after they are submitted, either to be checked by Shopify's spam filter
3 | or to await moderation. When a comment is submitted, the browser is redirected to a page
4 | that includes the new comment id in its URL.
5 | Example: http://shopname.myshopify.com/blogs/news/2022072-my-post?comment=3721372
6 | {%- endcomment -%}
7 |
8 | {%- if comment.status == 'pending' -%}
9 | {%- assign number_of_comments = article.comments_count | plus: 1 -%}
10 | {%- else -%}
11 | {%- assign number_of_comments = article.comments_count -%}
12 | {%- endif -%}
13 |
14 |
15 |
16 |
17 | {% section 'article-template' %}
18 |
19 |
20 |
21 |
22 | {% if blog.comments_enabled? %}
23 | {% if number_of_comments > 0 %}
24 |
25 |
26 |
27 |
28 |
{{ 'blogs.comments.comments_with_count' | t: count: number_of_comments }}
29 |
30 | {% paginate article.comments by 5 %}
31 |
32 | {% comment %}
33 | #comments is required, it is used as an anchor link by Shopify.
34 | {% endcomment %}
35 |
58 | {% endpaginate %}
59 |
60 |
61 |
62 | {% endif %}
63 |
64 |
65 |
134 | {% endif %}
135 |
136 |
142 |
143 |
183 |
--------------------------------------------------------------------------------
/theme/templates/blog.liquid:
--------------------------------------------------------------------------------
1 | {% comment %}
2 | The contents of the blog.liquid template can be found in /sections/blog-template.liquid
3 | {% endcomment %}
4 |
5 | {% section 'blog-template' %}
6 |
--------------------------------------------------------------------------------
/theme/templates/cart.liquid:
--------------------------------------------------------------------------------
1 | {% comment %}
2 | The contents of the cart.liquid template can be found in /sections/cart-template.liquid
3 | {% endcomment %}
4 |
5 | {% section 'cart-template' %}
6 |
7 |
--------------------------------------------------------------------------------
/theme/templates/collection.liquid:
--------------------------------------------------------------------------------
1 | {% comment %}
2 | The contents of the collection.liquid template can be found in /sections/collection-template.liquid
3 | {% endcomment %}
4 |
5 | {% section 'collection-template' %}
6 |
--------------------------------------------------------------------------------
/theme/templates/customers/account.liquid:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
{{ 'customer.orders.title' | t }}
10 |
11 | {% paginate customer.orders by 20 %}
12 | {% if customer.orders.size != 0 %}
13 |
14 |
15 |
16 |
17 | {{ 'customer.orders.order_number' | t }}
18 | {{ 'customer.orders.date' | t }}
19 | {{ 'customer.orders.payment_status' | t }}
20 | {{ 'customer.orders.fulfillment_status' | t }}
21 | {{ 'customer.orders.total' | t }}
22 |
23 |
24 |
25 | {% for order in customer.orders %}
26 |
27 |
28 | {{ order.name }}
29 |
30 | {{ order.created_at | time_tag: format: 'date' }}
31 | {{ order.financial_status_label }}
32 | {{ order.fulfillment_status_label }}
33 | {{ order.total_price | money }}
34 |
35 | {% endfor %}
36 |
37 |
38 |
39 | {% else %}
40 |
41 |
{{ 'customer.orders.none' | t }}
42 |
43 | {% endif %}
44 | {%- if paginate.pages > 1 -%}
45 | {% include 'pagination', paginate: paginate %}
46 | {%- endif -%}
47 | {% endpaginate %}
48 |
49 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/theme/templates/customers/activate_account.liquid:
--------------------------------------------------------------------------------
1 |
31 |
--------------------------------------------------------------------------------
/theme/templates/customers/addresses.liquid:
--------------------------------------------------------------------------------
1 | {% paginate customer.addresses by 5 %}
2 |
3 |
4 |
11 |
12 |
13 |
14 |
15 |
16 | {% comment %}
17 | Add address form, hidden by default
18 | {% endcomment %}
19 |
80 |
81 | {% comment %}
82 | List all customer addresses with a unique edit form.
83 | Also add pagination in case they have a large number of addresses
84 | {% endcomment %}
85 |
86 | {% for address in customer.addresses %}
87 |
88 |
89 | {% if address == customer.default_address %}
90 |
{{ 'customer.addresses.default' | t }}
91 | {% endif %}
92 |
93 | {{ address | format_address }}
94 |
95 |
96 |
97 |
105 | {{ 'customer.addresses.edit' | t }}
106 |
107 |
108 |
109 |
115 | {{ 'customer.addresses.delete' | t }}
116 |
117 |
118 |
119 |
120 |
121 |
186 |
187 | {% endfor %}
188 |
189 |
190 | {%- if paginate.pages > 1 -%}
191 | {% include 'pagination', paginate: paginate %}
192 | {%- endif -%}
193 |
194 |
195 |
196 |
197 | {% endpaginate %}
198 |
--------------------------------------------------------------------------------
/theme/templates/customers/login.liquid:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{ 'customer.recover_password.success' | t }}
7 |
8 |
9 |
64 |
65 |
115 |
116 | {% comment %}
117 | If accounts are set as optional, the following will be shown as an option
118 | during checkout, not on the default /login page.
119 | {% endcomment %}
120 | {% if shop.checkout.guest_login %}
121 |
122 |
123 | {{ 'customer.login.guest_title' | t }}
124 |
125 | {% form 'guest_login' %}
126 |
127 | {% endform %}
128 |
129 | {% endif %}
130 |
131 |
132 |
133 |
134 |
--------------------------------------------------------------------------------
/theme/templates/customers/order.liquid:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
{{ 'customer.order.title' | t: name: order.name }}
10 |
11 | {%- assign order_date = order.created_at | time_tag: format: "date_at_time" -%}
12 |
{{ 'customer.order.date_html' | t: date: order_date }}
13 |
14 | {%- if order.cancelled -%}
15 |
16 | {%- assign cancelled_at = order.cancelled_at | time_tag: format: "date_at_time" -%}
17 |
{{ 'customer.order.cancelled_html' | t: date: cancelled_at }}
18 |
{{ 'customer.order.cancelled_reason' | t: reason: order.cancel_reason_label }}
19 |
20 | {%- endif -%}
21 |
22 |
23 |
24 |
25 | {{ 'customer.order.product' | t }}
26 | {{ 'customer.order.sku' | t }}
27 | {{ 'customer.order.price' | t }}
28 | {{ 'customer.order.quantity' | t }}
29 | {{ 'customer.order.total' | t }}
30 |
31 |
32 |
33 | {%- for line_item in order.line_items -%}
34 |
35 |
36 |
37 | {{ line_item.title | link_to: line_item.product.url }}
38 | {%- if line_item.line_level_discount_allocations != blank -%}
39 |
40 | {%- for discount_allocation in line_item.line_level_discount_allocations -%}
41 |
42 | {% include 'icon-saletag' %}{{ discount_allocation.discount_application.title }} (-{{ discount_allocation.amount | money }})
43 |
44 | {%- endfor -%}
45 |
46 | {%- endif -%}
47 |
48 | {%- if line_item.fulfillment -%}
49 |
50 | {%- assign created_at = line_item.fulfillment.created_at | time_tag: format: 'date' -%}
51 | {{ 'customer.order.fulfilled_at_html' | t: date: created_at }}
52 |
53 | {%- if line_item.fulfillment.tracking_url -%}
54 |
55 | {{ 'customer.order.track_shipment' | t }}
56 |
57 | {%- endif -%}
58 |
59 | {{ line_item.fulfillment.tracking_company }}
60 | {%- if line_item.fulfillment.tracking_number -%} #{{ line_item.fulfillment.tracking_number }} {%- endif -%}
61 |
62 |
63 |
64 | {%- endif -%}
65 |
66 | {{ line_item.sku }}
67 |
68 |
69 | {%- if line_item.original_price != line_item.final_price -%}
70 |
71 | {{ 'products.product.regular_price' | t }}
72 |
73 |
74 | {{ line_item.original_price | money }}
75 |
76 |
77 | {{ 'products.product.sale_price' | t }}
78 |
79 |
80 | {{ line_item.final_price | money }}
81 |
82 | {%- else -%}
83 |
84 | {{ 'products.product.regular_price' | t }}
85 |
86 |
87 | {{ line_item.original_price | money }}
88 |
89 | {%- endif -%}
90 |
91 | {%- if line_item.unit_price_measurement -%}
92 |
93 | {{ 'products.product.unit_price_label' | t }}
94 |
95 |
96 |
97 | {%- capture unit_price_separator -%}
98 | / {{ 'general.accessibility.unit_price_separator' | t }}
99 | {%- endcapture -%}
100 | {%- capture unit_price_base_unit -%}
101 | {%- if line_item.unit_price_measurement.reference_value != 1 -%}
102 | {{- line_item.unit_price_measurement.reference_value -}}
103 | {%- endif -%}
104 | {{ line_item.unit_price_measurement.reference_unit }}
105 | {%- endcapture -%}
106 |
107 | {{ line_item.unit_price | money }} {{- unit_price_separator -}}{{- unit_price_base_unit -}}
108 |
109 |
110 | {%- endif -%}
111 |
112 |
113 | {{ line_item.quantity }}
114 |
115 | {%- if line_item.original_line_price != line_item.final_line_price -%}
116 |
117 |
118 | {{ 'products.product.regular_price' | t }}
119 |
120 |
121 | {{ line_item.original_line_price | money }}
122 |
123 |
124 | {{ 'products.product.sale_price' | t }}
125 |
126 |
127 | {{ line_item.final_line_price | money }}
128 |
129 |
130 | {%- else -%}
131 | {{ line_item.original_line_price | money }}
132 | {%- endif -%}
133 |
134 |
135 | {%- endfor -%}
136 |
137 |
138 |
139 | {{ 'customer.order.subtotal' | t }}
140 | {{ order.line_items_subtotal_price | money }}
141 |
142 |
143 | {%- if order.cart_level_discount_applications != blank -%}
144 |
145 | {%- for discount_application in order.cart_level_discount_applications -%}
146 |
147 | {{ 'customer.order.discount' | t }}
148 |
149 | {% include 'icon-saletag' %}{{- discount_application.title -}}
150 |
151 |
152 |
153 |
154 |
155 | {% include 'icon-saletag' %}{{- discount_application.title -}}
156 |
157 | -{{ discount_application.total_allocated_amount | money }}
158 |
159 |
160 | {%- endfor -%}
161 |
162 | {%- endif -%}
163 |
164 | {%- for shipping_method in order.shipping_methods -%}
165 |
166 | {{ 'customer.order.shipping' | t }} ({{ shipping_method.title }})
167 | {{ shipping_method.price | money }}
168 |
169 | {%- endfor -%}
170 |
171 | {%- for tax_line in order.tax_lines -%}
172 |
173 | {{ 'customer.order.tax' | t }} ({{ tax_line.title }} {{ tax_line.rate | times: 100 }}%)
174 | {{ tax_line.price | money }}
175 |
176 | {%- endfor -%}
177 |
178 |
179 | {{ 'customer.order.total' | t }}
180 | {{ order.total_price | money_with_currency }}
181 |
182 |
183 |
184 |
185 |
186 |
{{ 'customer.order.billing_address' | t }}
187 |
188 |
{{ 'customer.order.payment_status' | t }}: {{ order.financial_status_label }}
189 |
190 | {{ order.billing_address | format_address }}
191 |
192 |
{{ 'customer.order.shipping_address' | t }}
193 |
194 |
{{ 'customer.order.fulfillment_status' | t }}: {{ order.fulfillment_status_label }}
195 |
196 | {{ order.shipping_address | format_address }}
197 |
198 |
199 |
200 |
--------------------------------------------------------------------------------
/theme/templates/customers/register.liquid:
--------------------------------------------------------------------------------
1 |
73 |
--------------------------------------------------------------------------------
/theme/templates/customers/reset_password.liquid:
--------------------------------------------------------------------------------
1 |
32 |
--------------------------------------------------------------------------------
/theme/templates/gift_card.liquid:
--------------------------------------------------------------------------------
1 | {% layout 'gift_card' %}
2 |
3 | {%- assign formatted_initial_value = gift_card.initial_value | money_without_trailing_zeros: gift_card.currency -%}
4 | {%- assign formatted_initial_value_stripped = formatted_initial_value | strip_html -%}
5 |
6 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | {%- assign initial_value_size = formatted_initial_value | size -%}
30 |
31 | {% if gift_card.balance != gift_card.initial_value %}
32 |
33 | {{ 'gift_cards.issued.remaining_html' | t: balance: gift_card.balance | money }}
34 |
35 | {% endif %}
36 | {{ formatted_initial_value }}
37 |
38 |
39 | {%- assign code_size = gift_card.code | format_code | size -%}
40 |
50 |
51 |
52 |
53 | {{ 'gift_cards.issued.redeem_html' | t: value: formatted_initial_value_stripped }}
54 |
55 |
56 |
57 |
58 |
59 |
60 |
65 | {{ 'gift_cards.issued.shop_link' | t }}
66 | {% include 'icon-arrow-right' %}
67 |
68 |
69 |
70 |
71 | {{ 'gift_cards.issued.print' | t }}
72 |
73 |
74 | {% if gift_card.pass_url %}
75 |
76 |
77 |
78 |
79 |
80 | {% endif %}
81 |
82 |
83 |
84 |
--------------------------------------------------------------------------------
/theme/templates/index.liquid:
--------------------------------------------------------------------------------
1 | {{ content_for_index }}
2 |
--------------------------------------------------------------------------------
/theme/templates/list-collections.liquid:
--------------------------------------------------------------------------------
1 | {% comment %}
2 | The contents of the lists-collections.liquid template can be found in /sections/lists-collections-template.liquid
3 | {% endcomment %}
4 |
5 | {% section 'list-collections-template' %}
6 |
--------------------------------------------------------------------------------
/theme/templates/page.contact.liquid:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 | {% if page.content.size > 0 %}
9 |
10 | {{ page.content }}
11 |
12 | {% endif %}
13 |
14 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/theme/templates/page.liquid:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 | {{ page.content }}
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/theme/templates/password.liquid:
--------------------------------------------------------------------------------
1 | {% layout 'password' %}
2 |
3 | {% comment %}
4 | The contents of the password.liquid templates can be found in /sections
5 | {% endcomment %}
6 |
7 | {% section 'password-header' %}
8 | {% section 'password-content' %}
9 | {% section 'password-footer' %}
10 |
--------------------------------------------------------------------------------
/theme/templates/product.liquid:
--------------------------------------------------------------------------------
1 | {% comment %}
2 | The contents of the product.liquid template can be found in /sections/product-template.liquid
3 | {% endcomment %}
4 |
5 | {% section 'product-template' %}
6 | {% section 'product-recommendations' %}
7 |
8 | {% if collection %}
9 |
15 | {% endif %}
16 |
17 |
27 |
28 | {% assign current_variant = product.selected_or_first_available_variant %}
29 |
30 |
66 |
--------------------------------------------------------------------------------
/theme/templates/search.liquid:
--------------------------------------------------------------------------------
1 | {% paginate search.results by 10 %}
2 |
3 |
4 | {% if search.performed == false %}
5 |
6 |
{{ 'general.search.title' | t }}
7 | {% else %}
8 |
9 |
10 | {{ 'general.search.heading' | t: count: search.results_count }}:
11 | {{ 'general.search.results_with_count' | t: terms: search.terms, count: search.results_count }}
12 |
13 | {% endif %}
14 |
15 |
16 | {% if search.performed and search.results_count == 0 %}
17 |
18 |
{{ 'general.search.no_results' | t }}
19 |
20 | {% endif %}
21 |
53 |
54 |
55 |
56 |
57 |
58 |
59 | {% if search.performed %}
60 | {% if search.results_count > 0 %}
61 |
62 | {% endif %}
63 |
64 |
{{ 'general.search.heading' | t: count: search.results_count }}
65 |
66 |
67 | {% for item in search.results %}
68 |
69 | {% if item.object_type == 'product' %}
70 | {% include 'product-card-list', product: item %}
71 | {% else %}
72 |
73 |
74 | {{ item.title }}
75 |
76 |
77 |
78 |
79 | {% unless item.image == null %}
80 |
81 | {% endunless %}
82 |
83 |
84 |
85 |
86 |
87 | {{ item.title }}
88 |
89 |
90 | {% if item.published_at %}{{ item.published_at | date: format: "date" }} — {% endif %}
91 | {{ item.content | strip_html | truncate: 200 }}
92 |
93 |
94 |
95 |
96 | {% endif %}
97 |
98 | {% endfor %}
99 |
100 |
101 | {%- if paginate.pages > 1 -%}
102 | {% include 'pagination', paginate: paginate %}
103 | {%- endif -%}
104 | {% endif %}
105 |
106 | {% if search.results_count < 2 %}
107 |
108 | {% endif %}
109 |
110 | {% endpaginate %}
111 |
--------------------------------------------------------------------------------
37 | {% comment %} 38 | If a comment was just submitted with no blank field, show it. 39 | {% endcomment %} 40 | {% if comment.status == 'pending' %} 41 |-
42 | {% include 'comment', comment: comment %}
43 |
44 | {% endif %}
45 |
46 | {% for comment in article.comments %}
47 | -
48 | {% include 'comment', comment: comment %}
49 |
50 | {% endfor %}
51 |
52 | 53 | {%- if paginate.pages > 1 -%} 54 | {% include 'pagination', paginate: paginate %} 55 | {%- endif -%} 56 | 57 |