From ec57c3ff897f9dd4e6ddde29d6a4e45dc027b3b4 Mon Sep 17 00:00:00 2001 From: Thomas Kelly Date: Thu, 27 Mar 2025 15:14:28 -0400 Subject: [PATCH 1/2] refactor: PDP built with theme blocks --- .gitignore | 1 + .../setup/sections/block-buy-buttons.liquid | 35 ----- .../templates/product.block-buy-buttons.json | 17 --- .../setup/sections/block-price.liquid | 22 --- .../setup/templates/product.block-price.json | 14 -- .../block-product-description.liquid | 18 --- .../setup/sections/block-description.liquid | 22 --- .../templates/product.block-description.json | 14 -- .../setup/sections/block-title.liquid | 45 ------- .../setup/templates/product.block-title.json | 18 --- .../assets/component.block-variant-picker.css | 4 - .../sections/block-variant-picker.liquid | 39 ------ .../product.block-variant-picker.json | 22 --- .../assets/product.block.buy-buttons.css} | 0 .../assets/product.block.buy-buttons.js} | 0 .../product.block.buy-buttons.liquid} | 14 +- .../setup/sections/block-buy-buttons.liquid | 5 + .../templates/product.block-buy-buttons.json | 8 ++ .../test/block-buy-buttons.spec.js | 0 .../product.block.description.liquid} | 4 +- .../setup/sections/block-description.liquid | 1 + .../templates/product.block-description.json | 8 ++ .../assets/product.block.media-gallery.css} | 0 .../assets/product.block.media-gallery.js} | 0 .../product.block.media-gallery.liquid} | 4 +- .../assets/product.block.price.css} | 0 .../assets/product.block.price.js} | 0 .../product.block.price.liquid} | 8 +- .../setup/sections/block-price.liquid | 1 + .../setup/templates/product.block-price.json | 8 ++ .../setup/test/block-price.spec.js | 0 .../assets/product.block.title.css} | 0 .../assets/product.block.title.sku.js} | 0 .../product.block.title.liquid} | 8 +- .../setup/sections/block-title.liquid | 13 ++ .../setup/templates/product.block-title.json | 8 ++ .../snippets/product.block.title.sku.liquid} | 2 +- .../test/block-title.spec.js | 0 .../assets/product.block.variant-picker.css} | 5 + .../assets/product.block.variant-picker.js} | 0 .../product.block.variant-picker.liquid} | 15 +-- .../block-variant-picker-dropdown.liquid | 1 + .../sections/block-variant-picker.liquid | 1 + .../product.block-variant-picker.json | 12 ++ ...roduct.block.variant-picker.button.liquid} | 2 +- ...duct.block.variant-picker.dropdown.liquid} | 0 .../test/block-variant-picker.spec.js | 0 .../assets/component.section-main-product.css | 0 .../product.section.main.liquid} | 13 +- .../setup/blocks/_product-buy-buttons.liquid | 17 +++ .../setup/blocks/_product-description.liquid | 7 + .../setup/blocks/_product-price.liquid | 7 + .../setup/blocks/_product-title.liquid | 20 +++ .../blocks/_product-variant-picker.liquid | 25 ++++ .../setup/sections/main-product.liquid | 47 +++++++ .../product.section-main-product.json | 0 .../setup/sections/main-product.liquid | 126 ------------------ .../setup/sections/variant-button.liquid | 11 -- .../templates/product.variant-button.json | 8 -- .../setup/sections/variant-dropdown.liquid | 11 -- .../templates/product.variant-dropdown.json | 8 -- .../setup/sections/variant-sku.liquid | 7 - .../setup/templates/product.variant-sku.json | 8 -- 63 files changed, 223 insertions(+), 491 deletions(-) delete mode 100644 components/block-buy-buttons/setup/sections/block-buy-buttons.liquid delete mode 100644 components/block-buy-buttons/setup/templates/product.block-buy-buttons.json delete mode 100644 components/block-price/setup/sections/block-price.liquid delete mode 100644 components/block-price/setup/templates/product.block-price.json delete mode 100644 components/block-product-description/block-product-description.liquid delete mode 100644 components/block-product-description/setup/sections/block-description.liquid delete mode 100644 components/block-product-description/setup/templates/product.block-description.json delete mode 100644 components/block-title/setup/sections/block-title.liquid delete mode 100644 components/block-title/setup/templates/product.block-title.json delete mode 100644 components/block-variant-picker/assets/component.block-variant-picker.css delete mode 100644 components/block-variant-picker/setup/sections/block-variant-picker.liquid delete mode 100644 components/block-variant-picker/setup/templates/product.block-variant-picker.json rename components/{block-buy-buttons/assets/component.block-buy-buttons.css => product.block.buy-buttons/assets/product.block.buy-buttons.css} (100%) rename components/{block-buy-buttons/assets/component.block-buy-buttons.js => product.block.buy-buttons/assets/product.block.buy-buttons.js} (100%) rename components/{block-buy-buttons/block-buy-buttons.liquid => product.block.buy-buttons/product.block.buy-buttons.liquid} (90%) create mode 100644 components/product.block.buy-buttons/setup/sections/block-buy-buttons.liquid create mode 100644 components/product.block.buy-buttons/setup/templates/product.block-buy-buttons.json rename components/{block-buy-buttons => product.block.buy-buttons}/test/block-buy-buttons.spec.js (100%) rename components/{product-description/product-description.liquid => product.block.description/product.block.description.liquid} (80%) create mode 100644 components/product.block.description/setup/sections/block-description.liquid create mode 100644 components/product.block.description/setup/templates/product.block-description.json rename components/{product-media-gallery/assets/component.product-media-gallery.css => product.block.media-gallery/assets/product.block.media-gallery.css} (100%) rename components/{product-media-gallery/assets/component.product-media-gallery.js => product.block.media-gallery/assets/product.block.media-gallery.js} (100%) rename components/{product-media-gallery/product-media-gallery.liquid => product.block.media-gallery/product.block.media-gallery.liquid} (91%) rename components/{block-price/assets/component.block-price.css => product.block.price/assets/product.block.price.css} (100%) rename components/{block-price/assets/component.block-price.js => product.block.price/assets/product.block.price.js} (100%) rename components/{block-price/block-price.liquid => product.block.price/product.block.price.liquid} (95%) create mode 100644 components/product.block.price/setup/sections/block-price.liquid create mode 100644 components/product.block.price/setup/templates/product.block-price.json rename components/{block-price => product.block.price}/setup/test/block-price.spec.js (100%) rename components/{block-title/assets/component.block-title.css => product.block.title/assets/product.block.title.css} (100%) rename components/{variant-sku/assets/component.variant-sku.js => product.block.title/assets/product.block.title.sku.js} (100%) rename components/{block-title/block-title.liquid => product.block.title/product.block.title.liquid} (84%) create mode 100644 components/product.block.title/setup/sections/block-title.liquid create mode 100644 components/product.block.title/setup/templates/product.block-title.json rename components/{variant-sku/variant-sku.liquid => product.block.title/snippets/product.block.title.sku.liquid} (92%) rename components/{block-title => product.block.title}/test/block-title.spec.js (100%) rename components/{variant-button/assets/component.variant-button.css => product.block.variant-picker/assets/product.block.variant-picker.css} (95%) rename components/{block-variant-picker/assets/component.block-variant-picker.js => product.block.variant-picker/assets/product.block.variant-picker.js} (100%) rename components/{block-variant-picker/block-variant-picker.liquid => product.block.variant-picker/product.block.variant-picker.liquid} (65%) create mode 100644 components/product.block.variant-picker/setup/sections/block-variant-picker-dropdown.liquid create mode 100644 components/product.block.variant-picker/setup/sections/block-variant-picker.liquid create mode 100644 components/product.block.variant-picker/setup/templates/product.block-variant-picker.json rename components/{variant-button/variant-button.liquid => product.block.variant-picker/snippets/product.block.variant-picker.button.liquid} (96%) rename components/{variant-dropdown/variant-dropdown.liquid => product.block.variant-picker/snippets/product.block.variant-picker.dropdown.liquid} (100%) rename components/{block-variant-picker => product.block.variant-picker}/test/block-variant-picker.spec.js (100%) rename components/{section-main-product => product.section.main}/assets/component.section-main-product.css (100%) rename components/{section-main-product/section-main-product.liquid => product.section.main/product.section.main.liquid} (74%) create mode 100644 components/product.section.main/setup/blocks/_product-buy-buttons.liquid create mode 100644 components/product.section.main/setup/blocks/_product-description.liquid create mode 100644 components/product.section.main/setup/blocks/_product-price.liquid create mode 100644 components/product.section.main/setup/blocks/_product-title.liquid create mode 100644 components/product.section.main/setup/blocks/_product-variant-picker.liquid create mode 100644 components/product.section.main/setup/sections/main-product.liquid rename components/{section-main-product => product.section.main}/setup/templates/product.section-main-product.json (100%) delete mode 100644 components/section-main-product/setup/sections/main-product.liquid delete mode 100644 components/variant-button/setup/sections/variant-button.liquid delete mode 100644 components/variant-button/setup/templates/product.variant-button.json delete mode 100644 components/variant-dropdown/setup/sections/variant-dropdown.liquid delete mode 100644 components/variant-dropdown/setup/templates/product.variant-dropdown.json delete mode 100644 components/variant-sku/setup/sections/variant-sku.liquid delete mode 100644 components/variant-sku/setup/templates/product.variant-sku.json diff --git a/.gitignore b/.gitignore index 9cc677c..3d8d777 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ test-results #IntelliJ IDE .idea +.shopify diff --git a/components/block-buy-buttons/setup/sections/block-buy-buttons.liquid b/components/block-buy-buttons/setup/sections/block-buy-buttons.liquid deleted file mode 100644 index cfd5947..0000000 --- a/components/block-buy-buttons/setup/sections/block-buy-buttons.liquid +++ /dev/null @@ -1,35 +0,0 @@ -{%- liquid - for block in section.blocks - case block.type - when 'buy_buttons' - render 'block-buy-buttons', block: block - endcase - endfor --%} - - - -{% schema %} -{ - "name": "t:labels.product", - "settings": [], - "blocks": [ - { - "type": "buy_buttons", - "name": "t:labels.buy_buttons", - "limit": 1, - "settings": [ - { - "type": "checkbox", - "id": "show_dynamic_checkout", - "label": "t:actions.show_dynamic_checkout", - "info": "t:info.lets_customers_checkout_familiar", - "default": true - } - ] - } - ] -} -{% endschema %} diff --git a/components/block-buy-buttons/setup/templates/product.block-buy-buttons.json b/components/block-buy-buttons/setup/templates/product.block-buy-buttons.json deleted file mode 100644 index a32c022..0000000 --- a/components/block-buy-buttons/setup/templates/product.block-buy-buttons.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "sections": { - "block_buy_buttons": { - "type": "block-buy-buttons", - "blocks": { - "buy_buttons_1": { - "type": "buy_buttons", - "settings": { - "show_dynamic_checkout": true - } - } - }, - "block_order": ["buy_buttons_1"] - } - }, - "order": ["block_buy_buttons"] -} diff --git a/components/block-price/setup/sections/block-price.liquid b/components/block-price/setup/sections/block-price.liquid deleted file mode 100644 index 78b2ee2..0000000 --- a/components/block-price/setup/sections/block-price.liquid +++ /dev/null @@ -1,22 +0,0 @@ -{%- liquid - for block in section.blocks - case block.type - when 'price' - render 'block-price', block: block - endcase - endfor --%} - -{% schema %} -{ - "name": "t:labels.product", - "settings": [], - "blocks": [ - { - "type": "price", - "name": "t:labels.price", - "limit": 1 - } - ] -} -{% endschema %} diff --git a/components/block-price/setup/templates/product.block-price.json b/components/block-price/setup/templates/product.block-price.json deleted file mode 100644 index e71c218..0000000 --- a/components/block-price/setup/templates/product.block-price.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "sections": { - "block_price": { - "type": "block-price", - "blocks": { - "price_1": { - "type": "price" - } - }, - "block_order": ["price_1"] - } - }, - "order": ["block_price"] -} diff --git a/components/block-product-description/block-product-description.liquid b/components/block-product-description/block-product-description.liquid deleted file mode 100644 index 30af0ba..0000000 --- a/components/block-product-description/block-product-description.liquid +++ /dev/null @@ -1,18 +0,0 @@ -{%- comment -%} - Renders the product description - - Accepts: - - block {block} - Block object - - product {product} - Product object - - Usage: - {% render 'block-product-description', block: block %} -{%- endcomment -%} - -{% liquid - assign product = product | default: section.settings.product -%} - -
- {%- render 'product-description', product: product -%} -
diff --git a/components/block-product-description/setup/sections/block-description.liquid b/components/block-product-description/setup/sections/block-description.liquid deleted file mode 100644 index 440bc62..0000000 --- a/components/block-product-description/setup/sections/block-description.liquid +++ /dev/null @@ -1,22 +0,0 @@ -{%- liquid - for block in section.blocks - case block.type - when 'description' - render 'block-product-description', block: block - endcase - endfor --%} - -{% schema %} -{ - "name": "t:labels.product", - "settings": [], - "blocks": [ - { - "type": "description", - "name": "t:labels.description", - "settings": [] - } - ] -} -{% endschema %} diff --git a/components/block-product-description/setup/templates/product.block-description.json b/components/block-product-description/setup/templates/product.block-description.json deleted file mode 100644 index 73d4ea0..0000000 --- a/components/block-product-description/setup/templates/product.block-description.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "sections": { - "block_description": { - "type": "block-description", - "blocks": { - "description_1": { - "type": "description" - } - }, - "block_order": ["description_1"] - } - }, - "order": ["block_description"] -} diff --git a/components/block-title/setup/sections/block-title.liquid b/components/block-title/setup/sections/block-title.liquid deleted file mode 100644 index 44ec8d7..0000000 --- a/components/block-title/setup/sections/block-title.liquid +++ /dev/null @@ -1,45 +0,0 @@ -{%- liquid - assign current_variant = product.selected_or_first_available_variant - for block in section.blocks - case block.type - when 'title' - render 'block-title', block: block - endcase - endfor --%} - - - -{% schema %} -{ - "name": "t:labels.product", - "settings": [], - "blocks": [ - { - "type": "title", - "name": "t:labels.title", - "limit": 1, - "settings": [ - { - "type": "checkbox", - "id": "vendor_enable", - "label": "t:actions.show_vendor" - }, - { - "type": "checkbox", - "id": "sku_enable", - "label": "t:actions.show_sku" - } - ] - } - ] -} -{% endschema %} diff --git a/components/block-title/setup/templates/product.block-title.json b/components/block-title/setup/templates/product.block-title.json deleted file mode 100644 index ada8baa..0000000 --- a/components/block-title/setup/templates/product.block-title.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "sections": { - "block_title": { - "type": "block-title", - "blocks": { - "title_1": { - "type": "title", - "settings": { - "vendor_enable": true, - "sku_enable": true - } - } - }, - "block_order": ["title_1"] - } - }, - "order": ["block_title"] -} diff --git a/components/block-variant-picker/assets/component.block-variant-picker.css b/components/block-variant-picker/assets/component.block-variant-picker.css deleted file mode 100644 index 6a0bc97..0000000 --- a/components/block-variant-picker/assets/component.block-variant-picker.css +++ /dev/null @@ -1,4 +0,0 @@ -.block-variant-picker { - display: grid; - gap: var(--size-6); -} diff --git a/components/block-variant-picker/setup/sections/block-variant-picker.liquid b/components/block-variant-picker/setup/sections/block-variant-picker.liquid deleted file mode 100644 index 61ef341..0000000 --- a/components/block-variant-picker/setup/sections/block-variant-picker.liquid +++ /dev/null @@ -1,39 +0,0 @@ -{%- liquid - for block in section.blocks - case block.type - when 'variant_picker' - render 'block-variant-picker', block: block - endcase - endfor --%} - -{% schema %} -{ - "name": "t:labels.product", - "settings": [], - "blocks": [ - { - "type": "variant_picker", - "name": "Variant picker", - "settings": [ - { - "type": "select", - "id": "picker_type", - "label": "t:labels.type", - "options": [ - { - "value": "button", - "label": "t:labels.buttons" - }, - { - "value": "dropdown", - "label": "t:labels.dropdown" - } - ], - "default": "button" - } - ] - } - ] -} -{% endschema %} diff --git a/components/block-variant-picker/setup/templates/product.block-variant-picker.json b/components/block-variant-picker/setup/templates/product.block-variant-picker.json deleted file mode 100644 index 7b01501..0000000 --- a/components/block-variant-picker/setup/templates/product.block-variant-picker.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "sections": { - "variant_picker": { - "type": "block-variant-picker", - "blocks": { - "variant_picker_1": { - "type": "variant_picker", - "settings": {} - }, - "variant_picker_2": { - "type": "variant_picker", - "disabled": true, - "settings": { - "picker_type": "dropdown" - } - } - }, - "block_order": ["variant_picker_1", "variant_picker_2"] - } - }, - "order": ["variant_picker"] -} diff --git a/components/block-buy-buttons/assets/component.block-buy-buttons.css b/components/product.block.buy-buttons/assets/product.block.buy-buttons.css similarity index 100% rename from components/block-buy-buttons/assets/component.block-buy-buttons.css rename to components/product.block.buy-buttons/assets/product.block.buy-buttons.css diff --git a/components/block-buy-buttons/assets/component.block-buy-buttons.js b/components/product.block.buy-buttons/assets/product.block.buy-buttons.js similarity index 100% rename from components/block-buy-buttons/assets/component.block-buy-buttons.js rename to components/product.block.buy-buttons/assets/product.block.buy-buttons.js diff --git a/components/block-buy-buttons/block-buy-buttons.liquid b/components/product.block.buy-buttons/product.block.buy-buttons.liquid similarity index 90% rename from components/block-buy-buttons/block-buy-buttons.liquid rename to components/product.block.buy-buttons/product.block.buy-buttons.liquid index ce91338..c140f97 100644 --- a/components/block-buy-buttons/block-buy-buttons.liquid +++ b/components/product.block.buy-buttons/product.block.buy-buttons.liquid @@ -6,19 +6,14 @@ - product {product} - Product object Usage: - {% render 'block-buy-buttons', block: block %} + {% render 'product.block.buy-buttons' %} {% endcomment %} -{% render 'stylesheet', name: 'component.block-buy-buttons.css' %} +{% render 'stylesheet', name: 'product.block.buy-buttons.css' %} {%- liquid assign form_id = 'product-form-' | append: section.id - - assign show_dynamic_checkout = false - - if block.settings.show_dynamic_checkout - assign show_dynamic_checkout = true - endif + assign show_dynamic_checkout = show_dynamic_checkout | default: block.settings.show_dynamic_checkout, allow_false: true | default: false assign check_against_inventory = true assign quantity_rule_soldout = false @@ -38,7 +33,6 @@ {% if show_dynamic_checkout %} data-show-dynamic-checkout="" {% endif %} - {{ block.shopify_attributes }} >