haiku-atelier-2024/web/app/themes/haiku-atelier-2024/single-product.php
2026-04-01 18:31:43 +02:00

66 lines
1.8 KiB
PHP
Executable file

<?php
declare(strict_types=1);
/**
* Le modèle de la Page d'un Produit.
*/
use HaikuAtelier\Data\Product;
use Timber\Timber;
require_once __DIR__ . '/src/inc/HTML.php';
require_once __DIR__ . '/src/inc/TraitementInformations.php';
// Contexte et modèles
$context = Timber::context();
$templates = ['produit.twig'];
$raw_product = wc_get_product();
// Le Produit DOIT exister.
if ($raw_product === null || is_bool($raw_product)) {
throw new Exception("Le Produit n'existe pas.");
}
// Assemble les données d'intérêt pour la page au sein d'une Classe.
$product = Product::new($raw_product);
/** @var int $prix_maximal Le prix de la Variation la plus chère */
$maximum_price = collect($product->variations)->max('price');
$same_collection_products = array_map(
array: recupere_produits_meme_collection($product->collection)($product->id),
callback: Product::new(...)
);
$context['product'] = $product;
$context['product_json'] = wp_json_encode($product);
$context['maximum_price'] = $maximum_price;
$context['same_collection_products'] = $same_collection_products;
/**
* Charge les Scripts nécessaires pour la page Produit.
*/
function charge_scripts_page_produit(): void {
wp_enqueue_script_module(
id: 'haiku-atelier-2024-scripts-page-produit',
src: get_template_directory_uri() . '/assets/js/scripts-page-produit.js',
deps: [],
version: filemtime(get_template_directory() . '/assets/js/scripts-page-produit.js')
);
wp_enqueue_script_module(
id: 'haiku-atelier-2024-scripts-menu-categories',
src: get_template_directory_uri() . '/assets/js/scripts-menu-categories.js',
deps: [],
version: filemtime(get_template_directory() . '/assets/js/scripts-menu-categories.js')
);
}
add_action('wp_enqueue_scripts', 'charge_scripts_page_produit');
// Rendu
Timber::render(
filenames: $templates,
data: $context
);