Projet

Général

Profil

Actions

Feature #185

fermé

Feature #113: Faire évoluer les pages d'archives

Simplifier le fonctionnement technique des pages d'archives

Ajouté par ggallais il y a plus de 3 ans. Mis à jour il y a plus d'un an.

Statut:
Closed
Priorité:
High
Assigné à:
-
Catégorie:
projet
Début:
10/08/2022
Echéance:
% réalisé:

100%

Temps estimé:
Affecte:
Desktop, Mobile
Opquast:
Lot:
mepv3
Avis équipe:
Passage recette / prod:
à discuter ED:
Environnement:

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.png ajouté

Mis à jour par ggallais il y a plus de 3 ans

  • Fichier structure_page_archive.png supprimé

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

  • Lot mis à mepv3

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 pgrometto il y a plus de 2 ans

  • Priorité changé de Normal à High

Mis à jour par ggallais il y a plus de 2 ans

  • Lié à Feature #195: Supprimer les dépendances à FacetWP supprimé

Mis à jour par ggallais il y a plus d'un an

  • % réalisé changé de 0 à 100

Mis à jour par ggallais il y a plus d'un an

  • Statut changé de New à Closed
Actions

Formats disponibles : Atom PDF