Compare commits

...

18 Commits

Author SHA1 Message Date
5a92648654 ADD Introducing the component
All checks were successful
continuous-integration/drone/push Build is passing
2025-06-03 16:46:18 +02:00
c6f5851014 ADD Introducing the component 2025-06-03 16:46:09 +02:00
b494233d77 ADD Ajout du fichier CSS 2025-06-03 16:45:43 +02:00
2794dae3cd DELETE removing editor support for Revues 2025-06-03 16:45:25 +02:00
32dd18482d DELETE Removing unecessary spaces and write log 2025-06-03 16:44:40 +02:00
b6ded8c56c ADD Ajout des imports pour la navigation et l'archive des revues 2025-06-03 16:44:06 +02:00
94316e4c32 removing untracked files 2025-06-03 16:43:57 +02:00
c54c56bfed ADD Création de la page d'archive des revues avec en-tête, grille et section à venir 2025-06-03 16:43:32 +02:00
318edb5b6c REFACTOR Refining comments for better understandability 2025-06-03 16:43:18 +02:00
3942ec94b7 UPLOAD adding asset to projet 2025-06-03 16:42:51 +02:00
497d9140d3 ADD Création du type de publication 'auteurs' avec gestion des noms 2025-06-03 16:42:27 +02:00
5922592177 REFACTOR Refining dynamic page ID and smal refactor clean 2025-06-03 16:42:06 +02:00
51f154d3e0 REFACTOR Refactoring main query loop 2025-06-03 16:41:34 +02:00
2927747d09 ADD Ajouter l'inclusion du fichier 'auteurs.php' dans functions.php 2025-06-03 16:41:16 +02:00
2538d7d29d REFACTOR Cleaning unused code 2025-06-03 16:41:07 +02:00
29ca6c915b FEATURE Remove support for editor in archives 2025-06-03 16:40:40 +02:00
12bcdd9eb3 REFACTOR Deleted useless code in duplicate nav 2025-06-03 16:39:09 +02:00
6ff8ced567 ADD Ajouter la couleur 'Carhop Red' dans le thème et la configuration Tailwind 2025-06-03 16:37:29 +02:00
20 changed files with 506 additions and 861 deletions

41
archive-revues.php Normal file
View File

@ -0,0 +1,41 @@
<?php get_header(); ?>
<?php get_template_part('template-parts/page-header', null, array(
'title' => 'Revues',
'subtitle' => 'Plongez dans les archives vivantes de lhistoire sociale',
'description' => 'Explorez tous les numéros de la revue Dynamiques, le fruit dun dialogue entre mémoires populaires, engagements militants et recherches critiques.
Chaque parution propose un dossier thématique nourri de contributions plurielles : articles, témoignages, entretiens, regards croisés…',
'cover' => array(
'url' => get_stylesheet_directory_uri() . '/resources/img/covers/carhop-revues-page-thumbnail.svg',
'alt' => 'Revues'
)
)); ?>
<?php get_template_part('template-parts/revues/revues-grid'); ?>
<?php
// Rendre Un bloc acf/lightbox-gallery avec les photos du chantier
// $block_content = '<!-- wp:acf/lightbox-gallery {"data":{"gallery":' . json_encode($pictures) . '}} /-->';
$block_content = '<!-- wp:dynamiques-blocks/explore-tags /-->';
echo do_blocks($block_content);
?>
<?php get_template_part('template-parts/components/chapter-section', null, array(
'subtitle' => __('Prochainement', 'dynamiques'),
'title' => __('Un regard en avant sur les publications à venir', 'dynamiques'),
'content' => __('Découvrez les prochaines parutions de la revue Dynamiques : dossiers en préparation, appels à contributions en cours, avant-goûts des articles à paraître, et coulisses éditoriales. Cette page dédiée vous plonge dans les futurs numéros en construction. Restez informé·e, soyez parmi les premier·ères à lire, partager… ou contribuer.', 'dynamiques'),
'cta' => __('Voir les publications à venir', 'dynamiques'),
'cover' => array(
'url' => get_stylesheet_directory_uri() . '/resources/img/covers/carhop-revues-page-thumbnail.svg',
'alt' => 'Revues'
),
'cover_size' => 'medium'
)); ?>
<?php
get_footer();

View File

@ -1,540 +0,0 @@
.container {
width: 100%;
padding-right: 1rem;
padding-left: 1rem
}
@media (min-width: 480px) {
.container {
max-width: 480px
}
}
@media (min-width: 600px) {
.container {
max-width: 600px;
padding-right: 2rem;
padding-left: 2rem
}
}
@media (min-width: 782px) {
.container {
max-width: 782px
}
}
@media (min-width: 960px) {
.container {
max-width: 960px;
padding-right: 0rem;
padding-left: 0rem
}
}
@media (min-width: 1280px) {
.container {
max-width: 1280px
}
}
@media (min-width: 1440px) {
.container {
max-width: 1440px
}
}
.relative {
position: relative
}
.m-8 {
margin: 2rem
}
.my-3 {
margin-top: 0.75rem;
margin-bottom: 0.75rem
}
.my-8 {
margin-top: 2rem;
margin-bottom: 2rem
}
.mx-auto {
margin-left: auto;
margin-right: auto
}
.mb-8 {
margin-bottom: 2rem
}
.mt-4 {
margin-top: 1rem
}
.mb-4 {
margin-bottom: 1rem
}
.mb-1 {
margin-bottom: 0.25rem
}
.mb-2 {
margin-bottom: 0.5rem
}
.mt-8 {
margin-top: 2rem
}
.mb-12 {
margin-bottom: 3rem
}
.block {
display: block
}
.inline-block {
display: inline-block
}
.flex {
display: flex
}
.grid {
display: grid
}
.h-1 {
height: 0.25rem
}
.h-6 {
height: 1.5rem
}
.h-48 {
height: 12rem
}
.min-h-screen {
min-height: 100vh
}
.w-full {
width: 100%
}
.w-16 {
width: 4rem
}
.w-6 {
width: 1.5rem
}
.max-w-sm {
max-width: 24rem
}
.max-w-screen-md {
max-width: 782px
}
.flex-grow {
flex-grow: 1
}
.cursor-pointer {
cursor: pointer
}
.grid-cols-1 {
grid-template-columns: repeat(1, minmax(0, 1fr))
}
.flex-col {
flex-direction: column
}
.items-center {
align-items: center
}
.justify-center {
justify-content: center
}
.justify-between {
justify-content: space-between
}
.gap-6 {
gap: 1.5rem
}
.overflow-hidden {
overflow: hidden
}
.rounded {
border-radius: 0.25rem
}
.rounded-lg {
border-radius: 0.5rem
}
.border {
border-width: 1px
}
.border-b {
border-bottom-width: 1px
}
.border-primary {
--tw-border-opacity: 1;
border-color: rgb(19 111 99 / var(--tw-border-opacity))
}
.border-red-400 {
--tw-border-opacity: 1;
border-color: rgb(248 113 113 / var(--tw-border-opacity))
}
.bg-primary {
--tw-bg-opacity: 1;
background-color: rgb(19 111 99 / var(--tw-bg-opacity))
}
.bg-gray-200 {
--tw-bg-opacity: 1;
background-color: rgb(229 231 235 / var(--tw-bg-opacity))
}
.bg-gray-50 {
--tw-bg-opacity: 1;
background-color: rgb(249 250 251 / var(--tw-bg-opacity))
}
.bg-red-100 {
--tw-bg-opacity: 1;
background-color: rgb(254 226 226 / var(--tw-bg-opacity))
}
.bg-white {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity))
}
.object-cover {
-o-object-fit: cover;
object-fit: cover
}
.p-4 {
padding: 1rem
}
.px-4 {
padding-left: 1rem;
padding-right: 1rem
}
.py-2 {
padding-top: 0.5rem;
padding-bottom: 0.5rem
}
.px-3 {
padding-left: 0.75rem;
padding-right: 0.75rem
}
.py-12 {
padding-top: 3rem;
padding-bottom: 3rem
}
.py-6 {
padding-top: 1.5rem;
padding-bottom: 1.5rem
}
.py-8 {
padding-top: 2rem;
padding-bottom: 2rem
}
.py-3 {
padding-top: 0.75rem;
padding-bottom: 0.75rem
}
.text-5xl {
font-size: 3rem;
line-height: 1
}
.text-2xl {
font-size: 1.5rem;
line-height: 2rem
}
.text-lg {
font-size: 1.125rem;
line-height: 1.75rem
}
.text-sm {
font-size: 0.875rem;
line-height: 1.25rem
}
.text-3xl {
font-size: 1.875rem;
line-height: 2.25rem
}
.text-xl {
font-size: 1.25rem
}
.font-light {
font-weight: 300
}
.font-bold {
font-weight: 700
}
.font-extrabold {
font-weight: 800
}
.font-semibold {
font-weight: 600
}
.uppercase {
text-transform: uppercase
}
.leading-tight {
line-height: 1.25
}
.text-gray-800 {
--tw-text-opacity: 1;
color: rgb(31 41 55 / var(--tw-text-opacity))
}
.text-white {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity))
}
.text-gray-600 {
--tw-text-opacity: 1;
color: rgb(75 85 99 / var(--tw-text-opacity))
}
.text-gray-700 {
--tw-text-opacity: 1;
color: rgb(55 65 81 / var(--tw-text-opacity))
}
.text-red-700 {
--tw-text-opacity: 1;
color: rgb(185 28 28 / var(--tw-text-opacity))
}
.antialiased {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale
}
.shadow-md {
--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
.alignfull {
margin: 2rem calc(50% - 50vw) !important;
max-width: 100vw !important;
width: 100vw
}
.alignwide {
margin: 2rem 0;
max-width: 1280px !important
}
.alignnone {
margin-left: 0px;
margin-right: 0px;
height: auto;
max-width: 100%
}
.aligncenter {
margin: 0.5rem auto;
display: block
}
@media (min-width: 600px) {
.alignleft:not(.wp-block-button) {
margin-right: 0.5rem;
float: left
}
.alignright:not(.wp-block-button) {
margin-left: 0.5rem;
float: right
}
.wp-block-button.alignleft a {
float: left;
margin-right: 1rem
}
.wp-block-button.alignright a {
float: right;
margin-left: 1rem
}
}
.wp-caption {
display: inline-block
}
.wp-caption img {
margin-bottom: 0.5rem;
line-height: 1
}
.wp-caption-text {
font-size: 0.875rem;
color: #4b5563
}
body {
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"
}
.wp-block {
max-width: 1280px
}
.wp-block[data-align="wide"] {
max-width: 1280px
}
.wp-block[data-align="full"] {
max-width: 100%
}
.wp-block.alignfull {
max-width: 100%
}
.acf-block-component {
/* @apply bg-red-500; */
}
.acf-block-fields {
margin-left: auto;
margin-right: auto;
max-width: 782px
}
@media (min-width: 600px) {
.sm\:inline {
display: inline
}
}
@media (min-width: 782px) {
.md\:my-6 {
margin-top: 1.5rem;
margin-bottom: 1.5rem
}
.md\:flex {
display: flex
}
.md\:w-1\/2 {
width: 50%
}
.md\:grid-cols-2 {
grid-template-columns: repeat(2, minmax(0, 1fr))
}
.md\:text-3xl {
font-size: 1.875rem;
line-height: 2.25rem
}
}
@media (min-width: 960px) {
.lg\:-mx-4 {
margin-left: -1rem;
margin-right: -1rem
}
.lg\:mx-4 {
margin-left: 1rem;
margin-right: 1rem
}
.lg\:mt-0 {
margin-top: 0px
}
.lg\:block {
display: block
}
.lg\:flex {
display: flex
}
.lg\:hidden {
display: none
}
.lg\:grid-cols-3 {
grid-template-columns: repeat(3, minmax(0, 1fr))
}
.lg\:items-center {
align-items: center
}
.lg\:justify-between {
justify-content: space-between
}
.lg\:bg-transparent {
background-color: transparent
}
.lg\:p-0 {
padding: 0px
}
.lg\:text-5xl {
font-size: 3rem;
line-height: 1
}
}

View File

@ -5,6 +5,7 @@ require_once(__DIR__ . '/includes/init.php');
require_once(__DIR__ . '/includes/post_types.php');
require_once(__DIR__ . '/includes/columns.php');
require_once(__DIR__ . '/includes/revue.php');
require_once(__DIR__ . '/includes/auteurs.php');
// require_once(__DIR__ . '/includes/taxonomy.php');
// require_once(__DIR__ . '/includes/admin.php');
// require_once(__DIR__ . '/includes/logos.php');

View File

@ -16,60 +16,41 @@
global $post;
?>
<div id="page-<?php echo $post ? $post->post_name : 'home'; ?>" class="min-h-screen flex flex-col">
<?php
$page_id = 'home';
if (is_archive()) {
$page_id = 'archive-' . get_post_type();
} elseif (is_single()) {
$page_id = $post->post_name;
} elseif (is_page()) {
$page_id = $post->post_name;
}
?>
<div id="page-<?php echo $page_id; ?>" class="min-h-screen flex flex-col">
<?php do_action('tailpress_header'); ?>
<!-- <header id="primary-header">
<div class="primary-menu-container">
<div class="lg:flex lg:justify-between lg:items-center py-6">
<div class="flex justify-between items-center">
<div>
<?php if (has_custom_logo()) { ?>
<?php the_custom_logo(); ?>
<?php } else { ?>
<a href="<?php echo get_bloginfo('url'); ?>" class="font-extrabold text-lg uppercase">
<?php echo get_bloginfo('name'); ?>
</a>
<p class="text-sm font-light text-gray-600">
<?php echo get_bloginfo('description'); ?>
</p>
<?php } ?>
</div>
<div class="lg:hidden">
<a href="#" aria-label="Toggle navigation" id="primary-menu-toggle">
<svg viewBox="0 0 20 20" class="inline-block w-6 h-6" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="currentColor" fill-rule="evenodd">
<g id="icon-shape">
<path d="M0,3 L20,3 L20,5 L0,5 L0,3 Z M0,9 L20,9 L20,11 L0,11 L0,9 Z M0,15 L20,15 L20,17 L0,17 L0,15 Z" id="Combined-Shape"></path>
</g>
</g>
</svg>
</a>
</div>
</div>
<header id="primary-header">
<div class="secondary-menu-container">
<div class="secondary-menu-nav">
<?php
wp_nav_menu(
array(
'container_id' => 'primary-menu',
'container_class' => 'bg-primary mt-4 p-4 lg:mt-0 lg:p-0 lg:bg-transparent lg:block',
'menu_class' => 'lg:flex lg:-mx-4',
'theme_location' => 'primary',
'li_class' => 'lg:mx-4 menu-navlink',
'container' => 'false',
'theme_location' => 'secondary',
'li_class' => 'menu-navlink',
'fallback_cb' => false,
)
);
?>
<img class="close_btn" src="<?php echo get_template_directory_uri() . '/resources/img/close_menu_icon.svg' ?>" />
); ?>
</div>
</div>
</header> -->
<header id="primary-header">
<div class="dynamiques-redirector">
<a href="<?php echo get_site_url(1); ?>">
Carhop
</a>
</div>
</div>
<div class="primary-menu-container lg:flex lg:justify-between lg:items-center">
<nav id="primary-menu-nav" class="flex justify-between items-center">
<div class="website_logo">
@ -122,7 +103,7 @@
</div>
<!-- qsdqds -->
</header>

62
includes/auteurs.php Normal file
View File

@ -0,0 +1,62 @@
<?php
function dynamiques_create_auteurs_posttype()
{
register_post_type(
'auteurs',
array(
'labels' => array(
'name' => __('Auteurs'),
'singular_name' => __('Auteur'),
'add_new' => __('Ajouter un auteur'),
'add_new_item' => __('Ajouter un auteur'),
'edit_item' => __('Editer l\'auteur'),
'new_item' => __('Nouvel auteur'),
'view_item' => __('Voir l\'auteur'),
'search_items' => __('Chercher un auteur'),
'not_found' => __('Pas d\'auteur trouvé'),
'not_found_in_trash' => __('Pas d\'auteur trouvé dans la corbeille'),
'all_items' => __('Tous les auteurs'),
'menu_name' => __('Auteurs'),
'name_admin_bar' => __('Auteurs'),
),
'public' => true,
'has_archive' => true,
'show_in_rest' => true,
'menu_icon' => 'dashicons-admin-users',
'menu_position' => 4,
'supports' => array(
'title',
'thumbnail',
'custom-fields',
'revisions',
),
)
);
}
add_action('init', 'dynamiques_create_auteurs_posttype');
//Acf save post action
add_action('acf/save_post', 'dynamiques_save_auteurs_post');
function dynamiques_save_auteurs_post($post_id)
{
$post_type = get_post_type($post_id);
if ($post_type == 'auteurs') {
$first_name = get_field('first_name', $post_id) ?? '';
$last_name = get_field('last_name', $post_id) ?? '';
$full_name = $first_name . ' ' . $last_name;
if ($full_name && $full_name != '') {
$post_slug = sanitize_title($full_name);
wp_update_post(array(
'ID' => $post_id,
'post_title' => $full_name,
'post_name' => $post_slug
));
}
}
}

View File

@ -122,14 +122,11 @@ function dynamiques_nav_menu_add_li_class($classes, $item, $args, $depth)
if (isset($args->{"li_class_$depth"})) {
$classes[] = $args->{"li_class_$depth"};
}
return $classes;
}
add_filter('nav_menu_css_class', 'dynamiques_nav_menu_add_li_class', 10, 4);
/* ----------------------------------------------------------------
##### Adds option 'submenu_class' to 'wp_nav_menu'
------------------------------------------------------------------*/
@ -148,3 +145,17 @@ function dynamiques_nav_menu_add_submenu_class($classes, $args, $depth)
}
add_filter('nav_menu_submenu_css_class', 'dynamiques_nav_menu_add_submenu_class', 10, 3);
add_action('admin_init', function () {
$page_id_cible = 47; // Remplace 42 par lID réel de ta page
$screen = get_current_screen();
if (is_admin() && isset($_GET['post']) && (int) $_GET['post'] === $page_id_cible) {
remove_post_type_support('page', 'editor');
remove_post_type_support('page', 'thumbnail');
remove_post_type_support('page', 'excerpt');
remove_post_type_support('page', 'custom-fields'); // optionnel
}
});

View File

@ -21,7 +21,6 @@ function dynamiques_create_posttype()
'menu_position' => 4,
'supports' => array(
'title',
// 'editor',
'thumbnail',
'excerpt',
'custom-fields',
@ -54,8 +53,6 @@ function dynamiques_create_posttype()
'revisions',
'author',
),
)
);
}

View File

@ -9,16 +9,24 @@ function dynamiques_revue_save_post($post_id)
$post_type = get_post_type($post_id);
if ($post_type !== 'revues') return;
// DE-LINK ARTICLES NOT USED IN THE ACF CHAPTER HANDLER IN REVUE POST ('articles' field)
// Remove articles that are no longer associated with the current review
dynamiques_revue_empty_unmapped_articles($current_revue_ID);
// Link articles to the current review
dynamiques_revue_link_mapped_articles($current_revue_ID);
}
add_action('acf/save_post', 'dynamiques_revue_save_post', 20);
//*******************************************************************************************************/
// Compare the articles linked to the current review being saved and remove those that are no longer associated
//*******************************************************************************************************/
function dynamiques_revue_empty_unmapped_articles($current_revue_ID)
{
$articles = get_field('articles', $current_revue_ID);
if (!$articles) return;
// GET ALL ARTICLES RELATED TO THE REVUE AND CHECK IF THEY ARE HANDLED BY THE PARENT REVUE IN THE ARTICLE FIELD
@ -58,6 +66,7 @@ function dynamiques_revue_empty_unmapped_articles($current_revue_ID)
function dynamiques_revue_link_mapped_articles($current_revue_ID)
{
$articles = get_field('articles', $current_revue_ID);
if (!$articles) return;
foreach ($articles as $article) {
$article_id = $article->ID;
@ -65,3 +74,42 @@ function dynamiques_revue_link_mapped_articles($current_revue_ID)
update_field('related_revue', $current_revue_ID, $article_id);
}
}
//*******************************************************************************************************/
// Check if the issue number is already used by another revue
//*******************************************************************************************************/
add_filter('acf/validate_value/name=issue_number', 'dynamiques_revue_check_issue_number', 10, 4);
function dynamiques_revue_check_issue_number($valid, $value, $field, $input)
{
if (!$valid) {
return $valid;
}
// Récupère l'ID du post en cours d'édition
$current_revue_ID = isset($_POST['post_ID']) ? intval($_POST['post_ID']) : 0;
// Recherche d'autres revues avec le même numéro
$args = array(
'post_type' => 'revues',
'post_status' => 'any',
'posts_per_page' => 1,
'post__not_in' => array($current_revue_ID),
'meta_query' => array(
array(
'key' => 'issue_number',
'value' => $value,
'compare' => '=',
),
),
);
$query = new WP_Query($args);
if ($query->have_posts()) {
return 'Ce numéro de revue existe déjà.';
}
return $valid;
}

View File

@ -15,8 +15,10 @@
/* ########### PAGES ############ */
@import './pages/single-revues.css';
@import './pages/archive-revues.css';
/* ########### LAYOUT ############ */
@import './layout/nav.css';
/* @import './layout/nav.css';
@import './layout/footer.css';
@import './layout/section.css';

View File

@ -1,271 +1,10 @@
.primary-menu-container {
@apply mx-auto
text-white
relative
h-fit
py-8
px-8
2xl:px-32
my-0;
nav#primary-menu-nav {
@apply max-w-screen-2xl w-full mx-auto;
}
.logo {
@apply mr-12
w-[190px]
xl:w-[222px];
}
#primary-menu {
@apply flex
flex-col
lg:flex-row
items-center
justify-around
lg:justify-between;
ul {
@apply lg:flex
gap-x-2
lg:gap-x-4
xl:gap-x-8
pr-0
lg:pr-4
xl:pr-24;
}
li.menu-item:has(.page_icon) {
@apply flex flex-col items-center justify-center gap-3;
@apply flex flex-row items-center justify-center gap-2;
.page_icon {
@apply w-12 h-12 object-contain;
}
}
/* Highlight using list element */
li.current-page-parent > a,
li.current_page_item > a {
@apply font-medium
!text-white
decoration-secondary
underline
underline-offset-8;
}
li.menu-item {
@apply font-medium
text-sm
text-center;
&:hover > a,
a:focus {
@apply cursor-pointer
underline
underline-offset-8
!text-white;
}
a:focus {
text-decoration: none;
}
/* IF SUBMENU CHILD */
.menu-item-submenu-toggle {
&:hover,
&:focus {
@apply !text-white;
}
@apply relative pr-4;
&:after {
@apply absolute right-0;
content: '▼';
position: absolute;
display: inline-block;
line-height: 0.5;
height: 10px;
top: calc(50% - 4px);
width: 10px;
margin-left: 20px;
transform-origin: center;
background-repeat: no-repeat;
background-size: contain;
transition: all 0.3s ease-out;
}
}
.menu-item-submenu-toggle[aria-expanded='false']:after {
transform: rotate(0deg);
}
.menu-item-submenu-toggle[aria-expanded='true']:after {
transform: rotate(180deg);
}
}
li.menu-item.menu-item-has-children:hover {
@screen lg {
.menu-item-submenu-toggle:after {
transform: rotate(180deg);
}
.sub-menu {
display: block;
}
}
}
/* submenus */
li .sub-menu {
@apply bg-primary
p-6
mx-auto
lg:mx-0
static
lg:absolute;
z-index: 999;
display: none;
&.sub-menu-open {
display: block;
}
li {
@apply py-2 lg:text-left;
}
> a::after {
transform: translateY(-2px) rotate(-90deg);
content: '';
display: inline-block;
height: 10px;
width: 10px;
margin-left: 20px;
background-image: url('../resources/img/arrow_down_white.svg');
background-repeat: no-repeat;
background-size: contain;
transition: all 0.3s ease-out;
@apply w-7 h-7 object-contain;
}
}
}
}
button#burger-menu-toggle {
@apply lg:hidden
absolute
right-10
-translate-y-1/2
z-50
top-1/2;
width: 26px;
height: 26px;
.menu-toggle-bar {
@apply top-1/2
absolute
block
right-0
w-full
h-[2px]
/* bg-red-400 */
bg-white;
margin-top: -1px;
transition: all 0.3s ease;
&.menu-toggle-bar--top {
transform: translate(0, -7px);
}
&.menu-toggle-bar--middle {
}
&.menu-toggle-bar--bottom {
transform: translate(0, 7px);
}
.nav-open & {
@apply bg-secondary;
&.menu-toggle-bar--top {
transform: translate(0, 0) rotate(45deg);
}
&.menu-toggle-bar--middle {
opacity: 0;
}
&.menu-toggle-bar--bottom {
transform: translate(0, 0) rotate(-45deg);
}
}
}
&:hover {
path {
@apply fill-secondary;
}
}
}
/* RESPONSIVE */
@media (max-width: 960px) {
.primary-menu-container {
#primary-menu {
@apply bg-primary
mt-0
left-0
z-40
absolute
hidden;
/* transition: all 0.3s ease-out;
transform: translateY(-120vh); */
min-height: 100vh;
height: fit-content;
top: 0;
width: 100vw;
/* Rendu conditionnel de l'élément si contenu dans une classe de parent (nesting inversé) */
.nav-open & {
@apply flex;
}
> ul {
@apply max-w-xs
mx-auto;
/* min-height: 96vh; */
padding-top: 5vh;
}
li.menu-item {
@apply mt-0
text-center
text-white
font-medium
py-8
text-lg
!block
pb-0;
.sub-menu li {
@apply text-sm;
}
}
}
}
/* BURGER MENU */
body:has(.nav-open) {
@apply max-h-screen
overflow-hidden;
/* #content,
footer,
.wpml-ls-statics-footer {
@apply !hidden;
} */
}
.cta_plain_secondary,
.switch_language {
/* @apply self-end; */
}
}
@media (max-width: 960px) and (hover: none) {
/* ul {
@apply w-max mx-auto;
} */
.primary-menu-container {
li.menu-item {
@apply mx-auto
/* !text-left */;
}
}
}

View File

@ -0,0 +1,5 @@
#page-archive-revues {
.explore-tags {
@apply bg-carhop-orange-50;
}
}

View File

@ -0,0 +1,95 @@
<svg width="430" height="453" viewBox="0 0 430 453" fill="none" xmlns="http://www.w3.org/2000/svg">
<g filter="url(#filter0_d_420_14171)">
<rect x="2.90234" y="243.875" width="188.605" height="103.586" transform="rotate(-6.72087 2.90234 243.875)" fill="#FFEBC6"/>
<rect x="14.0039" y="252.636" width="168.605" height="83.5861" transform="rotate(-6.72087 14.0039 252.636)" stroke="white" stroke-width="20"/>
</g>
<g filter="url(#filter1_d_420_14171)">
<rect x="239.316" y="2" width="188.605" height="103.586" transform="rotate(1.62337 239.316 2)" fill="#FFEBC6"/>
<rect x="249.029" y="12.2793" width="168.605" height="83.5861" transform="rotate(1.62337 249.029 12.2793)" stroke="white" stroke-width="20"/>
</g>
<g filter="url(#filter2_d_420_14171)">
<rect x="224.777" y="328.32" width="188.605" height="103.586" transform="rotate(5.98277 224.777 328.32)" fill="#FFEBC6"/>
<rect x="233.681" y="339.308" width="168.605" height="83.5861" transform="rotate(5.98277 233.681 339.308)" stroke="white" stroke-width="20"/>
</g>
<path d="M219.356 300.958C270.899 300.958 312.682 259.174 312.682 207.632C312.682 156.09 270.899 114.307 219.356 114.307C167.814 114.307 126.031 156.09 126.031 207.632C126.031 259.174 167.814 300.958 219.356 300.958Z" fill="#FFA630"/>
<rect x="83.0352" y="106.489" width="36.1352" height="36.1352" fill="white"/>
<rect x="149.488" y="55.6735" width="36.1352" height="36.1352" fill="white"/>
<rect x="301.934" y="220.825" width="36.1352" height="36.1352" fill="white"/>
<rect x="349.816" y="139.715" width="36.1352" height="36.1352" fill="white"/>
<rect x="368.387" y="256.982" width="36.1352" height="36.1352" fill="white"/>
<g clip-path="url(#clip0_420_14171)">
<path d="M360.59 166.957H365.792L377.192 155.792V145.719L360.59 161.985V166.957Z" stroke="#136F63" stroke-width="2"/>
<path d="M357.488 169.992L365.141 162.497" stroke="#136F63" stroke-width="2"/>
</g>
<g clip-path="url(#clip1_420_14171)">
<path d="M92.582 114.223H105.976L109.62 117.813V134.89H92.582V114.223Z" stroke="#136F63" stroke-width="2"/>
</g>
<g clip-path="url(#clip2_420_14171)">
<path d="M316.051 234.722L312.867 237.978L316.051 241.235L319.234 237.978L316.051 234.722Z" stroke="#136F63" stroke-width="2"/>
<path d="M324.953 234.722L321.77 237.979L324.953 241.236L328.137 237.979L324.953 234.722Z" stroke="#136F63" stroke-width="2"/>
<path d="M309.332 229.213H331.671V246.371H324.165L320.304 250.315L316.843 246.775H309.332V229.213Z" stroke="#136F63" stroke-width="2"/>
</g>
<g clip-path="url(#clip3_420_14171)">
<path d="M176.85 69.8752H162.695" stroke="#136F63" stroke-width="2"/>
<path d="M176.85 83.4228H162.695" stroke="#136F63" stroke-width="2"/>
<path d="M171.407 63.1044H157.305" stroke="#136F63" stroke-width="2"/>
<path d="M172.909 76.6519H162.695" stroke="#136F63" stroke-width="2"/>
</g>
<g clip-path="url(#clip4_420_14171)">
<path d="M386.707 263.823V285.322" stroke="#136F63" stroke-width="2"/>
<path d="M381.641 267.852V281.288" stroke="#136F63" stroke-width="2"/>
<path d="M375.785 272.043V277.102" stroke="#136F63" stroke-width="2"/>
<path d="M392.266 267.852V281.288" stroke="#136F63" stroke-width="2"/>
<path d="M398.121 272.043V277.102" stroke="#136F63" stroke-width="2"/>
</g>
<defs>
<filter id="filter0_d_420_14171" x="0.902344" y="219.802" width="203.434" height="128.947" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feMorphology radius="1" operator="dilate" in="SourceAlpha" result="effect1_dropShadow_420_14171"/>
<feOffset/>
<feGaussianBlur stdDeviation="0.5"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.0745098 0 0 0 0 0.435294 0 0 0 0 0.388235 0 0 0 1 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_420_14171"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_420_14171" result="shape"/>
</filter>
<filter id="filter1_d_420_14171" x="234.383" y="0" width="195.461" height="112.888" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feMorphology radius="1" operator="dilate" in="SourceAlpha" result="effect1_dropShadow_420_14171"/>
<feOffset/>
<feGaussianBlur stdDeviation="0.5"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.0745098 0 0 0 0 0.435294 0 0 0 0 0.388235 0 0 0 1 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_420_14171"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_420_14171" result="shape"/>
</filter>
<filter id="filter2_d_420_14171" x="211.98" y="326.32" width="202.375" height="126.68" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feMorphology radius="1" operator="dilate" in="SourceAlpha" result="effect1_dropShadow_420_14171"/>
<feOffset/>
<feGaussianBlur stdDeviation="0.5"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.0745098 0 0 0 0 0.435294 0 0 0 0 0.388235 0 0 0 1 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_420_14171"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_420_14171" result="shape"/>
</filter>
<clipPath id="clip0_420_14171">
<rect width="20.7778" height="26.198" fill="white" transform="translate(357.043 144.232)"/>
</clipPath>
<clipPath id="clip1_420_14171">
<rect width="18.0676" height="21.6811" fill="white" transform="translate(92.0664 113.716)"/>
</clipPath>
<clipPath id="clip2_420_14171">
<rect width="23.4535" height="22.4762" fill="white" transform="translate(308.773 228.643)"/>
</clipPath>
<clipPath id="clip3_420_14171">
<rect width="19.5445" height="21.499" fill="white" transform="translate(157.305 62.5141)"/>
</clipPath>
<clipPath id="clip4_420_14171">
<rect width="23.4535" height="21.499" fill="white" transform="translate(375.227 263.823)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@ -21,7 +21,6 @@ $issue_related_articles = new WP_Query(array(
$articles = get_field('articles', $current_issue->ID);
write_log($articles);
?>
@ -31,7 +30,6 @@ write_log($articles);
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<section class="single-revue__header ">
<div class="single-revue__header__inner ">
<div class="content">

View File

@ -56,6 +56,19 @@ module.exports = {
900: '#7a240d',
950: '#461002',
},
'carhop-red': {
50: '#fcf3f8',
100: '#fbe8f2',
200: '#f8d2e6',
300: '#f4add0',
400: '#ec7ab0',
500: '#e25291',
600: '#d0326f',
700: getBaseColor('carhop-red'), // Base Color
800: '#951f49',
900: '#7c1f3f',
950: '#4c0b21',
},
'carhop-purple': {
50: '#f8f5ff',
100: '#efe8ff',

View File

@ -0,0 +1,55 @@
<?php
$subtitle = $args['subtitle'];
$title = $args['title'];
$content = $args['content'];
$cta = $args['cta'];
$cover = $args['cover'];
$cover_size = $args['cover_size'];
?>
<section class="deligraph-blocks-chapter-section chapter-section chapter-section--left chapter-section--has-background">
<svg
class="chapter-section__background chapter-section__background--left"
width="1302"
height="654"
viewBox="0 0 1302 654"
preserveAspectRatio="none">
<path
d="M1302 0L0 15.8281V654L1302 642.633L1302 0Z"
fill="#136F63" />
</svg>
<div class="chapter-section__content">
<div class="chapter-section__innerblocks">
<?php if ($subtitle) : ?>
<h2 class="wp-block-heading chapter-section__title"><?php echo $subtitle; ?></h2>
<?php endif; ?>
<?php if ($title) : ?>
<h3 class="wp-block-heading chapter-section__title"><?php echo $title; ?></h3>
<?php endif; ?>
<?php if ($content) : ?>
<p class="chapter-section__title"><?php echo $content; ?></p>
<?php endif; ?>
<a href="https://televie.be/agir/faire-un-don/" class="wp-block-carhop-blocks-cta align--left" style="color:#136F63;--cta-current-color:#136F63">salut le test<div class="icon"><svg xmlns="http://www.w3.org/2000/svg" id="carhop-fleche-lien-externe-full_svg__fleche-lien-externe-full" viewBox="0 0 32 32" style="--cta-current-color:#136F63">
<defs>
<style>
.carhop-fleche-lien-externe-full_svg__cls-1 {
fill: none;
stroke: #000;
stroke-width: 2px
}
</style>
</defs>
<path d="m21.15 10.59-9.38 10.02M21.15 21.4V10.59H10.83" class="carhop-fleche-lien-externe-full_svg__cls-1"></path>
<circle cx="16" cy="16" r="15" class="carhop-fleche-lien-externe-full_svg__cls-1"></circle>
</svg></div></a>
</div>
</div>
<img decoding="async" class="chapter-section__cover chapter-section__cover--<?php echo $cover_size ?>" src="http://dynamiques.carhop.local/wp-content/uploads/sites/2/2025/05/carhop-soutenir-green.svg" alt="">
</section>

View File

@ -0,0 +1,29 @@
<?php
$title = $args['title'];
$subtitle = $args['subtitle'];
$description = $args['description'];
$cover = $args['cover'];
?>
<section class="page-header content-section content-section--full-width">
<div class="content-section__inner page-header__inner">
<div class="page-header__content">
<h1 class="page-header__title title-small "><?php echo $title; ?></h1>
<?php if ($subtitle) : ?>
<p class="page-header__subtitle subtitle-big"><?php echo $subtitle; ?></p>
<?php endif; ?>
<?php if ($description) : ?>
<p class="page-header__description"><?php echo $description; ?></p>
<?php endif; ?>
</div>
<div class="page-header__image">
<?php if ($cover) : ?>
<img src="<?php echo $cover['url']; ?>" alt="<?php echo $title; ?>">
<?php endif; ?>
</div>
</div>
</section>

View File

@ -0,0 +1,30 @@
<?php
$ID = $args['ID'];
$title = get_the_title($ID);
$date = get_the_date('F Y', $ID);
$image = get_the_post_thumbnail_url($ID);
$link = get_the_permalink($ID);
$issue_number = get_field('issue_number', $ID);
?>
<a href="<?php echo $link; ?>" class="card-revue">
<div class="card-revue__image">
<img src="<?php echo $image; ?>" alt="<?php echo $title; ?>">
</div>
<div class="card-revue__content">
<div class="content-meta">
<span class="content-meta__type content-meta__type--revue">Revue</span>
</div>
<h3 class="card-revue__title"><?php echo $title; ?></h3>
<time class="card-revue__date" datetime="<?php echo $date; ?>"><?php echo $date; ?></time>
</div>
<div class="issue-number">
<?php if ($issue_number) : ?>
<span><?php echo $issue_number; ?></span>
<?php endif; ?>
</div>
</a>

View File

@ -0,0 +1,73 @@
<?php
$revues = new WP_Query(array(
'post_type' => 'revues',
'posts_per_page' => -1
));
$post_count = $revues->post_count;
$authors = get_posts(array(
'post_type' => 'auteurs',
'posts_per_page' => -1
));
$thematiques = get_terms(array(
'taxonomy' => 'etiquettes',
'hide_empty' => true,
));
?>
<section class="revues-grid content-section">
<div class="content-section__inner">
<div class="revues-grid__toolbar">
<h2 class="revues-count">
<span class="revues-count__count">
<?php echo $post_count; ?>
</span>
<span class="revues-count__text">
<?php _e('Revues', 'dynamiques'); ?>
</span>
</h2>
<div class="search-bar">
<input type="text" placeholder="<?php _e('Rechercher par mot-clé', 'dynamiques'); ?>">
</div>
<div class="revues-grid__toolbar-actions">
<select name="etiquettes">
<option value="1"><?php _e('Thématiques', 'dynamiques'); ?></option>
<?php foreach ($thematiques as $thematique) : ?>
<option value="<?php echo $thematique->term_id; ?>"><?php echo $thematique->name; ?></option>
<?php endforeach; ?>
</select>
<select name="auteurs">
<option value="1"><?php _e('Auteur·e·s', 'dynamiques'); ?></option>
<?php foreach ($authors as $author) : ?>
<option value="<?php echo $author->ID; ?>"><?php echo $author->post_title; ?></option>
<?php endforeach; ?>
</select>
<select name="sort_by">
<option value="recent" selected><?php _e('Numéros récents en premier', 'dynamiques'); ?></option>
<option value="oldest"><?php _e('Numéros anciens en premier', 'dynamiques'); ?></option>
<option value="alphabetical"><?php _e('Par ordre alphabétique', 'dynamiques'); ?></option>
</select>
</div>
</div>
<ul class="revues-grid__list">
<?php if ($revues->have_posts()) : ?>
<?php while ($revues->have_posts()) : $revues->the_post(); ?>
<?php get_template_part('template-parts/revues/card-revue', null, array(
'date' => get_the_date(),
'image' => get_the_post_thumbnail_url(),
'link' => get_the_permalink(),
'ID' => get_the_ID()
)); ?>
<?php endwhile; ?>
<?php endif; ?>
</div>
</section>

View File

@ -24,6 +24,11 @@
"slug": "carhop-orange",
"color": "#ffa630"
},
{
"name": "Carhop Red",
"slug": "carhop-red",
"color": "#ae2154"
},
{
"name": "Carhop Purple",
"slug": "carhop-purple",