- Add product loaders (product-loader.js, products-list-loader.js) to fetch data from Shopify - Extend Shopify API client with getProductByHandle() and getAllProducts() methods - Integrate Shopify metafields for multilingual support (custom.title_en, custom.description_en) - Refactor product.php and home.php templates to load content dynamically - Simplify product blueprint to minimal routing configuration - Create generic buy-button.php snippet with variant selection - Update footer.php with conditional script loading - Refactor _section--product.scss for better Sass structure - Add translations for loading states and product errors - Clean up old Kirby product content files Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
47 lines
1.5 KiB
PHP
47 lines
1.5 KiB
PHP
<?php
|
|
$shopifyHandle = $page->shopifyHandle()->or($page->slug());
|
|
|
|
snippet('header', ['title' => $page->title(), 'template' => 'shop']);
|
|
?>
|
|
|
|
<main>
|
|
<nav class="store__nav">
|
|
<a href="<?= $site->homePage()->url() ?>"><?= t('backToShop') ?></a>
|
|
</nav>
|
|
|
|
<section class="section__product"
|
|
data-product-loader
|
|
data-shopify-handle="<?= $shopifyHandle ?>"
|
|
data-language="<?= $kirby->language()->code() ?>">
|
|
|
|
<div class="product-loading">
|
|
<p><?= t('loading') ?></p>
|
|
</div>
|
|
|
|
<div class="product-content" style="display: none;">
|
|
<div class="col-left">
|
|
<div class="hero">
|
|
<h2 class="p__baseline-big" data-product-title></h2>
|
|
<p class="p__baseline-big" data-product-price></p>
|
|
</div>
|
|
|
|
<div class="details" data-product-details></div>
|
|
|
|
<?php snippet('buy-button') ?>
|
|
</div>
|
|
|
|
<div class="product-gallery swiper">
|
|
<div class="swiper-wrapper" data-product-images></div>
|
|
<div class="swiper-button-prev"></div>
|
|
<div class="swiper-button-next"></div>
|
|
<div class="swiper-pagination"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="product-error" style="display: none;">
|
|
<p><?= t('productNotFound') ?></p>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
|
|
<?php snippet('footer', ['scripts' => ['product']]) ?>
|