All checks were successful
Deploy / Deploy to Production (push) Successful in 6s
Implement complete SEO setup for virtual product pages with: - Meta tags (title, description, canonical, hreflang) - Open Graph protocol for social sharing - Twitter Card tags - Schema.org structured data (JSON-LD) for products - XML sitemap including virtual pages - Dynamic meta tag updates via JavaScript Changes: - Create SEO snippet with all meta tags - Add structured data snippet for products - Generate sitemap.xml with products and hreflang - Update meta tags dynamically when Shopify data loads - Remove noindex/nofollow (was blocking all indexing) - Add product-specific OG tags (price, availability) All pages now properly indexed with correct multilingual setup. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
52 lines
1.7 KiB
PHP
52 lines
1.7 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>
|
|
|
|
<div class="product-options" data-product-options style="display: none;">
|
|
<ul class="product-options__list" data-product-options-list></ul>
|
|
</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('structured-data-product') ?>
|
|
<?php snippet('footer', ['scripts' => ['product']]) ?>
|