Feature #185
ferméFeature #113: Faire évoluer les pages d'archives
Simplifier le fonctionnement technique des pages d'archives
100%
Description
L'affichage des pages d'archives dépend d'un empilement compliqué (voir infra) et très fragile.
Il suffit de supprimer un widget, un shortcode, ou de modifier la config de FacetWP en BO pour
"casser" les pages d'archives et ne plus afficher la liste des items.
L'idée est de simplifier la pile pour :
- ne plus dépendre de FacetWP
- ne plus dépendre d'une sidebar et de widgets
Ci-dessous, une description de comment sont faites les pages d'archives
Template archive.php¶
<?php
get_header(); ?>
<article class="article">
<div class="article__background article__background--search">
<div class="container">
<?php
get_template_part( 'components/blocks/breadcrumb' );
get_template_part( 'components/parts/hero-archive' ); // c'est là que se trouve le haut des pages archives
?>
</div>
</div>
<div class="container">
<div class="push">
<div class="article__page wysiwyg">
<div class="push">
<?php
dynamic_sidebar( 'archive-body' ); // c'est la que se trouve le corps des pages archives
?>
</div>
</div>
</div>
</div>
</div>
</article>
<?php
get_footer();
Template partiel hero-archive.php¶
Localisation : /components/parts/hero-archive.php
<div class="article__hero">
<header><h1 class="article__title push"> // affiche le nom de la taxonomie (éditable en BO)
<?php
if ( is_tax() || is_category() || is_tag() ) {
echo single_term_title();
} elseif ( is_archive() ) {
echo post_type_archive_title( '', false );
}
?>
</h1></header>
<?php
if ( is_tax() || is_category() || is_tag() ) :
$term_description = term_description();
if ( ! empty( $term_description ) ) :
?>
<div class="archive__description wysiwyg push"> // affiche la description de la taxonomie (éditable en BO)
<?php echo wp_kses_post( wpautop( $term_description ) ); ?>
</div>
<?php
endif;
endif;
?>
<div class="search__top wysiwyg push"> // affiche la sidebar archive-top (actuellement vide et pas utilisée)
<?php dynamic_sidebar( 'archive-top' ); ?>
</div>
</div>
Sidebar archive-top¶
La sidebar archive-top devait servir à ajouter un moteur de recherche sur certaines pages d'archives (notamment celle des dossiers).
Finalement, la fonctionnalité ne sert pas (le moteur de recherche n'a jamais franchement marché).
On peut supprimer la sidebar
Sidebar archive-body¶
Cette sidebar contient seulement un widget Texte (legacy widget) - voir l'image en PJ.
Le contenu du widget est 3 shortcodes de FacetWP : 2 facet et 1 template
[facetwp facet="results_fr"] [facetwp template="archive"] [facetwp facet="pagination"]
Si on supprime ces shortcodes en BO ou qu'on efface le widget, les pages d'archives cassent immédiatement.
Template FacetWP archive¶
Ce template est éditable depuis le BO dans FacetWP (Settings > Facet WP > Listings > Archive
<?php while ( have_posts() ): the_post();
include( get_stylesheet_directory() . '/components/parts/loop-cpt.php' ); // et là on appelle un template partiel du Thème, qui fait le boulot
endwhile; ?>
Template partiel loop-cpt.php¶
Localisation : /components/parts/loop-cpt.php
<?php
$loop_cpt = get_post_type();
$file_ext = '';
$categories = get_the_category( $push_id );
$article_date = get_the_date( 'd/m/Y' );
$article_edit = get_field( 'dossier_maj' );
if ( 'attachment' === $loop_cpt ) {
$file_url = wp_get_attachment_url( get_the_ID() );
$file_type = wp_check_filetype( $file_url );
$file_ext = ' <span class="filetype">' . $file_type['ext'] . '</span>';
}
?>
<div class="loop">
<div class="loop__wrapper" data-seo-container>
<div class="loop__row">
<div class="loop__content">
<h2>
<a href="<?php the_permalink(); ?>" data-seo-target>
<?php
the_title();
echo wp_kses_post( $file_ext );
?>
</a>
</h2>
<div class="loop__excerpt">
<?php the_excerpt(); ?>
</div>
<div class="loop__meta">
<?php
if ( ! empty( $article_edit ) && $article_date !== $article_edit ) :
?>
<div class="loop__meta-item">
<?php esc_html_e( 'Modified on:', 'inserm' ); ?>
<?php echo esc_html( $article_edit ); ?>
</div>
<?php endif; ?>
<div class="loop__meta-item">
<?php esc_html_e( 'Published on:', 'inserm' ); ?>
<?php echo esc_html( $article_date ); ?>
</div>
<?php
if ( ! empty( $categories ) ) :
$cats = wp_list_pluck( $categories, 'name' );
if ( count( $cats ) > 0 ) :
$all_cats = implode( ', ', $cats )
?>
<div class="loop__meta-item loop__category"><?php echo esc_html( $all_cats ); ?></div>
<?php
endif;
endif;
?>
</div>
</div>
<div class="loop__column">
<div class="loop__thumb">
<?php echo get_the_post_thumbnail( $related_id, 'large' ); ?>
</div>
</div>
</div>
</div>
</div>
Fondamentalement, tout l'important est dans ce dernier template.
On aurait pu directement l'appeler depuis archive.php, sans passer par la sidebar archive-body ou par un template facet WP.
Et c'est exactement ça l'objectif du ticket : faire la même chose sans toutes les étapes inutiles.
Fichiers
Mis à jour par ggallais il y a plus de 3 ans
- Lié à Feature #195: Supprimer les dépendances à FacetWP ajouté
Mis à jour par ggallais il y a plus de 3 ans
- Fichier structure_page_archive_cut.png structure_page_archive_cut.png ajouté
Mis à jour par ggallais il y a plus de 2 ans
- Catégorie mis à projet
- URL mis à /#
- Affecte Desktop, Mobile ajouté
Mis à jour par ggallais il y a plus de 2 ans
Ce ticket correspond strictement à la demande exprimée en section C du document "Refonte_MEPv3".
https://redmine.prod.inserm.cloud-ed.fr/attachments/download/87/refonte_MEPv3.pdf
Mis à jour par ggallais il y a plus de 2 ans
- Lié à Feature #195: Supprimer les dépendances à FacetWP supprimé