Les pages doivent avoir une structure de titres, des repères et un lien d’évitement
Les personnes qui utilisent un lecteur d’écran parcourent une page par ses titres et ses régions, comme les clients voyants la survolent du regard. Sans eux, et sans lien « Aller au contenu », elles doivent écouter tout l’en-tête et tout le méga-menu sur chaque page avant d’atteindre les produits.
- Identifiant de la règle
- vs-headings-landmarks
- Source
- Contrôle Validiscan
- Impact
- Modéré
- Niveau de correction
- AUTO
- sur Shopify, Shopware, WooCommerce et Magento
- Statut
- exécutée
Ce que fait le contrôle
Signale les pages sans h1, les niveaux de titre sautés, l’absence de repère main, les repères en double sans étiquette et l’absence de lien d’évitement (1.3.1, 2.4.1). Remplace les règles axe bypass, page-has-heading-one, landmark-one-main et heading-order.
Le contrôle s’exécute dans chaque zone d’affichage scannée et ignore les titres et les repères qui y sont masqués par display: none ou aria-hidden="true".
- Titres :
h1àh6etrole="heading"(niveau tiré dearia-level, sinon 2), dans l’ordre du document, sauf à l’intérieur des boîtes de dialogue. Plusieurs élémentsh1sont également signalés. Un saut est un titre qui descend de plus d’un niveau par rapport au titre précédent ; le premier saut porte le constat. - Repères :
headeretfooterne comptent qu’en dehors dearticle,aside,main,navetsection;sectionetformne comptent qu’avecaria-labelledby,aria-labeloutitle. Deux repères ou plus d’un même rôle qui portent le même nom, ou aucun nom, donnent un constat par rôle. - Lien d’évitement : l’un des dix premiers éléments focalisables, dans l’ordre du document, doit être un lien vers la même page dont le nom contient un mot comme « skip » ou « zum Inhalt » et dont la cible existe. Les liens placés hors de l’écran comptent. Une cible cassée est signalée sur le lien. Avec un repère
main, l’absence de lien d’évitement est d’impact modéré, et non grave.
Une personne doit juger si les titres décrivent bien leurs sections.
Comment corriger
Ajoutez un lien « Aller au contenu » comme premier élément focalisable, placez le contenu de la page dans un seul élément <main>, donnez à chaque page un seul h1 (le nom du produit ou de la catégorie) et imbriquez les autres titres sans sauter de niveau, et étiquetez les régions de navigation répétées avec aria-label.
Critères de succès WCAG
- 1.3.1 Info and Relationships, niveau A
- 2.4.1 Bypass Blocks, niveau A
Clauses de la norme EN 301 549
| Critère WCAG | Version 3.2.1 | Version 4.1.1 |
|---|---|---|
| 1.3.1 | 9.1.3.1 | 9.1.3.1 |
| 2.4.1 | 9.2.4.1 | 9.2.4.1 |
Où une recette corrige le problème
Shopify : recette heading-levels
Afficher l’avant et l’après (1)
sections/featured-collection.liquid Modifications apportées à sections/featured-collection.liquid (lignes ajoutées : 1, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 1 | 1 | {%- liquid | |
| 2 | 2 | assign featured = section.settings.collection | |
| 3 | Supprimée | assign card_heading = 'h4' | |
| 3 | Ajoutée | assign card_heading = 'h3' | |
| 4 | 4 | -%} | |
| 5 | 5 | <div class="featured-collection page-width section-spacing"> | |
| 6 | 6 | <div class="title-wrapper"> |
sections/header.liquid Modifications apportées à sections/header.liquid (lignes ajoutées : 3, lignes supprimées : 0)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 3 | 3 | assign menu = linklists[section.settings.menu] | |
| 4 | 4 | assign icon_size = 18 | |
| 5 | 5 | assign logo_is_heading = false | |
| 6 | Ajoutée | if request.page_type == 'index' | |
| 7 | Ajoutée | assign logo_is_heading = true | |
| 8 | Ajoutée | endif | |
| 6 | 9 | -%} | |
| 7 | 10 | <div class="header-wrapper"> | |
| 8 | 11 | <header class="header page-width"{% if header_lang != '' %} lang="{{ header_lang }}"{% endif %}> |
sections/main-collection.liquid Modifications apportées à sections/main-collection.liquid (lignes ajoutées : 1, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 6 | 6 | wishlist heart nested inside the product image link. | |
| 7 | 7 | {%- endcomment -%} | |
| 8 | 8 | {%- liquid | |
| 9 | Supprimée | assign card_heading = 'h4' | |
| 9 | Ajoutée | assign card_heading = 'h3' | |
| 10 | 10 | assign price_max = collection.price_max_rounded | |
| 11 | 11 | assign in_stock_count = collection.products | where: 'available', true | size | |
| 12 | 12 | assign out_of_stock_count = collection.products_count | minus: in_stock_count |
sections/main-product.liquid Modifications apportées à sections/main-product.liquid (lignes ajoutées : 1, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 13 | 13 | assign featured = product.featured_image | |
| 14 | 14 | assign form_id = 'product-form-' | append: section.id | |
| 15 | 15 | assign qty_id = 'Quantity-' | append: section.id | |
| 16 | Supprimée | assign sub_heading = 'h4' | |
| 16 | Ajoutée | assign sub_heading = 'h2' | |
| 17 | 17 | assign size_option = nil | |
| 18 | 18 | for option in product.options_with_values | |
| 19 | 19 | if option.name == 'Size' |
sections/main-search.liquid Modifications apportées à sections/main-search.liquid (lignes ajoutées : 1, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 1 | 1 | {%- liquid | |
| 2 | Supprimée | assign card_heading = 'h4' | |
| 2 | Ajoutée | assign card_heading = 'h3' | |
| 3 | 3 | -%} | |
| 4 | 4 | <div class="template-search page-width"> | |
| 5 | 5 | <h1 class="template-search__title">{{ 'templates.search.title' | t }}</h1> |
Shopify : recette skip-link-main
Afficher l’avant et l’après (1)
assets/base.css.liquid Modifications apportées à assets/base.css.liquid (lignes ajoutées : 30, lignes supprimées : 0)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 1866 | 1866 | } | |
| 1867 | 1867 | ||
| 1868 | 1868 | /* ----------------------------------------------------------------- motion */ | |
| 1869 | Ajoutée | ||
| 1870 | Ajoutée | /* validiscan:skip-link-main */ | |
| 1871 | Ajoutée | .skip-to-content-link:not(:focus) { | |
| 1872 | Ajoutée | position: absolute !important; | |
| 1873 | Ajoutée | overflow: hidden; | |
| 1874 | Ajoutée | width: 1px; | |
| 1875 | Ajoutée | height: 1px; | |
| 1876 | Ajoutée | margin: -1px; | |
| 1877 | Ajoutée | padding: 0; | |
| 1878 | Ajoutée | border: 0; | |
| 1879 | Ajoutée | clip: rect(0 0 0 0); | |
| 1880 | Ajoutée | white-space: nowrap; | |
| 1881 | Ajoutée | } | |
| 1882 | Ajoutée | ||
| 1883 | Ajoutée | .skip-to-content-link:focus { | |
| 1884 | Ajoutée | z-index: 9999; | |
| 1885 | Ajoutée | position: fixed !important; | |
| 1886 | Ajoutée | top: 0.5rem; | |
| 1887 | Ajoutée | left: 0.5rem; | |
| 1888 | Ajoutée | overflow: visible; | |
| 1889 | Ajoutée | width: auto; | |
| 1890 | Ajoutée | height: auto; | |
| 1891 | Ajoutée | margin: 0; | |
| 1892 | Ajoutée | padding: 0.75rem 1.25rem; | |
| 1893 | Ajoutée | clip: auto; | |
| 1894 | Ajoutée | background-color: #ffffff; | |
| 1895 | Ajoutée | color: #121212; | |
| 1896 | Ajoutée | text-decoration: underline; | |
| 1897 | Ajoutée | } | |
| 1898 | Ajoutée | /* /validiscan:skip-link-main */ |
layout/checkout.liquid Modifications apportées à layout/checkout.liquid (lignes ajoutées : 4, lignes supprimées : 3)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 18 | 18 | </head> | |
| 19 | 19 | ||
| 20 | 20 | <body class="template-checkout"> | |
| 21 | Ajoutée | <a class="skip-to-content-link" href="#MainContent">{{ 'accessibility.skip_to_text' | t }}</a> | |
| 21 | 22 | <header class="checkout-header"> | |
| 22 | 23 | <div class="page-width checkout-header__inner"> | |
| 23 | 24 | <a href="{{ routes.root_url }}" class="checkout-header__logo"><img src="{{ 'logo.svg' | asset_url }}" width="140" height="32"></a> | |
| 24 | Supprimée | <nav class="checkout-breadcrumb"> | |
| 25 | Ajoutée | <nav class="checkout-breadcrumb" aria-label="{{ 'accessibility.breadcrumbs' | t | escape }}"> | |
| 25 | 26 | <ol class="checkout-breadcrumb__list" role="list"> | |
| 26 | 27 | <li><a href="{{ routes.cart_url }}" class="checkout-breadcrumb__link">Cart</a></li> | |
| 27 | 28 | <li><span class="checkout-breadcrumb__current">Information</span></li> | |
| 31 | 32 | </nav> | |
| 32 | 33 | </div> | |
| 33 | 34 | </header> | |
| 34 | Supprimée | <div class="main checkout" id="MainContent"> | |
| 35 | Ajoutée | <main class="main checkout" id="MainContent" tabindex="-1"> | |
| 35 | 36 | {{ content_for_layout }} | |
| 36 | Supprimée | </div> | |
| 37 | Ajoutée | </main> | |
| 37 | 38 | ||
| 38 | 39 | <footer class="checkout-footer"> | |
| 39 | 40 | <div class="page-width"> |
layout/theme.focused.liquid Modifications apportées à layout/theme.focused.liquid (lignes ajoutées : 1, lignes supprimées : 0)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 22 | 22 | </head> | |
| 23 | 23 | ||
| 24 | 24 | <body class="gradient template-{{ template.name | handleize }} layout-focused"> | |
| 25 | Ajoutée | <a class="skip-to-content-link" href="#MainContent">{{ 'accessibility.skip_to_text' | t }}</a> | |
| 25 | 26 | {% section 'header' %} | |
| 26 | 27 | ||
| 27 | 28 | <main id="MainContent" class="content-for-layout focus-none" role="main" tabindex="-1"> |
layout/theme.liquid Modifications apportées à layout/theme.liquid (lignes ajoutées : 1, lignes supprimées : 0)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 28 | 28 | </head> | |
| 29 | 29 | ||
| 30 | 30 | <body class="gradient template-{{ template.name | handleize }}"> | |
| 31 | Ajoutée | <a class="skip-to-content-link" href="#MainContent">{{ 'accessibility.skip_to_text' | t }}</a> | |
| 31 | 32 | ||
| 32 | 33 | {% sections 'header-group' %} | |
| 33 | 34 |
locales/en.default.json Modifications apportées à locales/en.default.json (lignes ajoutées : 3, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 34 | 34 | "total_reviews": "{{ count }} reviews", | |
| 35 | 35 | "link_messages": { | |
| 36 | 36 | "new_window": "Opens in a new window." | |
| 37 | Supprimée | } | |
| 37 | Ajoutée | }, | |
| 38 | Ajoutée | "breadcrumbs": "Breadcrumbs", | |
| 39 | Ajoutée | "mobile_menu": "Mobile menu" | |
| 38 | 40 | }, | |
| 39 | 41 | "sections": { | |
| 40 | 42 | "header": { |
sections/footer.liquid Modifications apportées à sections/footer.liquid (lignes ajoutées : 1, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 17 | 17 | {%- endform -%} | |
| 18 | 18 | </div> | |
| 19 | 19 | ||
| 20 | Supprimée | <nav class="footer__menus"> | |
| 20 | Ajoutée | <nav class="footer__menus" aria-label="{{ 'sections.footer.menu' | t | escape }}"> | |
| 21 | 21 | {%- for handle in menu_handles %} | |
| 22 | 22 | {%- assign footer_menu = linklists[handle] %} | |
| 23 | 23 | <div class="footer-block footer-block--menu"> |
sections/header.liquid Modifications apportées à sections/header.liquid (lignes ajoutées : 2, lignes supprimées : 2)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 11 | 11 | {%- render 'icon', icon: 'menu', size: icon_size -%} | |
| 12 | 12 | </summary> | |
| 13 | 13 | <div class="menu-drawer"> | |
| 14 | Supprimée | <nav class="menu-drawer__navigation"> | |
| 14 | Ajoutée | <nav class="menu-drawer__navigation" aria-label="{{ 'accessibility.mobile_menu' | t | escape }}"> | |
| 15 | 15 | <ul class="menu-drawer__menu list-unstyled" role="list"> | |
| 16 | 16 | {%- for link in menu.links %} | |
| 17 | 17 | <li><a href="{{ link.url }}" class="menu-drawer__menu-item">{{ link.title | escape }}</a></li> | |
| 25 | 25 | <a href="{{ routes.root_url }}" class="header__heading-link"><img src="{{ 'logo.svg' | asset_url }}" width="{{ settings.logo_width }}" height="32" class="header__heading-logo"></a> | |
| 26 | 26 | {% if logo_is_heading %}</h1>{% else %}</div>{% endif %} | |
| 27 | 27 | ||
| 28 | Supprimée | <nav class="header__inline-menu"> | |
| 28 | Ajoutée | <nav class="header__inline-menu" aria-label="{{ 'sections.header.main_menu' | t | escape }}"> | |
| 29 | 29 | <ul class="list-menu list-menu--inline" role="list"> | |
| 30 | 30 | {%- for link in menu.links %} | |
| 31 | 31 | <li> |
Shopware : recette heading-levels
Afficher l’avant et l’après (1)
Resources/views/storefront/block/cms-block-product-grid.html.twig Modifications apportées à Resources/views/storefront/block/cms-block-product-grid.html.twig (lignes ajoutées : 1, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 5 | 5 | {% block block_product_grid %} | |
| 6 | 6 | <div class="cms-block cms-block-product-grid"> | |
| 7 | 7 | <div class="cms-block-container"> | |
| 8 | Supprimée | <h3 class="cms-block-title">{{ block.title }}</h3> | |
| 8 | Ajoutée | <h2 class="cms-block-title">{{ block.title }}</h2> | |
| 9 | 9 | <div class="row cms-listing-row"> | |
| 10 | 10 | {% for product in block.products %} | |
| 11 | 11 | {% sw_include '@Storefront/storefront/component/product/card/box-standard.html.twig' with { product: product } %} |
Shopware : recette skip-link-main
Afficher l’avant et l’après (1)
Resources/app/storefront/src/scss/base.scss Modifications apportées à Resources/app/storefront/src/scss/base.scss (lignes ajoutées : 24, lignes supprimées : 0)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 1708 | 1708 | margin: 8px 0 0; | |
| 1709 | 1709 | font-size: 0.875rem; | |
| 1710 | 1710 | } | |
| 1711 | Ajoutée | ||
| 1712 | Ajoutée | /* validiscan:skip-link-main */ | |
| 1713 | Ajoutée | /* Skip link: parked off-screen, shown at the top left when it receives keyboard focus (WCAG 2.4.1). */ | |
| 1714 | Ajoutée | .skip-to-content-link { | |
| 1715 | Ajoutée | position: absolute; | |
| 1716 | Ajoutée | top: 8px; | |
| 1717 | Ajoutée | left: -10000px; | |
| 1718 | Ajoutée | z-index: 10000; | |
| 1719 | Ajoutée | padding: 12px 16px; | |
| 1720 | Ajoutée | border: 2px solid #1f2328; | |
| 1721 | Ajoutée | background: #ffffff; | |
| 1722 | Ajoutée | color: #1f2328; | |
| 1723 | Ajoutée | font-weight: 700; | |
| 1724 | Ajoutée | } | |
| 1725 | Ajoutée | ||
| 1726 | Ajoutée | .skip-to-content-link:focus { | |
| 1727 | Ajoutée | left: 8px; | |
| 1728 | Ajoutée | } | |
| 1729 | Ajoutée | ||
| 1730 | Ajoutée | /* The skip target takes focus programmatically; it needs no focus ring of its own. */ | |
| 1731 | Ajoutée | #content-main:focus { | |
| 1732 | Ajoutée | outline: none; | |
| 1733 | Ajoutée | } | |
| 1734 | Ajoutée | /* /validiscan:skip-link-main */ |
Resources/snippet/de_DE/kaffeekontor-nord.de-DE.json Modifications apportées à Resources/snippet/de_DE/kaffeekontor-nord.de-DE.json (lignes ajoutées : 7, lignes supprimées : 0)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 193 | 193 | "notFoundText": "Die gesuchte Seite existiert nicht oder wurde verschoben.", | |
| 194 | 194 | "backToHome": "Zurück zur Startseite", | |
| 195 | 195 | "searchInstead": "Unsere Kaffees durchsuchen" | |
| 196 | Ajoutée | }, | |
| 197 | Ajoutée | "a11y": { | |
| 198 | Ajoutée | "navigation": { | |
| 199 | Ajoutée | "breadcrumb": "Brotkrümelnavigation", | |
| 200 | Ajoutée | "service": "Servicenavigation", | |
| 201 | Ajoutée | "main": "Hauptnavigation" | |
| 202 | Ajoutée | } | |
| 196 | 203 | } | |
| 197 | 204 | } |
Resources/snippet/en_GB/kaffeekontor-nord.en-GB.json Modifications apportées à Resources/snippet/en_GB/kaffeekontor-nord.en-GB.json (lignes ajoutées : 7, lignes supprimées : 0)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 193 | 193 | "notFoundText": "The page you are looking for does not exist or has moved.", | |
| 194 | 194 | "backToHome": "Back to the homepage", | |
| 195 | 195 | "searchInstead": "Search our coffees" | |
| 196 | Ajoutée | }, | |
| 197 | Ajoutée | "a11y": { | |
| 198 | Ajoutée | "navigation": { | |
| 199 | Ajoutée | "breadcrumb": "Breadcrumb", | |
| 200 | Ajoutée | "service": "Service navigation", | |
| 201 | Ajoutée | "main": "Main navigation" | |
| 202 | Ajoutée | } | |
| 196 | 203 | } | |
| 197 | 204 | } |
Resources/views/storefront/base.html.twig Modifications apportées à Resources/views/storefront/base.html.twig (lignes ajoutées : 4, lignes supprimées : 3)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 22 | 22 | <body class="{% block base_body_classes %}is-ctl-{{ page.controllerName }} is-act-{{ page.controllerAction }} sw-storefront sw-theme-kaffeekontor-nord{% endblock %}"> | |
| 23 | 23 | ||
| 24 | 24 | {% block base_body_skip_to_content %} | |
| 25 | Supprimée | {% endblock %} | |
| 25 | Ajoutée | <a class="skip-to-content-link" href="#content-main">{{ 'general.skipToContent'|trans|sw_sanitize }}</a> | |
| 26 | Ajoutée | {% endblock %} | |
| 26 | 27 | ||
| 27 | 28 | {% block base_body_inner %} | |
| 28 | 29 | {% block base_noscript %} | |
| 48 | 49 | {% endblock %} | |
| 49 | 50 | ||
| 50 | 51 | {% block base_main %} | |
| 51 | Supprimée | <div class="content-main"> | |
| 52 | Ajoutée | <main class="content-main" id="content-main" tabindex="-1"> | |
| 52 | 53 | {% block base_main_inner %} | |
| 53 | 54 | <div class="container"> | |
| 54 | 55 | {% block base_main_container %} | |
| 64 | 65 | {% endblock %} | |
| 65 | 66 | </div> | |
| 66 | 67 | {% endblock %} | |
| 67 | Supprimée | </div> | |
| 68 | Ajoutée | </main> | |
| 68 | 69 | {% endblock %} | |
| 69 | 70 | ||
| 70 | 71 | {% block base_footer %} |
Resources/views/storefront/layout/breadcrumb.html.twig Modifications apportées à Resources/views/storefront/layout/breadcrumb.html.twig (lignes ajoutées : 1, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 1 | 1 | {% block layout_breadcrumb %} | |
| 2 | Supprimée | <nav class="breadcrumb-nav"> | |
| 2 | Ajoutée | <nav class="breadcrumb-nav" aria-label="{{ 'a11y.navigation.breadcrumb'|trans|striptags }}"> | |
| 3 | 3 | <ol class="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList"> | |
| 4 | 4 | {% for item in items %} | |
| 5 | 5 | <li class="breadcrumb-item{% if loop.last %} active{% endif %}" |
Resources/views/storefront/layout/footer/footer.html.twig Modifications apportées à Resources/views/storefront/layout/footer/footer.html.twig (lignes ajoutées : 2, lignes supprimées : 2)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 23 | 23 | {% block layout_footer_navigation_service %} | |
| 24 | 24 | <div class="col-md-6 col-lg-3 footer-column"> | |
| 25 | 25 | <div class="footer-column-headline" id="footer-headline-service">{{ 'footer.serviceMenuHeadline'|trans }}</div> | |
| 26 | Supprimée | <nav class="footer-column-content"> | |
| 26 | Ajoutée | <nav class="footer-column-content" aria-labelledby="footer-headline-service"> | |
| 27 | 27 | <ul class="list-unstyled footer-service-menu-list"> | |
| 28 | 28 | <li class="footer-service-menu-item"><a class="footer-link" href="{{ url('/contact') }}">{{ 'footer.linkContact'|trans }}</a></li> | |
| 29 | 29 | <li class="footer-service-menu-item"><a class="footer-link" href="{{ url('/brewing-guide') }}">{{ 'footer.linkBrewingGuide'|trans }}</a></li> | |
| 38 | 38 | {% block layout_footer_navigation_information %} | |
| 39 | 39 | <div class="col-md-6 col-lg-3 footer-column"> | |
| 40 | 40 | <div class="footer-column-headline" id="footer-headline-information">{{ 'footer.informationHeadline'|trans }}</div> | |
| 41 | Supprimée | <nav class="footer-column-content"> | |
| 41 | Ajoutée | <nav class="footer-column-content" aria-labelledby="footer-headline-information"> | |
| 42 | 42 | <ul class="list-unstyled footer-service-menu-list"> | |
| 43 | 43 | {% for category in categories %} | |
| 44 | 44 | <li class="footer-service-menu-item"><a class="footer-link" href="{{ category.url }}">{{ category.name }}</a></li> |
Resources/views/storefront/layout/header/top-bar.html.twig Modifications apportées à Resources/views/storefront/layout/header/top-bar.html.twig (lignes ajoutées : 1, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 1 | 1 | {% block layout_header_top_bar %} | |
| 2 | 2 | <div class="top-bar"> | |
| 3 | Supprimée | <nav class="top-bar-nav"> | |
| 3 | Ajoutée | <nav class="top-bar-nav" aria-label="{{ 'a11y.navigation.service'|trans|striptags }}"> | |
| 4 | 4 | {% block layout_header_top_bar_usp %} | |
| 5 | 5 | <p class="top-bar-usp"> | |
| 6 | 6 | {% sw_icon 'checkmark' style { size: 'xs' } %} |
Resources/views/storefront/layout/navigation/navigation.html.twig Modifications apportées à Resources/views/storefront/layout/navigation/navigation.html.twig (lignes ajoutées : 2, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 3 | 3 | <div class="container"> | |
| 4 | 4 | {% block layout_main_navigation_menu %} | |
| 5 | 5 | <nav class="nav main-navigation-menu" itemscope="itemscope" | |
| 6 | Supprimée | itemtype="https://schema.org/SiteNavigationElement"> | |
| 6 | Ajoutée | itemtype="https://schema.org/SiteNavigationElement" | |
| 7 | Ajoutée | aria-label="{{ 'a11y.navigation.main'|trans|striptags }}"> | |
| 7 | 8 | {% block layout_main_navigation_menu_items %} | |
| 8 | 9 | {% for item in navigation %} | |
| 9 | 10 | {% set active = item.id == page.activeNavigationId %} |
WooCommerce : recette heading-levels
Afficher l’avant et l’après (2)
front-page.php Modifications apportées à front-page.php (lignes ajoutées : 2, lignes supprimées : 2)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 24 | 24 | ||
| 25 | 25 | <div class="kb-intro"> | |
| 26 | 26 | <?php // VALIDISCAN-SEED vs-headings-landmarks: the page title is a styled <p>, the page has no <h1>. ?> | |
| 27 | Supprimée | <p class="kb-intro__title"><?php esc_html_e( 'Woollen outdoor clothing, made to last', 'kestrel-birch' ); ?></p> | |
| 27 | Ajoutée | <h1 class="kb-intro__title"><?php esc_html_e( 'Woollen outdoor clothing, made to last', 'kestrel-birch' ); ?></h1> | |
| 28 | 28 | <p><?php echo esc_html( get_the_excerpt() ); ?></p> | |
| 29 | 29 | <p class="kb-popular"> | |
| 30 | 30 | <?php esc_html_e( 'Looking for something warm?', 'kestrel-birch' ); ?> | |
| 44 | 44 | <article class="kb-teaser"> | |
| 45 | 45 | <?php echo get_the_post_thumbnail( $kb_post, 'woocommerce_single', array( 'loading' => 'lazy' ) ); ?> | |
| 46 | 46 | <?php // VALIDISCAN-SEED vs-headings-landmarks: teaser titles jump from h2 to h4. ?> | |
| 47 | Supprimée | <h4 class="kb-teaser__title"><?php echo esc_html( get_the_title( $kb_post ) ); ?></h4> | |
| 47 | Ajoutée | <h3 class="kb-teaser__title"><?php echo esc_html( get_the_title( $kb_post ) ); ?></h3> | |
| 48 | 48 | <p><?php echo esc_html( get_the_excerpt( $kb_post ) ); ?></p> | |
| 49 | 49 | <?php // VALIDISCAN-SEED vs-link-purpose: three identical "Read more" links to different targets. ?> | |
| 50 | 50 | <a class="kb-teaser__more" href="<?php echo esc_url( get_post_meta( $kb_post->ID, '_kb_teaser_url', true ) ); ?>"><?php esc_html_e( 'Read more', 'kestrel-birch' ); ?></a> |
functions.php Modifications apportées à functions.php (lignes ajoutées : 2, lignes supprimées : 2)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 53 | 53 | 'after_widget' => '</div>', | |
| 54 | 54 | // VALIDISCAN-SEED vs-headings-landmarks: footer widget titles are h4, directly after | |
| 55 | 55 | // the h2 sections of the page (skipped heading level). | |
| 56 | Supprimée | 'before_title' => '<h4 class="widget-title">', | |
| 57 | Supprimée | 'after_title' => '</h4>', | |
| 56 | Ajoutée | 'before_title' => '<h2 class="widget-title">', | |
| 57 | Ajoutée | 'after_title' => '</h2>', | |
| 58 | 58 | ) | |
| 59 | 59 | ); | |
| 60 | 60 | } |
woocommerce/checkout/form-billing.php Modifications apportées à woocommerce/checkout/form-billing.php (lignes ajoutées : 1, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 15 | 15 | defined( 'ABSPATH' ) || exit; | |
| 16 | 16 | ?> | |
| 17 | 17 | <div class="woocommerce-billing-fields"> | |
| 18 | Supprimée | <h3><?php esc_html_e( 'Billing details', 'woocommerce' ); ?></h3> | |
| 18 | Ajoutée | <h2><?php esc_html_e( 'Billing details', 'woocommerce' ); ?></h2> | |
| 19 | 19 | ||
| 20 | 20 | <div class="woocommerce-billing-fields__field-wrapper"> | |
| 21 | 21 | <?php |
woocommerce/checkout/form-checkout.php Modifications apportées à woocommerce/checkout/form-checkout.php (lignes ajoutées : 1, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 26 | 26 | </div> | |
| 27 | 27 | </div> | |
| 28 | 28 | ||
| 29 | Supprimée | <h3 id="order_review_heading"><?php esc_html_e( 'Your order', 'woocommerce' ); ?></h3> | |
| 29 | Ajoutée | <h2 id="order_review_heading"><?php esc_html_e( 'Your order', 'woocommerce' ); ?></h2> | |
| 30 | 30 | ||
| 31 | 31 | <div id="order_review" class="woocommerce-checkout-review-order"> | |
| 32 | 32 | <?php do_action( 'woocommerce_checkout_order_review' ); ?> |
woocommerce/checkout/form-shipping.php Modifications apportées à woocommerce/checkout/form-shipping.php (lignes ajoutées : 2, lignes supprimées : 2)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 16 | 16 | defined( 'ABSPATH' ) || exit; | |
| 17 | 17 | ?> | |
| 18 | 18 | <div class="woocommerce-shipping-fields"> | |
| 19 | Supprimée | <h3><?php esc_html_e( 'Shipping details', 'kestrel-birch' ); ?></h3> | |
| 19 | Ajoutée | <h2><?php esc_html_e( 'Shipping details', 'kestrel-birch' ); ?></h2> | |
| 20 | 20 | <div class="shipping_address"> | |
| 21 | 21 | <div class="woocommerce-shipping-fields__field-wrapper"> | |
| 22 | 22 | <?php | |
| 29 | 29 | </div> | |
| 30 | 30 | ||
| 31 | 31 | <div class="woocommerce-additional-fields"> | |
| 32 | Supprimée | <h3><?php esc_html_e( 'Additional information', 'woocommerce' ); ?></h3> | |
| 32 | Ajoutée | <h2><?php esc_html_e( 'Additional information', 'woocommerce' ); ?></h2> | |
| 33 | 33 | <div class="woocommerce-additional-fields__field-wrapper"> | |
| 34 | 34 | <?php | |
| 35 | 35 | foreach ( $checkout->get_checkout_fields( 'order' ) as $kb_key => $kb_field ) { |
WooCommerce : recette skip-link-main
Afficher l’avant et l’après (1)
404.php Modifications apportées à 404.php (lignes ajoutées : 2, lignes supprimées : 2)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 9 | 9 | ?> | |
| 10 | 10 | ||
| 11 | 11 | <div id="primary" class="content-area"> | |
| 12 | Supprimée | <div id="main" class="site-main"> | |
| 12 | Ajoutée | <main id="main" class="site-main"> | |
| 13 | 13 | <div class="error-404 not-found"> | |
| 14 | 14 | <div class="page-content"> | |
| 15 | 15 | <header class="page-header"> | |
| 22 | 22 | </section> | |
| 23 | 23 | </div> | |
| 24 | 24 | </div> | |
| 25 | Supprimée | </div><!-- #main --> | |
| 25 | Ajoutée | </main><!-- #main --> | |
| 26 | 26 | </div><!-- #primary --> | |
| 27 | 27 | ||
| 28 | 28 | <?php |
archive-product.php Modifications apportées à archive-product.php (lignes ajoutées : 2, lignes supprimées : 2)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 22 | 22 | ||
| 23 | 23 | <div id="primary" class="content-area"> | |
| 24 | 24 | <?php // VALIDISCAN-SEED vs-headings-landmarks + region: <div> instead of <main>. ?> | |
| 25 | Supprimée | <div id="main" class="site-main"> | |
| 25 | Ajoutée | <main id="main" class="site-main"> | |
| 26 | 26 | ||
| 27 | 27 | <header class="woocommerce-products-header"> | |
| 28 | 28 | <h1 class="woocommerce-products-header__title page-title"><?php woocommerce_page_title(); ?></h1> | |
| 46 | 46 | <?php do_action( 'woocommerce_no_products_found' ); ?> | |
| 47 | 47 | <?php endif; ?> | |
| 48 | 48 | ||
| 49 | Supprimée | </div><!-- #main --> | |
| 49 | Ajoutée | </main><!-- #main --> | |
| 50 | 50 | </div><!-- #primary --> | |
| 51 | 51 | ||
| 52 | 52 | <?php // The sidebar div gets role="complementary" but no label (VALIDISCAN-SEED landmark-unique on pages with two). ?> |
front-page.php Modifications apportées à front-page.php (lignes ajoutées : 2, lignes supprimées : 2)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 18 | 18 | ||
| 19 | 19 | <div id="primary" class="content-area"> | |
| 20 | 20 | <?php // VALIDISCAN-SEED vs-headings-landmarks + region: the content wrapper is a <div>, not <main>. ?> | |
| 21 | Supprimée | <div id="main" class="site-main"> | |
| 21 | Ajoutée | <main id="main" class="site-main"> | |
| 22 | 22 | ||
| 23 | 23 | <?php get_template_part( 'template-parts/hero-slider' ); ?> | |
| 24 | 24 | ||
| 62 | 62 | ?> | |
| 63 | 63 | </section> | |
| 64 | 64 | ||
| 65 | Supprimée | </div><!-- #main --> | |
| 65 | Ajoutée | </main><!-- #main --> | |
| 66 | 66 | </div><!-- #primary --> | |
| 67 | 67 | ||
| 68 | 68 | <?php |
functions.php Modifications apportées à functions.php (lignes ajoutées : 1, lignes supprimées : 4)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 32 | 32 | * Storefront pieces the child theme does not use. | |
| 33 | 33 | */ | |
| 34 | 34 | function kb_remove_storefront_parts() { | |
| 35 | Supprimée | // VALIDISCAN-SEED vs-headings-landmarks: Storefront's "Skip to navigation / Skip to content" | |
| 36 | Supprimée | // links are removed because "they flash on the first Tab"; nothing replaces them. | |
| 37 | Supprimée | remove_action( 'storefront_before_header', 'storefront_skip_links', 0 ); | |
| 38 | 35 | remove_action( 'storefront_footer', 'storefront_handheld_footer_bar', 999 ); | |
| 39 | 36 | remove_action( 'storefront_header', 'storefront_product_search', 40 ); | |
| 40 | 37 | } | |
| 212 | 209 | $defaults['delimiter'] = '<span class="breadcrumb-separator"> / </span>'; | |
| 213 | 210 | // VALIDISCAN-SEED landmark-unique + vs-headings-landmarks: the breadcrumb <nav> has no aria-label, | |
| 214 | 211 | // like the primary and the footer navigation. | |
| 215 | Supprimée | $defaults['wrap_before'] = '<div class="storefront-breadcrumb"><div class="col-full"><nav class="woocommerce-breadcrumb">'; | |
| 212 | Ajoutée | $defaults['wrap_before'] = '<div class="storefront-breadcrumb"><div class="col-full"><nav class="woocommerce-breadcrumb" aria-label="' . esc_attr__( 'Breadcrumb', 'kestrel-birch' ) . '">'; | |
| 216 | 213 | $defaults['wrap_after'] = '</nav></div></div>'; | |
| 217 | 214 | return $defaults; | |
| 218 | 215 | } |
header-checkout.php Modifications apportées à header-checkout.php (lignes ajoutées : 1, lignes supprimées : 0)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 18 | 18 | ||
| 19 | 19 | <body <?php body_class(); ?>> | |
| 20 | 20 | <?php wp_body_open(); ?> | |
| 21 | Ajoutée | <a class="skip-link screen-reader-text" href="#content"><?php esc_html_e( 'Skip to content', 'kestrel-birch' ); ?></a> | |
| 21 | 22 | ||
| 22 | 23 | <div id="page" class="hfeed site"> | |
| 23 | 24 | <header id="masthead" class="site-header kb-checkout-header" role="banner"> |
header.php Modifications apportées à header.php (lignes ajoutées : 1, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 74 | 74 | <div class="storefront-primary-navigation"> | |
| 75 | 75 | <div class="col-full"> | |
| 76 | 76 | <?php // VALIDISCAN-SEED landmark-unique + vs-headings-landmarks: the primary <nav> has no aria-label. ?> | |
| 77 | Supprimée | <nav id="site-navigation" class="main-navigation"> | |
| 77 | Ajoutée | <nav id="site-navigation" class="main-navigation" aria-label="<?php esc_attr_e( 'Primary navigation', 'kestrel-birch' ); ?>"> | |
| 78 | 78 | <?php | |
| 79 | 79 | wp_nav_menu( | |
| 80 | 80 | array( |
page-contact.php Modifications apportées à page-contact.php (lignes ajoutées : 2, lignes supprimées : 2)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 24 | 24 | ||
| 25 | 25 | <div id="primary" class="content-area"> | |
| 26 | 26 | <?php // VALIDISCAN-SEED vs-headings-landmarks + region: <div> instead of <main>. ?> | |
| 27 | Supprimée | <div id="main" class="site-main"> | |
| 27 | Ajoutée | <main id="main" class="site-main"> | |
| 28 | 28 | <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> | |
| 29 | 29 | <header class="entry-header"><?php the_title( '<h1 class="entry-title">', '</h1>' ); ?></header> | |
| 30 | 30 | <div class="entry-content"> | |
| 85 | 85 | </div> | |
| 86 | 86 | </div> | |
| 87 | 87 | </article> | |
| 88 | Supprimée | </div><!-- #main --> | |
| 88 | Ajoutée | </main><!-- #main --> | |
| 89 | 89 | </div><!-- #primary --> | |
| 90 | 90 | ||
| 91 | 91 | <?php |
page.php Modifications apportées à page.php (lignes ajoutées : 2, lignes supprimées : 2)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 13 | 13 | ||
| 14 | 14 | <div id="primary" class="content-area"> | |
| 15 | 15 | <?php // VALIDISCAN-SEED vs-headings-landmarks + region: <div> instead of <main>. ?> | |
| 16 | Supprimée | <div id="main" class="site-main"> | |
| 16 | Ajoutée | <main id="main" class="site-main"> | |
| 17 | 17 | ||
| 18 | 18 | <?php | |
| 19 | 19 | while ( have_posts() ) : | |
| 35 | 35 | endwhile; | |
| 36 | 36 | ?> | |
| 37 | 37 | ||
| 38 | Supprimée | </div><!-- #main --> | |
| 38 | Ajoutée | </main><!-- #main --> | |
| 39 | 39 | </div><!-- #primary --> | |
| 40 | 40 | ||
| 41 | 41 | <?php |
search.php Modifications apportées à search.php (lignes ajoutées : 2, lignes supprimées : 2)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 11 | 11 | ||
| 12 | 12 | <div id="primary" class="content-area"> | |
| 13 | 13 | <?php // VALIDISCAN-SEED vs-headings-landmarks + region: <div> instead of <main>. ?> | |
| 14 | Supprimée | <div id="main" class="site-main"> | |
| 14 | Ajoutée | <main id="main" class="site-main"> | |
| 15 | 15 | <header class="woocommerce-products-header"> | |
| 16 | 16 | <h1 class="woocommerce-products-header__title page-title"> | |
| 17 | 17 | <?php | |
| 36 | 36 | <?php else : ?> | |
| 37 | 37 | <?php wc_no_products_found(); ?> | |
| 38 | 38 | <?php endif; ?> | |
| 39 | Supprimée | </div><!-- #main --> | |
| 39 | Ajoutée | </main><!-- #main --> | |
| 40 | 40 | </div><!-- #primary --> | |
| 41 | 41 | ||
| 42 | 42 | <?php |
single-product.php Modifications apportées à single-product.php (lignes ajoutées : 2, lignes supprimées : 2)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 13 | 13 | ||
| 14 | 14 | <div id="primary" class="content-area"> | |
| 15 | 15 | <?php // VALIDISCAN-SEED vs-headings-landmarks + region: <div> instead of <main>. ?> | |
| 16 | Supprimée | <div id="main" class="site-main"> | |
| 16 | Ajoutée | <main id="main" class="site-main"> | |
| 17 | 17 | <?php | |
| 18 | 18 | while ( have_posts() ) : | |
| 19 | 19 | the_post(); | |
| 20 | 20 | wc_get_template_part( 'content', 'single-product' ); | |
| 21 | 21 | endwhile; | |
| 22 | 22 | ?> | |
| 23 | Supprimée | </div><!-- #main --> | |
| 23 | Ajoutée | </main><!-- #main --> | |
| 24 | 24 | </div><!-- #primary --> | |
| 25 | 25 | ||
| 26 | 26 | <?php |
Magento : recette heading-levels
Afficher l’avant et l’après (2)
app/design/frontend/Validiscan/fixture/web/css/source/_theme.less Modifications apportées à app/design/frontend/Validiscan/fixture/web/css/source/_theme.less (lignes ajoutées : 6, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 1093 | 1093 | ||
| 1094 | 1094 | // VALIDISCAN-SEEDED vs-headings-landmarks: the home page title is display:none, so the page has no h1. | |
| 1095 | 1095 | .cms-index-index .page-title-wrapper { | |
| 1096 | Supprimée | display: none; | |
| 1096 | Ajoutée | position: absolute; | |
| 1097 | Ajoutée | width: 1px; | |
| 1098 | Ajoutée | height: 1px; | |
| 1099 | Ajoutée | overflow: hidden; | |
| 1100 | Ajoutée | clip: rect(0 0 0 0); | |
| 1101 | Ajoutée | white-space: nowrap; | |
| 1097 | 1102 | } | |
| 1098 | 1103 | ||
| 1099 | 1104 | // VALIDISCAN-SEEDED color-contrast: #929292 on white is 3.1:1. |
app/design/frontend/Validiscan/fixture/web/css/styles-m.css Modifications apportées à app/design/frontend/Validiscan/fixture/web/css/styles-m.css (lignes ajoutées : 6, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 1070 | 1070 | } | |
| 1071 | 1071 | ||
| 1072 | 1072 | .cms-index-index .page-title-wrapper { | |
| 1073 | Supprimée | display: none; | |
| 1073 | Ajoutée | position: absolute; | |
| 1074 | Ajoutée | width: 1px; | |
| 1075 | Ajoutée | height: 1px; | |
| 1076 | Ajoutée | overflow: hidden; | |
| 1077 | Ajoutée | clip: rect(0 0 0 0); | |
| 1078 | Ajoutée | white-space: nowrap; | |
| 1074 | 1079 | } | |
| 1075 | 1080 | ||
| 1076 | 1081 | .block-promo .info, |
app/design/frontend/Validiscan/fixture/Magento_Cms/content/home.html Modifications apportées à app/design/frontend/Validiscan/fixture/Magento_Cms/content/home.html (lignes ajoutées : 3, lignes supprimées : 3)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 152 | 152 | <!-- VALIDISCAN-SEEDED vs-headings-landmarks (h2 followed by h4) + vs-link-purpose ("Read more" links to three different pages) --> | |
| 153 | 153 | <div class="journal-items"> | |
| 154 | 154 | <article class="journal-item"> | |
| 155 | Supprimée | <h4 class="journal-title">Layering for wet autumn days</h4> | |
| 155 | Ajoutée | <h3 class="journal-title">Layering for wet autumn days</h3> | |
| 156 | 156 | <p>How a light shell over a warm mid-layer keeps you dry on the way to work.</p> | |
| 157 | 157 | <a class="journal-link" href="/magento/juno-jacket.html">Read more</a> | |
| 158 | 158 | </article> | |
| 159 | 159 | <article class="journal-item"> | |
| 160 | Supprimée | <h4 class="journal-title">Caring for technical shells</h4> | |
| 160 | Ajoutée | <h3 class="journal-title">Caring for technical shells</h3> | |
| 161 | 161 | <p>Washing, drying and re-proofing: three steps that keep a rain shell working for years.</p> | |
| 162 | 162 | <a class="journal-link" href="/magento/nadia-elements-shell.html">Read more</a> | |
| 163 | 163 | </article> | |
| 164 | 164 | <article class="journal-item"> | |
| 165 | Supprimée | <h4 class="journal-title">Running through the dark season</h4> | |
| 165 | Ajoutée | <h3 class="journal-title">Running through the dark season</h3> | |
| 166 | 166 | <p>Reflective details, lights and route planning for early morning runs.</p> | |
| 167 | 167 | <a class="journal-link" href="/magento/ingrid-running-jacket.html">Read more</a> | |
| 168 | 168 | </article> |
Magento : recette skip-link-main
Afficher l’avant et l’après (1)
app/design/frontend/Validiscan/fixture/Magento_Cms/layout/cms_index_index.xml Modifications apportées à app/design/frontend/Validiscan/fixture/Magento_Cms/layout/cms_index_index.xml (lignes ajoutées : 1, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 6 | 6 | <div>, so the home page has no <main> landmark (and, with the page title hidden by | |
| 7 | 7 | display:none in _theme.less, no h1 either). | |
| 8 | 8 | Fixed variant: keep htmlTag="main"; hide the title visually only (clip), not with display:none. --> | |
| 9 | Supprimée | <referenceContainer name="main.content" htmlTag="div" htmlId="maincontent" htmlClass="page-main"/> | |
| 9 | Ajoutée | <referenceContainer name="main.content" htmlTag="main" htmlId="maincontent" htmlClass="page-main"/> | |
| 10 | 10 | <referenceBlock name="breadcrumbs" remove="true"/> | |
| 11 | 11 | </body> | |
| 12 | 12 | </page> |
app/design/frontend/Validiscan/fixture/Magento_Theme/templates/html/footer.phtml Modifications apportées à app/design/frontend/Validiscan/fixture/Magento_Theme/templates/html/footer.phtml (lignes ajoutées : 1, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 19 | 19 | ?> | |
| 20 | 20 | <!-- VALIDISCAN-SEEDED list + landmark-unique: list items wrapped in a div inside the ul; second unlabelled nav --> | |
| 21 | 21 | <?php /* Fixed variant: <nav class="footer-nav" aria-label="Footer links"> with the <li> elements directly in the <ul>. */ ?> | |
| 22 | Supprimée | <nav class="footer-nav"> | |
| 22 | Ajoutée | <nav class="footer-nav" aria-label="<?= $escaper->escapeHtmlAttr(__('Footer links')) ?>"> | |
| 23 | 23 | <ul class="footer links"> | |
| 24 | 24 | <div class="footer-col"> | |
| 25 | 25 | <?php foreach ($links as $link): ?> |
app/design/frontend/Validiscan/fixture/Magento_Theme/templates/html/header.phtml Modifications apportées à app/design/frontend/Validiscan/fixture/Magento_Theme/templates/html/header.phtml (lignes ajoutées : 1, lignes supprimées : 0)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 13 | 13 | <header class="page-header"> | |
| 14 | 14 | <div class="panel wrapper"> | |
| 15 | 15 | <div class="panel header"> | |
| 16 | Ajoutée | <a class="action skip contentarea" href="#contentarea"><span><?= $escaper->escapeHtml(__('Skip to Content')) ?></span></a> | |
| 16 | 17 | <!-- VALIDISCAN-SEEDED vs-headings-landmarks: the skip link was removed from the header panel --> | |
| 17 | 18 | <?php /* Fixed variant: <a class="action skip contentarea" href="#contentarea"><span>Skip to Content</span></a> */ ?> | |
| 18 | 19 | <?php if ($linksMoved): ?> |
app/design/frontend/Validiscan/fixture/Magento_Theme/templates/html/topmenu.phtml Modifications apportées à app/design/frontend/Validiscan/fixture/Magento_Theme/templates/html/topmenu.phtml (lignes ajoutées : 1, lignes supprimées : 1)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 15 | 15 | <div class="section-item-content nav-sections-item-content" id="store.menu" data-role="content"> | |
| 16 | 16 | <!-- VALIDISCAN-SEEDED aria-required-children + landmark-unique: menubar whose children are plain list items; nav without a label --> | |
| 17 | 17 | <?php /* Fixed variant: <nav ... aria-label="Main menu"> and a plain <ul> (no menubar role). */ ?> | |
| 18 | Supprimée | <nav class="navigation" data-action="navigation"> | |
| 18 | Ajoutée | <nav class="navigation" data-action="navigation" aria-label="<?= $escaper->escapeHtmlAttr(__('Main menu')) ?>"> | |
| 19 | 19 | <ul role="menubar" data-mage-init='{"menu":{"responsive":true,"expanded":true,"position":{"my":"left top","at":"left bottom"}}}'> | |
| 20 | 20 | <?php foreach ($items as $item): ?> | |
| 21 | 21 | <li class="level0 <?= $escaper->escapeHtmlAttr($item['class']) ?> level-top"><a href="<?= $escaper->escapeUrl($item['url']) ?>" class="level-top"><span><?= $escaper->escapeHtml($item['label']) ?></span></a></li> |
app/design/frontend/Validiscan/fixture/web/css/source/_theme.less Modifications apportées à app/design/frontend/Validiscan/fixture/web/css/source/_theme.less (lignes ajoutées : 24, lignes supprimées : 0)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 1264 | 1264 | height: 18px; | |
| 1265 | 1265 | stroke-width: 3; | |
| 1266 | 1266 | } | |
| 1267 | Ajoutée | ||
| 1268 | Ajoutée | /* validiscan:skip-link-main */ | |
| 1269 | Ajoutée | .action.skip:not(:focus) { | |
| 1270 | Ajoutée | position: absolute; | |
| 1271 | Ajoutée | width: 1px; | |
| 1272 | Ajoutée | height: 1px; | |
| 1273 | Ajoutée | margin: -1px; | |
| 1274 | Ajoutée | padding: 0; | |
| 1275 | Ajoutée | overflow: hidden; | |
| 1276 | Ajoutée | clip: rect(0 0 0 0); | |
| 1277 | Ajoutée | white-space: nowrap; | |
| 1278 | Ajoutée | border: 0; | |
| 1279 | Ajoutée | } | |
| 1280 | Ajoutée | .action.skip:focus { | |
| 1281 | Ajoutée | position: absolute; | |
| 1282 | Ajoutée | top: 4px; | |
| 1283 | Ajoutée | left: 4px; | |
| 1284 | Ajoutée | z-index: 100; | |
| 1285 | Ajoutée | padding: 8px 12px; | |
| 1286 | Ajoutée | background: #fff; | |
| 1287 | Ajoutée | color: #1a1a1a; | |
| 1288 | Ajoutée | text-decoration: underline; | |
| 1289 | Ajoutée | } | |
| 1290 | Ajoutée | /* /validiscan:skip-link-main */ |
app/design/frontend/Validiscan/fixture/web/css/styles-m.css Modifications apportées à app/design/frontend/Validiscan/fixture/web/css/styles-m.css (lignes ajoutées : 24, lignes supprimées : 0)
| Ligne avant | Ligne après | Modification | Code |
|---|---|---|---|
| 1232 | 1232 | height: 18px; | |
| 1233 | 1233 | stroke-width: 3; | |
| 1234 | 1234 | } | |
| 1235 | Ajoutée | ||
| 1236 | Ajoutée | /* validiscan:skip-link-main */ | |
| 1237 | Ajoutée | .action.skip:not(:focus) { | |
| 1238 | Ajoutée | position: absolute; | |
| 1239 | Ajoutée | width: 1px; | |
| 1240 | Ajoutée | height: 1px; | |
| 1241 | Ajoutée | margin: -1px; | |
| 1242 | Ajoutée | padding: 0; | |
| 1243 | Ajoutée | overflow: hidden; | |
| 1244 | Ajoutée | clip: rect(0 0 0 0); | |
| 1245 | Ajoutée | white-space: nowrap; | |
| 1246 | Ajoutée | border: 0; | |
| 1247 | Ajoutée | } | |
| 1248 | Ajoutée | .action.skip:focus { | |
| 1249 | Ajoutée | position: absolute; | |
| 1250 | Ajoutée | top: 4px; | |
| 1251 | Ajoutée | left: 4px; | |
| 1252 | Ajoutée | z-index: 100; | |
| 1253 | Ajoutée | padding: 8px 12px; | |
| 1254 | Ajoutée | background: #fff; | |
| 1255 | Ajoutée | color: #1a1a1a; | |
| 1256 | Ajoutée | text-decoration: underline; | |
| 1257 | Ajoutée | } | |
| 1258 | Ajoutée | /* /validiscan:skip-link-main */ |
Commencez par une vérification gratuite de votre boutique.
Envoyez l’adresse de votre boutique. Validiscan la scanne et vous envoie chaque échec que le scan peut prouver, avec sa page et son code.
Demander une vérification gratuiteOu écrivez à info@validiscan.com.
Ce que couvre la vérification gratuite, et ce qu’elle laisse de côté- Vous envoyez
- l’adresse de votre boutique
- Pages scannées
- jusqu’à 15
- Vous recevez
- chaque échec que le scan peut prouver, avec la page et le code
- Sur votre boutique
- pages publiques uniquement ; aucune connexion, aucun achat, aucun formulaire envoyé
- Ce qu’elle n’est pas
- un audit complet