loading and splitted titles render speed fix

This commit is contained in:
2026-10-13 17:00:22 +02:00
parent 2d3842c702
commit 36c5b1e380
9 changed files with 208 additions and 81 deletions
+19
View File
@@ -13,6 +13,12 @@ function leshed_page_attachments_alter(&$page) {
// $page['#attached']['library'][] = 'http://localhost:5173/assets/js/main.js';
$page['#attached']['library'][] = 'leshed/vitehmr';
$page['#attached']['library'][] = 'leshed/titles_hmr';
// CSS compilée en <link> render-blocking : sans elle, la page se peint
// sans styles pendant le chargement des modules Vite (qui portent la CSS
// en dev). Le build --watch tient assets/dist/main.css frais ; les styles
// injectés ensuite par Vite, plus tardifs dans la cascade, prennent le
// dessus sur les égalités.
$page['#attached']['library'][] = 'leshed/base_css';
}else{
$page['#attached']['library'][] = 'leshed/global';
$page['#attached']['library'][] = 'leshed/titles';
@@ -144,6 +150,19 @@ function leshed_preprocess_node(&$variables) {
$variables["attributes"]['class'][] = "view-mode-{$variables['view_mode']}";
// Titres typographiques (assets/js/titles.js) : la classe est posée ICI,
// dans le HTML servi, et non par le JS. Le CSS peut ainsi masquer le titre
// dès le premier rendu (.variable-title:not(.is-ready)) au lieu de laisser
// voir la typo brute le temps que le module s'exécute ; et le JS
// sélectionne cette même classe : une seule liste, aucune désynchro.
$variable_titles = [
'projet' => ['teaser', 'tableau_liste', 'lie', 'full'],
'evenement' => ['teaser', 'tableau_liste', 'calendrier', 'full'],
];
if (in_array($variables['view_mode'], $variable_titles[$node_type] ?? [], TRUE)) {
$variables['title_attributes']['class'][] = 'variable-title';
}
if ($node->hasField('field_images')) {
/** @var \Drupal\file\Plugin\\Field\FieldType\FileFieldItemList $field_images */
$field_images = $node->get('field_images');