index-shop/site/config/config.php
isUnknown 4b7062e0bd
All checks were successful
Deploy / Deploy to Production (push) Successful in 7s
Fix thanks and error page routing for both languages
- Add dedicated routes for /thanks, /error, /en/thanks, and /en/error
- Create missing error.en.txt content file
- Add title to error.fr.txt

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-21 11:19:48 +01:00

170 lines
4.8 KiB
PHP

<?php
require_once __DIR__ . '/shopify.php';
use Kirby\Cms\Page;
return [
'debug' => true,
'languages' => true,
'cache' => [
'shopify' => true
],
'routes' => [
// Sitemap
[
'pattern' => 'sitemap.xml',
'action' => function() {
$sitemap = page('home');
return new Kirby\Cms\Response(
snippet('sitemap', ['page' => $sitemap], true),
'application/xml'
);
}
],
// English homepage
[
'pattern' => 'en',
'action' => function() {
$home = page('home');
if ($home) {
site()->visit($home, 'en');
return $home;
}
return null;
}
],
// English thanks page
[
'pattern' => 'en/thanks',
'action' => function() {
$thanks = page('thanks');
if ($thanks) {
site()->visit($thanks, 'en');
return $thanks;
}
return null;
}
],
// English error page
[
'pattern' => 'en/error',
'action' => function() {
$error = page('error');
if ($error) {
site()->visit($error, 'en');
return $error;
}
return null;
}
],
// French thanks page
[
'pattern' => 'thanks',
'action' => function() {
return page('thanks');
}
],
// French error page
[
'pattern' => 'error',
'action' => function() {
return page('error');
}
],
// French products (default)
[
'pattern' => '(:any)',
'action' => function($slug) {
if (in_array($slug, ['home', 'error', 'thanks'])) {
return null;
}
$products = getShopifyProducts();
foreach ($products as $product) {
if ($product['handle'] === $slug) {
$page = Page::factory([
'slug' => $product['handle'],
'template' => 'product',
'content' => [
'title' => $product['title'],
'shopifyHandle' => $product['handle'],
'uuid' => $product['id']
]
]);
site()->visit($page, 'fr');
return $page;
}
}
return null;
}
],
// English products
[
'pattern' => 'en/(:any)',
'action' => function($slug) {
if (in_array($slug, ['home', 'error', 'thanks'])) {
return null;
}
$products = getShopifyProducts();
foreach ($products as $product) {
if ($product['handle'] === $slug) {
$page = Page::factory([
'slug' => $product['handle'],
'template' => 'product',
'content' => [
'title' => $product['title'],
'shopifyHandle' => $product['handle'],
'uuid' => $product['id']
]
]);
site()->visit($page, 'en');
return $page;
}
}
return null;
}
]
],
'thumbs' => [
'quality' => 85,
'format' => 'webp',
'presets' => [
'product-card' => [
'width' => 600,
'height' => 600,
'crop' => true,
'format' => 'webp'
],
'product-detail' => [
'width' => 1200,
'format' => 'webp'
],
'default' => [
'width' => 1024,
'format' => 'webp'
],
],
'srcsets' => [
'default' => [400, 600, 800, 1024, 1440, 2048],
'webp' => [
'400w' => ['width' => 400, 'format' => 'webp'],
'600w' => ['width' => 600, 'format' => 'webp'],
'800w' => ['width' => 800, 'format' => 'webp'],
'1024w' => ['width' => 1024, 'format' => 'webp'],
'1440w' => ['width' => 1440, 'format' => 'webp'],
],
],
],
];