2026-04-02
This commit is contained in:
parent
5f332f4068
commit
15371d2469
13 changed files with 295 additions and 125 deletions
|
|
@ -6,25 +6,30 @@ declare(strict_types=1);
|
|||
* Le modèle de la Page 404.
|
||||
*/
|
||||
|
||||
namespace HaikuAtelier;
|
||||
|
||||
use Exception;
|
||||
use HaikuAtelier\WP\Resource;
|
||||
use Timber\Timber;
|
||||
|
||||
use function add_action;
|
||||
|
||||
$context = Timber::context();
|
||||
$templates = ['404.twig'];
|
||||
|
||||
/**
|
||||
* Charge les scripts et styles de la page.
|
||||
* Charge les scripts et styles de la page.
|
||||
*
|
||||
* @throws Exception une exception est levée s'il est impossible d'obtenir la date de modification du fichier à charger
|
||||
*/
|
||||
function charge_scripts_styles_page_404(): void {
|
||||
function load_page_resources(): void {
|
||||
Resource::enqueue_style_file(
|
||||
handle: 'haiku-atelier-2024-styles-page-a-propos',
|
||||
path: '/assets/css/pages/page-modele-simple.css'
|
||||
);
|
||||
}
|
||||
|
||||
add_action('wp_enqueue_scripts', 'charge_scripts_styles_page_404');
|
||||
add_action('wp_enqueue_scripts', load_page_resources(...));
|
||||
|
||||
Timber::render(
|
||||
data: $context,
|
||||
|
|
|
|||
|
|
@ -6,9 +6,17 @@ declare(strict_types=1);
|
|||
* Le modèle de la Page Boutique (« E-Shop »).
|
||||
*/
|
||||
|
||||
namespace HaikuAtelier;
|
||||
|
||||
use Exception;
|
||||
use HaikuAtelier\Data\Product;
|
||||
use HaikuAtelier\WP\Resource;
|
||||
use Timber\Timber;
|
||||
use WC_Product;
|
||||
|
||||
use function add_action;
|
||||
use function array_map;
|
||||
use function wc_get_products;
|
||||
|
||||
require_once __DIR__ . '/src/inc/TraitementInformations.php';
|
||||
|
||||
|
|
@ -25,11 +33,11 @@ $products = array_map(
|
|||
$context['products'] = $products;
|
||||
|
||||
/**
|
||||
* Charge les scripts et styles de la page.
|
||||
* Charge les scripts et styles de la page.
|
||||
*
|
||||
* @throws Exception une exception est levée s'il est impossible d'obtenir la date de modification du fichier à charger
|
||||
*/
|
||||
function charge_scripts_page_boutique(): void {
|
||||
function load_page_resources(): void {
|
||||
Resource::enqueue_style_file(
|
||||
handle: 'haiku-atelier-2024-styles-page-boutique',
|
||||
path: '/assets/css/pages/page-boutique.css'
|
||||
|
|
@ -44,10 +52,7 @@ function charge_scripts_page_boutique(): void {
|
|||
);
|
||||
}
|
||||
|
||||
add_action('wp_enqueue_scripts', 'charge_scripts_page_boutique');
|
||||
|
||||
// $lal = wp_json_encode($context);
|
||||
// echo "<script>console.debug({$lal});</script>";
|
||||
add_action('wp_enqueue_scripts', load_page_resources(...));
|
||||
|
||||
Timber::render(
|
||||
data: $context,
|
||||
|
|
|
|||
|
|
@ -6,14 +6,23 @@ declare(strict_types=1);
|
|||
* Le modèle de la Page d'Accueil.
|
||||
*/
|
||||
|
||||
namespace HaikuAtelier;
|
||||
|
||||
use Exception;
|
||||
use HaikuAtelier\WP\Resource;
|
||||
use Timber\Timber;
|
||||
|
||||
use function add_action;
|
||||
|
||||
$context = Timber::context();
|
||||
$templates = ['accueil.twig'];
|
||||
|
||||
// Charge les scripts et styles de la page
|
||||
function charge_scripts_styles_page_accueil(): void {
|
||||
/**
|
||||
* Charge les scripts et styles de la page.
|
||||
*
|
||||
* @throws Exception une exception est levée s'il est impossible d'obtenir la date de modification du fichier à charger
|
||||
*/
|
||||
function load_resources(): void {
|
||||
Resource::enqueue_style_file(
|
||||
handle: 'haiku-atelier-2024-styles-page-accueil',
|
||||
path: '/assets/css/pages/page-accueil.css'
|
||||
|
|
@ -24,7 +33,7 @@ function charge_scripts_styles_page_accueil(): void {
|
|||
);
|
||||
}
|
||||
|
||||
add_action('wp_enqueue_scripts', 'charge_scripts_styles_page_accueil');
|
||||
add_action('wp_enqueue_scripts', load_resources(...));
|
||||
|
||||
Timber::render(
|
||||
data: $context,
|
||||
|
|
|
|||
|
|
@ -3,16 +3,24 @@
|
|||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* Le modèle de la Page À Propos (« About »).
|
||||
* Le modèle de la Page « À Propos (About) ».
|
||||
*/
|
||||
|
||||
namespace HaikuAtelier;
|
||||
|
||||
use Exception;
|
||||
use HaikuAtelier\WP\Resource;
|
||||
use Timber\Timber;
|
||||
|
||||
use function add_action;
|
||||
use function get_template_directory;
|
||||
use function getimagesize;
|
||||
use function is_bool;
|
||||
|
||||
$context = Timber::context();
|
||||
$templates = ['a-propos.twig'];
|
||||
|
||||
// Les dimensions de l'image du storytelling.
|
||||
/** Les dimensions de l'image du storytelling. */
|
||||
$image_dimensions = getimagesize(filename: get_template_directory() . '/assets/img/about/haikuabout.png');
|
||||
|
||||
if (is_bool($image_dimensions)) {
|
||||
|
|
@ -22,11 +30,11 @@ if (is_bool($image_dimensions)) {
|
|||
$context['image_dimensions'] = $image_dimensions;
|
||||
|
||||
/**
|
||||
* Charge les scripts et styles de la page.
|
||||
* Charge les scripts et styles de la page.
|
||||
*
|
||||
* @throws Exception une exception est levée s'il est impossible d'obtenir la date de modification du fichier à charger
|
||||
*/
|
||||
function charge_scripts_styles_page_a_propos(): void {
|
||||
function load_resources(): void {
|
||||
Resource::enqueue_style_file(
|
||||
handle: 'haiku-atelier-2024-styles-page-a-propos',
|
||||
path: '/assets/css/pages/page-a-propos.css'
|
||||
|
|
@ -37,7 +45,7 @@ function charge_scripts_styles_page_a_propos(): void {
|
|||
);
|
||||
}
|
||||
|
||||
add_action('wp_enqueue_scripts', 'charge_scripts_styles_page_a_propos');
|
||||
add_action('wp_enqueue_scripts', load_resources(...));
|
||||
|
||||
Timber::render(
|
||||
data: $context,
|
||||
|
|
|
|||
|
|
@ -3,13 +3,28 @@
|
|||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* Le modèle de la Page Panier (« Cart »).
|
||||
* Le modèle de la Page « Panier (Cart) ».
|
||||
*/
|
||||
|
||||
namespace HaikuAtelier;
|
||||
|
||||
use Exception;
|
||||
use HaikuAtelier\WP\Resource;
|
||||
use Illuminate\Support\Number;
|
||||
use Timber\Timber;
|
||||
|
||||
use function add_action;
|
||||
use function collect;
|
||||
use function Crell\fp\pipe;
|
||||
use function filemtime;
|
||||
use function genere_balise_img_multiformats;
|
||||
use function get_template_directory;
|
||||
use function get_template_directory_uri;
|
||||
use function is_bool;
|
||||
use function recupere_et_formate_attributs_produit;
|
||||
use function WC;
|
||||
use function wp_enqueue_script_module;
|
||||
use function wp_enqueue_style;
|
||||
|
||||
// Importe la fonction pour récupérer les informations affichées des Produits dans le Panier
|
||||
require_once __DIR__ . '/src/inc/TraitementInformations.php';
|
||||
|
|
@ -18,7 +33,7 @@ require_once __DIR__ . '/src/inc/TraitementInformations.php';
|
|||
$contexte = Timber::context();
|
||||
$modeles = ['panier.twig'];
|
||||
|
||||
$pays_acceptes = [
|
||||
$allowed_countries = [
|
||||
'AD',
|
||||
'AL',
|
||||
'AM',
|
||||
|
|
@ -90,22 +105,33 @@ $pays_acceptes = [
|
|||
];
|
||||
|
||||
// Récupère les informations affichés des Produits du Panier
|
||||
$panier = [];
|
||||
$cart = [];
|
||||
|
||||
/** @var float $sous_total_panier Le sous-total de la Commande dans le Panier. */
|
||||
$sous_total_panier = WC()->cart->get_subtotal();
|
||||
/** Le sous-total de la Commande dans le Panier. */
|
||||
$cart_subtotal = WC()->cart->get_subtotal();
|
||||
|
||||
/** @var string|null $code_promo Le code promo appliqué au Panier s'il existe. */
|
||||
$code_promo = collect(WC()->cart->get_applied_coupons())->first();
|
||||
/** @var string|null $promo_code Le code promo appliqué au Panier s'il existe. */
|
||||
$promo_code = collect(WC()->cart->get_applied_coupons())->first();
|
||||
|
||||
/** @var int $sous_total_reduction Le total du montant de la Réduction appliquée au Panier */
|
||||
$sous_total_reduction = Number::format(WC()->cart->get_totals()['discount_total'], maxPrecision: 2);
|
||||
/** @var array<string,int> */
|
||||
$cart_totals = WC()->cart->get_totals();
|
||||
|
||||
/** @var float $total_panier Le total de la Commande dans le Panier. */
|
||||
$total_panier = Number::format((float) WC()->cart->get_totals()['total'], maxPrecision: 2);
|
||||
/** @var string $cart_subtotal_with_discount Le total du montant de la Réduction appliquée au Panier. */
|
||||
$cart_subtotal_with_discount = $cart_totals['discount_total']
|
||||
|> (static fn(int $number) => Number::format($number, maxPrecision: 2))
|
||||
|> (static fn(false|string $number) => is_bool($number) ? '0' : $number);
|
||||
/** @var float $cart_total Le total de la Commande dans le Panier. */
|
||||
$cart_total = $cart_totals['total']
|
||||
|> (static fn(int $number) => Number::format($number, maxPrecision: 2))
|
||||
|> (static fn(false|string $number) => is_bool($number) ? '0' : $number)
|
||||
|> (static fn(string $number) => (float) $number);
|
||||
/** @var string $shipping_subtotal Le sous-total de la livraison. */
|
||||
$shipping_subtotal = $cart_totals['shipping_total']
|
||||
|> (static fn(int $number) => Number::format($number, precision: 0))
|
||||
|> (static fn(false|string $number) => is_bool($number) ? '0' : $number);
|
||||
|
||||
foreach (WC()->cart->get_cart() as $cle_panier => $article_panier) {
|
||||
$panier[$cle_panier] = [
|
||||
$cart[$cle_panier] = [
|
||||
'attributs' => $article_panier['data']?->get_type() === 'variation'
|
||||
? recupere_et_formate_attributs_produit($article_panier['data']?->get_attributes())
|
||||
: [],
|
||||
|
|
@ -128,8 +154,7 @@ $email = WC()->customer->get_billing_email();
|
|||
$adresse_livraison = WC()->customer->get_shipping();
|
||||
$adresse_facturation = WC()->customer->get_billing();
|
||||
$adresse_renseignee = $adresse_livraison['city'] !== '';
|
||||
$pays_livraison = collect(WC()->countries->get_countries())->only($pays_acceptes)->toArray();
|
||||
$total_livraison = Number::format((float) WC()->cart->get_totals()['shipping_total'], precision: 0);
|
||||
$allowed_countries = collect(WC()->countries->get_countries())->only($allowed_countries)->toArray();
|
||||
$methodes_livraison = collect(WC()->session->get('shipping_for_package_0')['rates'])
|
||||
->values()
|
||||
->map(static fn(WC_Shipping_Rate $methode): array => [
|
||||
|
|
@ -143,36 +168,32 @@ $contexte['email'] = $email;
|
|||
$contexte['adresse_livraison'] = $adresse_livraison;
|
||||
$contexte['adresse_facturation'] = $adresse_facturation;
|
||||
$contexte['adresse_renseignee'] = $adresse_renseignee;
|
||||
$contexte['sous_total_panier'] = $sous_total_panier;
|
||||
$contexte['code_promo'] = $code_promo;
|
||||
$contexte['sous_total_reduction'] = $sous_total_reduction;
|
||||
$contexte['total_panier'] = $total_panier;
|
||||
$contexte['produits_panier'] = $panier;
|
||||
$contexte['pays_livraison'] = $pays_livraison;
|
||||
$contexte['sous_total_livraison'] = $total_livraison;
|
||||
$contexte['sous_total_panier'] = $cart_subtotal;
|
||||
$contexte['code_promo'] = $promo_code;
|
||||
$contexte['sous_total_reduction'] = $cart_subtotal_with_discount;
|
||||
$contexte['total_panier'] = $cart_total;
|
||||
$contexte['produits_panier'] = $cart;
|
||||
$contexte['pays_livraison'] = $allowed_countries;
|
||||
$contexte['sous_total_livraison'] = $shipping_subtotal;
|
||||
$contexte['methodes_livraison'] = $methodes_livraison;
|
||||
|
||||
// Charge les scripts et styles de la page
|
||||
function charge_scripts_styles_page_panier(): void {
|
||||
wp_enqueue_style(
|
||||
/**
|
||||
* Charge les scripts et styles de la page.
|
||||
*
|
||||
* @throws Exception une exception est levée s'il est impossible d'obtenir la date de modification du fichier à charger
|
||||
*/
|
||||
function load_resources(): void {
|
||||
Resource::enqueue_style_file(
|
||||
handle: 'haiku-atelier-2024-styles-page-panier',
|
||||
src: get_template_directory_uri() . '/assets/css/pages/page-panier.css',
|
||||
deps: [],
|
||||
ver: filemtime(get_template_directory() . '/assets/css/pages/page-panier.css'),
|
||||
media: 'all'
|
||||
path: '/assets/css/pages/page-panier.css'
|
||||
);
|
||||
wp_enqueue_script_module(
|
||||
Resource::enqueue_script_module_file(
|
||||
id: 'haiku-atelier-2024-scripts-page-panier',
|
||||
src: get_template_directory_uri() . '/assets/js/scripts-page-panier.js',
|
||||
deps: [],
|
||||
version: filemtime(get_template_directory() . '/assets/js/scripts-page-panier.js')
|
||||
path: '/assets/js/scripts-page-panier.js'
|
||||
);
|
||||
}
|
||||
|
||||
add_action('wp_enqueue_scripts', 'charge_scripts_styles_page_panier');
|
||||
|
||||
// $lal = wp_json_encode($contexte);
|
||||
// echo "<script>console.debug({$lal});</script>";
|
||||
add_action('wp_enqueue_scripts', load_resources(...));
|
||||
|
||||
// Rendu
|
||||
Timber::render(
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ $templates = ['boutique.twig'];
|
|||
|
||||
/** @var WP_Term */
|
||||
$current_term = get_queried_object();
|
||||
/** @var string */
|
||||
$category_slug = $current_term->slug;
|
||||
|
||||
/** @var list<WC_Product> $raw_products Les informations brutes des Produits. */
|
||||
|
|
@ -29,16 +30,21 @@ $raw_products = wc_get_products([
|
|||
'status' => 'publish'
|
||||
]);
|
||||
|
||||
/** @var list<Product> */
|
||||
$products = array_map(
|
||||
callback: Product::new(...),
|
||||
array: $raw_products
|
||||
);
|
||||
$context['products'] = $products;
|
||||
|
||||
/** @var string */
|
||||
$products_category_id = array_shift($raw_products)?->get_category_ids()[0] ?? '';
|
||||
$context['products_category_id'] = $products_category_id;
|
||||
|
||||
/**
|
||||
* Charge les ressources nécessaires pour la page d'Archive.
|
||||
* Charge les scripts et styles de la page.
|
||||
*
|
||||
* @throws Exception une exception est levée s'il est impossible d'obtenir la date de modification du fichier à charger
|
||||
*/
|
||||
function load_page_resources(): void {
|
||||
Resource::enqueue_style_file(
|
||||
|
|
@ -57,9 +63,6 @@ function load_page_resources(): void {
|
|||
|
||||
add_action('wp_enqueue_scripts', 'load_page_resources');
|
||||
|
||||
$lal = wp_json_encode($context);
|
||||
echo "<script>console.debug({$lal});</script>";
|
||||
|
||||
// Rendu
|
||||
Timber::render(
|
||||
filenames: $templates,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue