templates/entry/thematic.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% from '/macro/breadcrumb.html.twig' import breadcrumb %}
  3. {% from '/macro/newsCard.html.twig' import newsCard %}
  4. {% block mainClass %}c-news-list{% endblock %}
  5. {% set currentPage = app.request.query.get('p', 1) %}
  6. {% block body %}
  7.     <section class="c-hero">
  8.         <div class="o-wrapper-100vw c-hero__wrapper c-news-list__hero-wrapper">
  9.             <div class="o-wrapper">
  10.                 {{ breadcrumb(entry.title) }}
  11.             </div>
  12.             <div class="o-wrapper-full c-hero__flex-wrapper">
  13.                 <div class="o-wrapper-10-column c-hero__item c-hero__text-wrapper">
  14.                     <div class="c-hero__text-inner">
  15.                         <h1 class="c-h1 align-center c-hero__title">{{ entry.title }}</h1>
  16.                         {% if entry.summary %}
  17.                             <p class="c-hero__summary">{{ entry.summary | nl2br }}</p>
  18.                         {% endif %}
  19.                     </div>
  20.                 </div>
  21.             </div>
  22.         </div>
  23.     </section>
  24.     <div>
  25.         {% if thematics|length > 0 %}
  26.             {% set category_options = {
  27.                 breakpoints: {
  28.                     320: {
  29.                         slidesPerView: 'auto',
  30.                         spaceBetween: 24,
  31.                         navigation: false
  32.                     },
  33.                     565: {
  34.                         slidesPerView: 5,
  35.                         spaceBetween: 12,
  36.                         navigation: {
  37.                             nextEl: '.c-swiper__button-next',
  38.                             prevEl: '.c-swiper__button-prev'
  39.                         }
  40.                     },
  41.                     1024: {
  42.                         slidesPerView: 7,
  43.                         spaceBetween: 12,
  44.                         navigation: {
  45.                             nextEl: '.c-swiper__button-next',
  46.                             prevEl: '.c-swiper__button-prev'
  47.                         }
  48.                     }
  49.                 }
  50.             } %}
  51.             <div class="c-news-list__category-filter">
  52.                 <h2 class="c-news-list__category-title u-picto-bottom">{{ 'news_list.category_filter'|trans }}</h2>
  53.                 <div class="o-wrapper-10-column">
  54.                     <div class="swiper" data-controller="carousel"
  55.                          data-carousel-options-value="{{ category_options|json_encode }}">
  56.                         <div class="swiper-wrapper">
  57.                             {% for thematic in thematics %}
  58.                                 <div class="c-news-list__category-filter-item swiper-slide">
  59.                                     <a class="c-news-list__category-filter-link"
  60.                                        href="{{ get_entry_path(thematic, 'news_list_by_thematic') }}">
  61.                                         <div>
  62.                                             <img class="c-news-list__category-image"
  63.                                                  src="{{ moka_media_filtered_path(thematic.icon, 'thematic_icon') }}"
  64.                                                  alt="{{ thematic.title }}">
  65.                                             <p class="u-mb-0">{{ thematic.title }}</p>
  66.                                         </div>
  67.                                     </a>
  68.                                 </div>
  69.                             {% endfor %}
  70.                         </div>
  71.                         <div class="u-align-center u-hidden@until-sm">
  72.                             <div class="c-swiper__navigation c-slider__swiper-navigation">
  73.                                 <div class="c-swiper__button c-swiper__button-prev"></div>
  74.                                 <div class="c-swiper__button c-swiper__button-next"></div>
  75.                             </div>
  76.                         </div>
  77.                     </div>
  78.                 </div>
  79.             </div>
  80.         {% endif %}
  81.         <div class="c-tabs c-news-list__tabs">
  82.             {% set type_options = {
  83.                 slidesPerView: 'auto',
  84.                 navigation: false,
  85.                 spaceBetween: 24
  86.             } %}
  87.             {% set currentPath = path(app.request.attributes.get('_route'),app.request.attributes.get('_route_params')) %}
  88.             <div class="c-tabs__inner swiper" data-controller="carousel"
  89.                  data-carousel-options-value="{{ type_options|json_encode }}">
  90.                 <div class="c-tabs__list swiper-wrapper">
  91.                     <div class="c-tabs__item swiper-slide">
  92.                         <a class="c-tabs__tab{% if app.request.query.get('type') == '' %} is-active{% endif %}"
  93.                            href="{{ currentPath }}">{{ 'news_list.type_filter.all'|trans }} ({{ newsCount }})</a>
  94.                     </div>
  95.                     <div class="c-tabs__item swiper-slide">
  96.                         <a class="c-tabs__tab{% if app.request.query.get('type') == 'article' %} is-active{% endif %}"
  97.                            href="{{ currentPath }}?type=article">{{ 'news_list.type_filter.article'|trans }}
  98.                             ({{ articleCount }})</a>
  99.                     </div>
  100.                     <div class="c-tabs__item swiper-slide">
  101.                         <a class="c-tabs__tab{% if app.request.query.get('type') == 'tuto' %} is-active{% endif %}"
  102.                            href="{{ currentPath }}?type=tuto">{{ 'news_list.type_filter.tuto'|trans }} ({{ tutoCount }}
  103.                             )</a>
  104.                     </div>
  105.                 </div>
  106.             </div>
  107.         </div>
  108.     </div>
  109.     {% if newslist | length > 0 %}
  110.         <section class="c-news-list__results">
  111.             <div class="o-wrapper-12-column-xl">
  112.                 <div class="o-layout--with-margin">
  113.                     {% for news in newslist %}
  114.                         <div class="o-layout__item--third">
  115.                             {{ newsCard(news, null, 150) }}
  116.                         </div>
  117.                     {% endfor %}
  118.                 </div>
  119.             </div>
  120.             {% set pageCount = (newslist.nbResults / newslist.maxPerPage) | round(0, 'ceil') %}
  121.             {% set queryParams = app.request.query.all %}
  122.             {% if entry.slug is defined %}
  123.                 {% set queryParams = queryParams|merge({slug: entry.slug}) %}
  124.             {% endif %}
  125.             <div class="c-pagination">
  126.                 <ul class="c-pagination__list">
  127.                     {% if newslist.hasPreviousPage %}
  128.                         <li class="c-pagination__item c-pagination__item--prev">
  129.                             <a class="c-pagination__link c-pagination__arrow c-pagination__arrow--prev"
  130.                                href="{{ path(app.request.attributes.get('_route'), queryParams|merge({ p: newslist.previousPage }) ) }}">
  131.                                 <span class="u-sr-only">PrĂ©cedent</span>
  132.                             </a>
  133.                         </li>
  134.                     {% endif %}
  135.                     {% for p in 1..pageCount %}
  136.                         <li class="c-pagination__item">
  137.                             {% if currentPage == p %}
  138.                                 <span class="c-pagination__current">{{ p }}</span>
  139.                             {% else %}
  140.                                 <a class="c-pagination__link"
  141.                                    href="{{ path(app.request.attributes.get('_route'), queryParams|merge({ p: p }) ) }}">{{ p }}</a>
  142.                             {% endif %}
  143.                         </li>
  144.                     {% endfor %}
  145.                     {% if newslist.hasNextPage %}
  146.                         <li class="c-pagination__item c-pagination__item--next">
  147.                             <a class="c-pagination__link c-pagination__arrow c-pagination__arrow--next"
  148.                                href="{{ path(app.request.attributes.get('_route'), queryParams|merge({ p: newslist.nextPage }) ) }}">
  149.                                 <span class="u-sr-only">Suivant</span>
  150.                             </a>
  151.                         </li>
  152.                     {% endif %}
  153.                 </ul>
  154.             </div>
  155.         </section>
  156.     {% endif %}
  157. {% endblock %}