Rettelser af tilgængelighed i koden til dit tema på Magento
Validiscan retter tilgængelighedsfejl i .phtml-skabelonerne, layout-XML og LESS- eller CSS-stilarkene i dit Magento 2-tema. Intet når din live webshop, før din udvikler merger eller anvender ændringerne og ruller temaet ud.
Senest opdateret:
På denne side: 6 svar
Hvad ændrer Validiscan i et Magento-tema?
Validiscan ændrer kun filerne i dit Magento 2-frontendtema, den mappe, der rummer dets theme.xml, som regel under app/design/frontend. En ændring af enhver anden fil består ikke valideringen og leveres aldrig, og ingen rettelse installerer en extension eller tilføjer et script, der omskriver dine sider i den besøgendes browser.
Skabeloner og stilark, som dit tema ikke overstyrer, kommer fra dets parent-tema, for eksempel Luma eller Blank, eller fra Magentos moduler. Opskrifterne kopierer ikke de filer ind i dit tema: Hvor en fejl kommer fra en fil, som dit tema ikke overstyrer, foretager opskriften ingen ændring, og fundet overlades til et menneske. Indhold og indstillinger, som du har i Magento Admin, for eksempel CMS-sider og CMS-blokke, indhold fra Page Builder, landestandarden for et store view eller indstillingerne for HTML Head, er ikke filer i temaet, så rettelserne ændrer dem ikke. Indlejret tredjepartsindhold som betalings- eller chatwidgets indgår ikke i et projekt.
Detaljer: mapperne, hvordan en ændring ser ud, og hvor opskrifterne tilføjer deres stilregler
Validiscan ændrer kun filerne i dit Magento 2-frontendtema, den mappe, der rummer dets theme.xml, som regel under app/design/frontend: .phtml- og .html-skabelonerne, layout-XML, LESS-kilderne og de kompilerede stilark under web/css, scriptene under web/js og den tyske oversættelsesfil i i18n. En ændring af enhver anden fil, for eksempel Magentos egen kode, en extension eller build-output, består ikke valideringen, og en ændring, der ikke består valideringen, kan ikke godkendes og leveres derfor aldrig.
Hver ændring er en almindelig redigering af en temafil, som din udvikler kan læse linje for linje. Nye stilregler, som en rettelse tilføjer, står i en blok sidst i stilarket mellem kommentarer, der angiver opskriftens navn, for eksempel /* validiscan:. Mindre ændringer, for eksempel en rettet farveværdi eller en fjernet outline: none, foretages dér, hvor koden allerede står. Ord, som en rettelse tilføjer til en .phtml-skabelon, går gennem Magentos oversættelsesfunktion __() og escapes ligesom temaets egen tekst; i HTML-filer, som temaet har under Magento_Cms/content, bruger opskrifterne i stedet Magentos trans-direktiv. Magento gemmer CMS-sider og CMS-blokke i Magento Admin, så en ændring af en af disse filer når kun din webshop dér, hvor dit projekt indlæser filen i sine CMS-sider eller CMS-blokke. Ingen rettelse installerer en extension eller tilføjer et script, der omskriver dine sider i den besøgendes browser, sådan som et overlay gør.
Opskrifterne til fokusmarkeringen, klikfladerne, spring over-linket og nye knapper tilføjer deres stilregler sidst i temaets hovedstilark: dets _extend.less eller _theme.less under web/css/source, med en ny _extend.less, hvor et tema bygget på Luma eller Blank ikke har nogen af dem, og desuden i en kompileret web/css/styles-m.css, hvor temaet leveres med en. På et tema, der ikke er bygget på Luma eller Blank og hverken har LESS-kilder dér eller den kompilerede fil, foretager opskrifterne til fokusmarkeringen, klikfladerne og knapperne ingen ændring, og opskriften til spring over-linket tilføjer linket uden styling.
Hvordan får Validiscan adgang til dit Magento-tema?
Gennem et GitHub-repository eller som en ZIP-fil med temamappen, uploadet i kundeportalen, fordi Validiscan udarbejder hver rettelse i en kopi af dit Magento-temas kildekode. Hvilken der passer, afhænger af, hvor koden ligger: Et repository giver en pull request, en ZIP-fil giver en patchpakke.
| Vej ind | Det giver du | Ændringerne kommer tilbage som |
|---|---|---|
| Gennem dit GitHub-repository | Adgang til repositoriet, der kan rumme temaet alene eller hele dit Magento-projekt, gennem Validiscans GitHub-app eller et adgangstoken | En pull request |
| Ud fra en ZIP-fil med temamappen | Din temamappe under app/ som én ZIP-fil på op til 100 MB, uploadet i kundeportalen af en administrator i din organisation | En patchpakke |
Gennem dit GitHub-repository
Hvis koden til dit tema ligger i et GitHub-repository, giver du Validiscan adgang til det repository. Du installerer Validiscans GitHub-app på det eller giver Validiscan et adgangstoken til det. Validiscans opsætning angiver appens tilladelser som læse- og skriveadgang til repositoriets indhold og pull requests og læseadgang til dets metadata, og intet andet.
Repositoriet kan rumme temaet alene eller hele dit Magento-projekt. Opskrifterne finder temaet via dets theme.xml i app/ eller i roden af et repository, der kun rummer temaet, ved siden af dets registration.php. Hvis repositoriet rummer flere frontendtemaer, arbejder en opskrift på det tema, hvor elementet med fejlen blev fundet, og ændrer intet, når den ikke kan afgøre, hvilket tema det er. Et tema, der ligger et andet sted i et projekt, for eksempel som en Composer-pakke under vendor, ligger uden for de stier, en rettelse må ændre. Ændringerne kommer som en pull request.
Ud fra en ZIP-fil med temamappen
Uden et GitHub-repository laver din udvikler en ZIP-fil med temaet. Kundeportalen giver denne vejledning: »Bed din udvikler om en ZIP-fil med din temamappe under app/design/frontend.« En administrator i din organisation uploader derefter filen i kundeportalen som én ZIP-fil på op til 100 MB. Validiscan udarbejder ændringerne ud fra den kopi af dit tema og sender dem tilbage som en patchpakke.
Uden nogen af de to veje har Validiscan ingen kode at ændre, og der udarbejdes ingen rettelse.
Hvordan når ændringerne frem til din webshop?
På Magento kommer ændringerne som en pull request eller som en patchpakke, og din udvikler afgør, hvornår de går live. Validiscan leverer kun ændringer, som Validiscan har gennemgået og godkendt, og ændrer ikke din live webshop; levering som en upubliceret kopi af temaet bruger Shopifys temabibliotek og findes kun for Shopify.
- Validiscan leverer de ændringer, som Validiscan har gennemgået og godkendt: en pull request på en ny branch eller en patchpakke til din udvikler.
- Din udvikler gennemgår ændringerne. Ved en pull request beder tjeklisten om et forhåndsvisnings- eller staging-miljø, ikke den live webshop, og om en kontrol af de berørte sider, også med tastaturet alene.
- Din udvikler merger pull requesten eller anvender patchpakken.
- Din udvikler kompilerer stilarkene og ruller temaet ud: LESS-ændringerne træder i kraft, når temaets statiske filer er rullet ud.
- Når ændringerne er live, kontrollerer en verifikationsscanning de berørte sider igen.
En pull request
Med adgang til dit repository opretter Validiscan en ny branch med navnet validiscan/, committer hver rettelse for sig og åbner én pull request med en oversigtstabel, en forklaring af hver ændring og en tjekliste til gennemgangen. Der pushes intet til din standardbranch. Tjeklisten beder din udvikler om at rulle branchen ud i et forhåndsvisnings- eller staging-miljø, ikke i den live webshop, og om dér at kontrollere de berørte sider, også med tastaturet alene, før der merges.
En patchpakke
Ud fra den uploadede ZIP-fil udarbejder Validiscan et zip-arkiv og sender det til din udvikler. Det indeholder PATCH.md med hver ændring og en vejledning i at anvende den, alle ændringer i én patchfil, som kan anvendes med git apply, én patchfil pr. rettelse, de komplette ændrede filer og en README.md. Din udvikler anvender ændringerne, tester dem og ruller temaet ud. Hvad en pull request og en patchpakke indeholder
Sådan bygges stilarkene
Et tema baseret på Luma eller Blank har sin styling i LESS-kilder, og Magento kompilerer dem til den CSS, som webshoppen leverer. Magentos værktøj til udrulning af statiske filer, bin/, kompilerer LESS-filerne og udgiver resultatet, som Adobes dokumentation om forbehandling af CSS og LESS beskriver. LESS-ændringerne træder derfor i kraft, når din udvikler ruller det ændrede temas statiske filer ud. Hvor temaet også leveres med en kompileret web/css/styles-m.css, leverer Magento den fil, som den er, så opskrifterne foretager den samme ændring dér, og de to filer forbliver i trit. Hvor rettelser hører hjemme i et Magento-tema, og hvad en temaopdatering kan fortryde
Hvad ændrer opskrifterne i et Magento-tema?
Hver af Validiscans 20 opskrifter til Magento-temaer er en deterministisk ændring for én slags fejl: Den samme kode får altid den samme ændring. En opskrift foretager kun en ændring, hvor temaets kode viser, hvad den rigtige ændring er; hvor den ikke gør det, ændrer opskriften intet.
Sidestruktur og navigation
-
Sidens sprog ud fra webshoppens landestandard html-lang Hvor dit temas overstyring af rodskabelonen udskriver sin egen
langeller ingen, udskriver den igen Magentos egne attributter, så hver side får en gyldiglang.Magento angiver en sides sprog ud fra landestandarden (locale) for dens store view, for eksempel
enfor landestandardenen_US, og udskriver det gennem sin rodskabelon. Hvor dit tema overstyrer den skabelon og udskriver sin egenlang, typisk landestandardkodenen_US, som ikke er et gyldigt sprogtag, eller slet ingenlang, udskriver skabelonen igen Magentos egne attributter, så hver side får en gyldiglang. Enlang, der er sat i layout-XML i landestandardformen, for eksempelde_DE, bliver tilde-DE. En side, hvis indhold er på et andet sprog end dens store view, for eksempel en tysk juridisk side i en engelsksproget webshop, overlades til dig: Vis den fra et store view på det sprog, eller markér sproget i selve indholdet.- Regler, den dækker
-
-
html-has-langAUTO kontrolleres via vs-lang -
html-lang-validAUTO kontrolleres via vs-lang -
vs-langAUTO
-
- Filtyper, den ændrer
-
.phtml
fixes the vs-lang finding in root.phtml and validates Eksempeldata app/design/frontend/Validiscan/fixture/Magento_Theme/templates/root.phtml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Theme/templates/root.phtml: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Theme/templates/root.phtml: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 15 15 ?> 16 16 <!doctype html> 17 17 <!-- VALIDISCAN-SEEDED vs-lang: root.phtml prints the Magento locale code (en_US) instead of a BCP 47 language tag --> 18 Fjernet <html lang="<?= $block->escapeHtmlAttr($htmlLocale) ?>"> 18 Tilføjet <html <?= /* @noEscape */ $htmlAttributes ?>> 19 19 <head <?= /* @noEscape */ $headAttributes ?>> 20 20 <?= /* @noEscape */ $requireJs ?> 21 21 <?= /* @noEscape */ $headContent ?> -
Spring over-link, hovedområde og navngivne menuer skip-link-main Lumas spring over-link og
<main>-området kommer tilbage, hvor dit tema har mistet dem, og navigationsområder uden navn får et navn, hvor koden viser deres formål.Magentos Luma-tema har et »Skip to Content«-link øverst på hver side, som fører til starten af hovedindholdet, og det indhold er sidens
<main>-område. Et tema kan miste begge dele. Hvor temaet har fjernet linket i sin layout-XML, ophæver opskriften fjernelsen. Hvor temaets egen header-skabelon aldrig udskriver linket, tilføjer opskriften det dér med Lumas klasser; hvis temaets stilark ville efterlade det uden styling, tilføjer opskriften stilregler, der holder det skjult, indtil det får tastaturfokus. Hvor layout-XML gengiver hovedindholdet som et andet element, for eksempel en<div>, bliver det igen til<main>. Navigationsområder uden navn får et, der siger, hvad de rummer, for eksempel Main menu, Footer links eller Breadcrumbs; et område, hvis formål koden ikke viser, eller som ville få samme navn som et andet, overlades til et menneske. Indhold uden for sidehovedet, hovedområdet og sidefoden, for eksempel en kampagnebjælke, flyttes ikke: At flytte det er en ændring af dit layout, som din udvikler foretager i layout-XML.- Regler, den dækker
-
-
bypassAUTO kontrolleres via vs-headings-landmarks -
landmark-one-mainAUTO kontrolleres via vs-headings-landmarks -
regionAUTO -
skip-linkAUTO -
vs-headings-landmarksAUTO -
landmark-uniqueASSISTED
-
- Filtyper, den ændrer
-
.css.less.phtml.xml
fixes the vs-headings-landmarks finding and validates Eksempeldata app/design/frontend/Validiscan/fixture/Magento_Cms/layout/cms_index_index.xml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Cms/layout/cms_index_index.xml: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Cms/layout/cms_index_index.xml: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 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 Fjernet <referenceContainer name="main.content" htmlTag="div" htmlId="maincontent" htmlClass="page-main"/> 9 Tilføjet <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 Ændringer i app/design/frontend/Validiscan/fixture/Magento_Theme/templates/html/footer.phtml: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Theme/templates/html/footer.phtml: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 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 Fjernet <nav class="footer-nav"> 22 Tilføjet <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 Ændringer i app/design/frontend/Validiscan/fixture/Magento_Theme/templates/html/header.phtml: 1 tilføjet, 0 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Theme/templates/html/header.phtml: 1 tilføjet, 0 fjernet Linje før Linje efter Ændring Kode 13 13 <header class="page-header"> 14 14 <div class="panel wrapper"> 15 15 <div class="panel header"> 16 Tilføjet <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 Ændringer i app/design/frontend/Validiscan/fixture/Magento_Theme/templates/html/topmenu.phtml: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Theme/templates/html/topmenu.phtml: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 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 Fjernet <nav class="navigation" data-action="navigation"> 18 Tilføjet <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 Ændringer i app/design/frontend/Validiscan/fixture/web/css/source/_theme.less: 24 tilføjet, 0 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/web/css/source/_theme.less: 24 tilføjet, 0 fjernet Linje før Linje efter Ændring Kode 1264 1264 height: 18px; 1265 1265 stroke-width: 3; 1266 1266 } 1267 Tilføjet 1268 Tilføjet /* validiscan:skip-link-main */ 1269 Tilføjet .action.skip:not(:focus) { 1270 Tilføjet position: absolute; 1271 Tilføjet width: 1px; 1272 Tilføjet height: 1px; 1273 Tilføjet margin: -1px; 1274 Tilføjet padding: 0; 1275 Tilføjet overflow: hidden; 1276 Tilføjet clip: rect(0 0 0 0); 1277 Tilføjet white-space: nowrap; 1278 Tilføjet border: 0; 1279 Tilføjet } 1280 Tilføjet .action.skip:focus { 1281 Tilføjet position: absolute; 1282 Tilføjet top: 4px; 1283 Tilføjet left: 4px; 1284 Tilføjet z-index: 100; 1285 Tilføjet padding: 8px 12px; 1286 Tilføjet background: #fff; 1287 Tilføjet color: #1a1a1a; 1288 Tilføjet text-decoration: underline; 1289 Tilføjet } 1290 Tilføjet /* /validiscan:skip-link-main */ app/design/frontend/Validiscan/fixture/web/css/styles-m.css Ændringer i app/design/frontend/Validiscan/fixture/web/css/styles-m.css: 24 tilføjet, 0 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/web/css/styles-m.css: 24 tilføjet, 0 fjernet Linje før Linje efter Ændring Kode 1232 1232 height: 18px; 1233 1233 stroke-width: 3; 1234 1234 } 1235 Tilføjet 1236 Tilføjet /* validiscan:skip-link-main */ 1237 Tilføjet .action.skip:not(:focus) { 1238 Tilføjet position: absolute; 1239 Tilføjet width: 1px; 1240 Tilføjet height: 1px; 1241 Tilføjet margin: -1px; 1242 Tilføjet padding: 0; 1243 Tilføjet overflow: hidden; 1244 Tilføjet clip: rect(0 0 0 0); 1245 Tilføjet white-space: nowrap; 1246 Tilføjet border: 0; 1247 Tilføjet } 1248 Tilføjet .action.skip:focus { 1249 Tilføjet position: absolute; 1250 Tilføjet top: 4px; 1251 Tilføjet left: 4px; 1252 Tilføjet z-index: 100; 1253 Tilføjet padding: 8px 12px; 1254 Tilføjet background: #fff; 1255 Tilføjet color: #1a1a1a; 1256 Tilføjet text-decoration: underline; 1257 Tilføjet } 1258 Tilføjet /* /validiscan:skip-link-main */ -
En titel på hver side document-title-template Tomme titler, som dit tema sætter i layout-XML, fjernes, så Magentos egen sidetitel igen gælder.
Magento giver hver side sin egen titel, for eksempel navnet på produktet eller kategorien eller »Search results for:« og søgeordet, med det præfiks eller suffiks, der er angivet for din webshop. Et tema kan tilsidesætte den med en tom
<title>i layout-XML, og siden har så ingen titel. Opskriften fjerner sådanne tomme titler, så Magentos egen titel igen gælder. Titler med tekst er din formulering og bliver, som de er. Hvis ingen layoutfil i temaet tømmer titlen, ændrer opskriften intet: Titlen kommer så fra selve siden og fra indstillingerne for HTML Head i Magento Admin.- Regler, den dækker
-
-
document-titleAUTO
-
- Filtyper, den ændrer
-
.xml
removes the blank search results title and validates Eksempeldata app/design/frontend/Validiscan/fixture/Magento_CatalogSearch/layout/catalogsearch_result_index.xml Ændringer i app/design/frontend/Validiscan/fixture/Magento_CatalogSearch/layout/catalogsearch_result_index.xml: 0 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_CatalogSearch/layout/catalogsearch_result_index.xml: 0 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 4 4 <!-- VALIDISCAN-SEEDED document-title: a "hide the SEO title" customisation sets an empty page title, 5 5 so the rendered <title></title> is empty. The visible h1 is set separately by the page.main.title block. 6 6 Fixed variant: <title>Search results for: 'jacket'</title>. --> 7 Fjernet <title> </title> 8 7 </head> 9 8 <body> 10 9 <referenceBlock name="search_result_list" template="Magento_Catalog::product/list.phtml"/> -
Overskrifter uden oversprungne niveauer heading-levels En overskrift, der springer et niveau over, flyttes op med de overskrifter, der følger efter den i skabelonen, hvor niveauet før den kan læses; en sidetitel, der er skjult med
display: none, skjules i stedet visuelt.En overskrift, der springer et niveau over, for eksempel en h4 lige efter en h2, flyttes op til det næste niveau, og de overskrifter, der følger efter den i samme skabelon på dens niveau eller dybere, flyttes op med den. Klasser bevares, så stilregler, som temaet sætter via klasse, stadig gælder; din udvikler kontrollerer stilregler, som temaet sætter via overskriftens tag. Hvor niveauet på overskriften før den hverken kan læses ud af scanningen eller ud af samme skabelon, overlades overskriften til et menneske. Magento udskriver hver sides titel som dens h1. Et tema, der skjuler titlen på en side med
display: none, fjerner sidens eneste h1, så opskriften skjuler den i stedet visuelt, på samme måde som Magentos egne stilregler skjuler tekst, og h1-overskriften forbliver i den disposition, som skærmlæsere bruger. En titel, der er fjernet i layout-XML, overlades til et menneske, fordi det ville ændre sidens udseende at bringe den tilbage.- Regler, den dækker
-
-
heading-orderAUTO kontrolleres via vs-headings-landmarks -
page-has-heading-oneAUTO kontrolleres via vs-headings-landmarks -
vs-headings-landmarksAUTO
-
- Filtyper, den ændrer
-
.css.html.less
keeps the hidden home page title as the h1 and validates Eksempeldata app/design/frontend/Validiscan/fixture/web/css/source/_theme.less Ændringer i app/design/frontend/Validiscan/fixture/web/css/source/_theme.less: 6 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/web/css/source/_theme.less: 6 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 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 Fjernet display: none; 1096 Tilføjet position: absolute; 1097 Tilføjet width: 1px; 1098 Tilføjet height: 1px; 1099 Tilføjet overflow: hidden; 1100 Tilføjet clip: rect(0 0 0 0); 1101 Tilføjet 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 Ændringer i app/design/frontend/Validiscan/fixture/web/css/styles-m.css: 6 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/web/css/styles-m.css: 6 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 1070 1070 } 1071 1071 1072 1072 .cms-index-index .page-title-wrapper { 1073 Fjernet display: none; 1073 Tilføjet position: absolute; 1074 Tilføjet width: 1px; 1075 Tilføjet height: 1px; 1076 Tilføjet overflow: hidden; 1077 Tilføjet clip: rect(0 0 0 0); 1078 Tilføjet white-space: nowrap; 1074 1079 } 1075 1080 1076 1081 .block-promo .info, moves the journal headings from h4 to h3 and validates Eksempeldata app/design/frontend/Validiscan/fixture/Magento_Cms/content/home.html Ændringer i app/design/frontend/Validiscan/fixture/Magento_Cms/content/home.html: 3 tilføjet, 3 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Cms/content/home.html: 3 tilføjet, 3 fjernet Linje før Linje efter Ændring Kode 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 Fjernet <h4 class="journal-title">Layering for wet autumn days</h4> 155 Tilføjet <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 Fjernet <h4 class="journal-title">Caring for technical shells</h4> 160 Tilføjet <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 Fjernet <h4 class="journal-title">Running through the dark season</h4> 165 Tilføjet <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>
Tastaturbrug og fokus
-
En synlig fokusmarkering focus-visible-styles Én markering af tastaturfokus i temaets brandfarve, justeret til en kontrast på mindst 3:1 mod sidens baggrund.
Temaets stilark får én markering af tastaturfokus: en ubrudt streg på 2 pixels, 2 pixels fra elementet, i temaets brandfarve. Farven hentes fra en variabel for brand- eller primærfarven, ellers fra den primære knap, ellers fra linkfarven, og den justeres, indtil den har en kontrast på mindst 3:1 mod sidens baggrund. Områder med deres egen baggrund, for eksempel en mørk topbjælke, får en markeringsfarve, der har den kontrast dér. Temaregler, der fjerner markeringen fra links, knapper og andre betjeningselementer ved fokus, tages ud, medmindre de viser fokus på anden måde, for eksempel med en kant eller en skygge.
- Regler, den dækker
-
-
vs-focus-visibleAUTO
-
- Filtyper, den ændrer
-
.css.less
adds the outline, removes the outline: none rule and validates Eksempeldata app/design/frontend/Validiscan/fixture/web/css/source/_theme.less Ændringer i app/design/frontend/Validiscan/fixture/web/css/source/_theme.less: 10 tilføjet, 12 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/web/css/source/_theme.less: 10 tilføjet, 12 fjernet Linje før Linje efter Ændring Kode 1079 1079 color: #fff; 1080 1080 } 1081 1081 1082 Fjernet // VALIDISCAN-SEEDED vs-focus-visible: the theme removes the focus ring from links and actions. 1083 Fjernet .navigation a:focus, 1084 Fjernet .header.links a:focus, 1085 Fjernet .product-item-link:focus, 1086 Fjernet .footer a:focus, 1087 Fjernet .action:focus, 1088 Fjernet .logo:focus, 1089 Fjernet .block-promo:focus, 1090 Fjernet .journal-link:focus { 1091 Fjernet outline: none; 1092 Fjernet } 1093 Fjernet 1094 1082 // VALIDISCAN-SEEDED vs-headings-landmarks: the home page title is display:none, so the page has no h1. 1095 1083 .cms-index-index .page-title-wrapper { 1096 1084 display: none; 1264 1252 height: 18px; 1265 1253 stroke-width: 3; 1266 1254 } 1255 Tilføjet 1256 Tilføjet /* validiscan:focus-visible-styles */ 1257 Tilføjet :focus-visible { 1258 Tilføjet outline: 2px solid #1979c3; 1259 Tilføjet outline-offset: 2px; 1260 Tilføjet } 1261 Tilføjet .panel.wrapper :focus-visible { 1262 Tilføjet outline-color: #a1d0f3; 1263 Tilføjet } 1264 Tilføjet /* /validiscan:focus-visible-styles */ app/design/frontend/Validiscan/fixture/web/css/styles-m.css Ændringer i app/design/frontend/Validiscan/fixture/web/css/styles-m.css: 10 tilføjet, 11 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/web/css/styles-m.css: 10 tilføjet, 11 fjernet Linje før Linje efter Ændring Kode 1058 1058 color: #fff; 1059 1059 } 1060 1060 1061 Fjernet .navigation a:focus, 1062 Fjernet .header.links a:focus, 1063 Fjernet .product-item-link:focus, 1064 Fjernet .footer a:focus, 1065 Fjernet .action:focus, 1066 Fjernet .logo:focus, 1067 Fjernet .block-promo:focus, 1068 Fjernet .journal-link:focus { 1069 Fjernet outline: none; 1070 Fjernet } 1071 Fjernet 1072 1061 .cms-index-index .page-title-wrapper { 1073 1062 display: none; 1074 1063 } 1232 1221 height: 18px; 1233 1222 stroke-width: 3; 1234 1223 } 1224 Tilføjet 1225 Tilføjet /* validiscan:focus-visible-styles */ 1226 Tilføjet :focus-visible { 1227 Tilføjet outline: 2px solid #1979c3; 1228 Tilføjet outline-offset: 2px; 1229 Tilføjet } 1230 Tilføjet .panel.wrapper :focus-visible { 1231 Tilføjet outline-color: #a1d0f3; 1232 Tilføjet } 1233 Tilføjet /* /validiscan:focus-visible-styles */ -
En tab-rækkefølge, der følger siden remove-positive-tabindex Når et rapporteret element har et
tabindexover 0, fjernes hvert fast positivttabindexi temaets skabeloner eller sættes til 0.Et
tabindexover 0 trækker et element forrest i tastaturrækkefølgen. Sådanne værdier virker kun i forhold til hinanden på hele siden, så når et rapporteret element viser sig at have et i temaets skabeloner, fjerner opskriften hvert fast positivttabindexi temaets skabeloner, også på elementer, som fundet ikke nævnte. Links, knapper og formularfelter mister attributten; andre elementer fårtabindex="0", så de stadig kan nås, mens Tab-tasten følger sidens rækkefølge. Ettabindex, som PHP-kode beregner, overlades til et menneske. Validiscans kontrolvs-focus-orderrapporterer også fokus, der hopper rundt på siden af andre årsager, for eksempel indhold, som stilreglerne viser et andet sted; den har niveau MANUAL, så dens fund kommer med vejledning, ikke med denne ændring.- Regler, den dækker
-
-
tabindexAUTO -
vs-focus-orderMANUAL
-
- Filtyper, den ændrer
-
.phtml
removes tabindex 1-4 from the login form and the CAPTCHA and validates Eksempeldata app/design/frontend/Validiscan/fixture/Magento_Customer/templates/form/captcha-math.phtml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Customer/templates/form/captcha-math.phtml: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Customer/templates/form/captcha-math.phtml: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 14 14 <div class="field captcha required" role="group" aria-labelledby="captcha-question" data-captcha-type="math"> 15 15 <label for="captcha_user_login" class="label" id="captcha-question"><span><?= $escaper->escapeHtml(__('Security question: what is %1 + %2?', $a, $b)) ?></span></label> 16 16 <div class="control captcha"> 17 Fjernet <input name="captcha[user_login]" type="text" class="input-text required-entry" id="captcha_user_login" autocomplete="off" inputmode="numeric" tabindex="3" data-captcha-answer-hash="<?= $escaper->escapeHtmlAttr(md5((string) ($a + $b))) ?>"> 17 Tilføjet <input name="captcha[user_login]" type="text" class="input-text required-entry" id="captcha_user_login" autocomplete="off" inputmode="numeric" data-captcha-answer-hash="<?= $escaper->escapeHtmlAttr(md5((string) ($a + $b))) ?>"> 18 18 </div> 19 19 </div> app/design/frontend/Validiscan/fixture/Magento_Customer/templates/form/login.phtml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Customer/templates/form/login.phtml: 3 tilføjet, 3 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Customer/templates/form/login.phtml: 3 tilføjet, 3 fjernet Linje før Linje efter Ændring Kode 27 27 <div class="field email required"> 28 28 <label class="label" for="email"><span><?= $escaper->escapeHtml(__('Email')) ?></span></label> 29 29 <div class="control"> 30 Fjernet <input name="login[username]" value="<?= $escaper->escapeHtmlAttr($username) ?>" autocomplete="off" id="email" type="email" class="input-text mage-error" title="<?= $escaper->escapeHtmlAttr(__('Email')) ?>" aria-invalid="true" tabindex="1" onpaste="return false;" data-mage-init='{"mage/trim-input":{}}'> 30 Tilføjet <input name="login[username]" value="<?= $escaper->escapeHtmlAttr($username) ?>" autocomplete="off" id="email" type="email" class="input-text mage-error" title="<?= $escaper->escapeHtmlAttr(__('Email')) ?>" aria-invalid="true" onpaste="return false;" data-mage-init='{"mage/trim-input":{}}'> 31 31 <div for="email" generated="true" class="mage-error" id="email-error"><?= $escaper->escapeHtml(__('Please enter a valid email address (Ex: johndoe@domain.com).')) ?></div> 32 32 </div> 33 33 </div> 35 35 <div class="field password required"> 36 36 <label for="pass" class="label"><span><?= $escaper->escapeHtml(__('Password')) ?></span></label> 37 37 <div class="control"> 38 Fjernet <input name="login[password]" type="password" autocomplete="off" class="input-text" id="pass" title="<?= $escaper->escapeHtmlAttr(__('Password')) ?>" tabindex="2" onpaste="return false;" oncopy="return false;"> 38 Tilføjet <input name="login[password]" type="password" autocomplete="off" class="input-text" id="pass" title="<?= $escaper->escapeHtmlAttr(__('Password')) ?>" onpaste="return false;" oncopy="return false;"> 39 39 </div> 40 40 </div> 41 41 <!-- VALIDISCAN-SEEDED vs-accessible-auth: arithmetic CAPTCHA with no alternative --> 42 42 <?= $block->getChildHtml('form_additional_info') /* math CAPTCHA module: div.field.captcha, input#captcha_user_login tabindex="3" */ ?> 43 43 <div class="actions-toolbar"> 44 Fjernet <div class="primary"><button type="submit" class="action login primary" name="send" id="send2" tabindex="4"><span><?= $escaper->escapeHtml(__('Sign In')) ?></span></button></div> 44 Tilføjet <div class="primary"><button type="submit" class="action login primary" name="send" id="send2"><span><?= $escaper->escapeHtml(__('Sign In')) ?></span></button></div> 45 45 <div class="secondary"><a class="action remind" href="<?= $escaper->escapeUrl($block->getUrl('contact')) ?>"><span><?= $escaper->escapeHtml(__('Forgot Your Password? Contact us')) ?></span></a></div> 46 46 </div> 47 47 </fieldset>
Zoom og klikflader
-
Zoom tilladt på mobilen meta-viewport-zoom Temaets viewport-tag mister
user-scalable=noog enhvermaximum-scaleunder 2, så besøgende kan zoome ind på siden på en mobil; en værdi, som PHP-kode beregner, føres på listen til din udvikler.Opskriften fjerner
user-scalable=noog enhvermaximum-scaleunder 2 fra viewport-tagget i temaets layout-XML, for eksempeldefault_head_blocks.xml, hvor Luma deklarerer det, eller i dets skabeloner, så besøgende kan zoome ind på siden på en mobil. For reglen for god praksismeta-viewport-largeer grænsen 5. De øvrige viewport-indstillinger forbliver, som de var. En viewport-værdi, som PHP-kode beregner, føres på listen, så din udvikler kan kontrollere den. Hvis det tag, der blokerer zoom, ikke kommer fra temaet, for eksempel fra indstillingerne for HTML Head i Magento Admin eller fra et modul, ændrer opskriften intet.- Regler, den dækker
-
-
meta-viewportAUTO -
meta-viewport-largeAUTO
-
- Filtyper, den ændrer
-
.xml
removes the zoom block from default_head_blocks.xml and validates Eksempeldata app/design/frontend/Validiscan/fixture/Magento_Theme/layout/default_head_blocks.xml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Theme/layout/default_head_blocks.xml: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Theme/layout/default_head_blocks.xml: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 3 3 <head> 4 4 <!-- VALIDISCAN-SEEDED meta-viewport: pinch zoom disabled (Luma 2.0-2.3 default kept by the theme). 5 5 Fixed variant: content="width=device-width, initial-scale=1". --> 6 Fjernet <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"/> 6 Tilføjet <meta name="viewport" content="width=device-width, initial-scale=1"/> 7 7 <meta name="format-detection" content="telephone=no"/> 8 8 <css src="css/styles-m.css"/> 9 9 <css src="css/styles-l.css" media="screen and (min-width: 768px)"/> -
Større klikflader target-size-padding Knapper og links, som scanningen fandt for små, får en minimumsstørrelse på 24 × 24 pixels via klasser, som temaets stilark kan udpege.
Knapper og links, som scanningen fandt for små, for eksempel ikoner til sociale medier eller knapper til antal, får en minimumsstørrelse på 24 × 24 pixels i en blok sidst i temaets stilark. Blokken genbruger de selektorer, som temaet gjorde dem små med, eller deres egne klasser, og sætter en minimumsbredde og -højde, som vinder over en mindre bredde eller højde. Ikonerne inde i dem og layoutet omkring dem forbliver, som de er. Et link eller et andet inline-element uden en display-regel bliver til
inline-flex, fordi inline-elementer ignorerer en minimumsstørrelse. Et betjeningselement uden en klasse, som stilarket kan udpege, overlades til et menneske.- Regler, den dækker
-
-
vs-target-sizeAUTO
-
- Filtyper, den ændrer
-
.css.less
sizes the three flagged controls and validates Eksempeldata app/design/frontend/Validiscan/fixture/web/css/source/_theme.less Ændringer i app/design/frontend/Validiscan/fixture/web/css/source/_theme.less: 9 tilføjet, 0 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/web/css/source/_theme.less: 9 tilføjet, 0 fjernet Linje før Linje efter Ændring Kode 1264 1264 height: 18px; 1265 1265 stroke-width: 3; 1266 1266 } 1267 Tilføjet 1268 Tilføjet /* validiscan:target-size-padding */ 1269 Tilføjet .social-link, 1270 Tilføjet .actions-secondary .action, 1271 Tilføjet .qty-step { 1272 Tilføjet min-width: 24px; 1273 Tilføjet min-height: 24px; 1274 Tilføjet } 1275 Tilføjet /* /validiscan:target-size-padding */ app/design/frontend/Validiscan/fixture/web/css/styles-m.css Ændringer i app/design/frontend/Validiscan/fixture/web/css/styles-m.css: 9 tilføjet, 0 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/web/css/styles-m.css: 9 tilføjet, 0 fjernet Linje før Linje efter Ændring Kode 1232 1232 height: 18px; 1233 1233 stroke-width: 3; 1234 1234 } 1235 Tilføjet 1236 Tilføjet /* validiscan:target-size-padding */ 1237 Tilføjet .social-link, 1238 Tilføjet .actions-secondary .action, 1239 Tilføjet .qty-step { 1240 Tilføjet min-width: 24px; 1241 Tilføjet min-height: 24px; 1242 Tilføjet } 1243 Tilføjet /* /validiscan:target-size-padding */
Bevægelse, slideshows og lyd
-
Mindre bevægelse, når en besøgende beder om det reduced-motion-guard Når en besøgendes enhed beder om reduceret bevægelse, slås de animationer, overgange på 5 sekunder eller mere og den bløde scrolling fra, som temaets stilark starter.
Når en besøgendes enhed er indstillet til at reducere bevægelse, slår en blok sidst i hvert af temaets stilark det fra, som netop det stilark starter: animationer, overgange på 5 sekunder eller mere og blød scrolling, selektor for selektor. Hvor temaets egne scripts i
web/jsstarter en slider med automatisk afspilning slået til, starter slideren uden automatisk afspilning for de besøgende. En regel, der er indlejret i en anden LESS-regel, føres på listen til din udvikler. Animationer fra Magentos egen kode eller fra extensions ligger ikke i temaets filer og har brug for deres egen sikring.- Regler, den dækker
-
-
vs-motionAUTO
-
- Filtyper, den ændrer
-
.css.less
guards the badge and slider animations and validates Eksempeldata app/design/frontend/Validiscan/fixture/web/css/source/_theme.less Ændringer i app/design/frontend/Validiscan/fixture/web/css/source/_theme.less: 9 tilføjet, 0 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/web/css/source/_theme.less: 9 tilføjet, 0 fjernet Linje før Linje efter Ændring Kode 1264 1264 height: 18px; 1265 1265 stroke-width: 3; 1266 1266 } 1267 Tilføjet 1268 Tilføjet /* validiscan:reduced-motion-guard */ 1269 Tilføjet @media (prefers-reduced-motion: reduce) { 1270 Tilføjet .product-label, 1271 Tilføjet .slick-track { 1272 Tilføjet animation: none; 1273 Tilføjet } 1274 Tilføjet } 1275 Tilføjet /* /validiscan:reduced-motion-guard */ app/design/frontend/Validiscan/fixture/web/css/styles-m.css Ændringer i app/design/frontend/Validiscan/fixture/web/css/styles-m.css: 9 tilføjet, 0 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/web/css/styles-m.css: 9 tilføjet, 0 fjernet Linje før Linje efter Ændring Kode 1232 1232 height: 18px; 1233 1233 stroke-width: 3; 1234 1234 } 1235 Tilføjet 1236 Tilføjet /* validiscan:reduced-motion-guard */ 1237 Tilføjet @media (prefers-reduced-motion: reduce) { 1238 Tilføjet .product-label, 1239 Tilføjet .slick-track { 1240 Tilføjet animation: none; 1241 Tilføjet } 1242 Tilføjet } 1243 Tilføjet /* /validiscan:reduced-motion-guard */ -
Slideshows, der kun bevæger sig, når den besøgende beder om det slider-pause-control Ingen pauseknap på Magento: Automatisk afspilning slås fra på Page Builder-sliderne i temaets filer, så de kun skifter, når den besøgende bruger prikkerne eller pilene.
På Magento tilføjer denne opskrift ingen pauseknap. Page Builder-slideren kører på Magentos egne scripts, og et tema kan ikke give den en pauseknap uden at overstyre Magentos kode. Opskriften bruger i stedet sliderens egen indstilling: På hver Page Builder-slider med automatisk afspilning i temaets filer slås den automatiske afspilning fra, som kontakten »Autoplay« i Page Builder gør, og pile slås til, hvor slideren ellers ikke ville have nogen måde at skifte mellem slides på. Endeløse CSS-animationer, der bevæger en slider af sig selv, fjernes. Så skifter slides kun, når den besøgende bruger prikkerne eller pilene: Intet bevæger sig af sig selv, så der er intet at sætte på pause. En slider, der er gemt i Magento-databasen, er ikke en fil i temaet: Du slår dens automatiske afspilning fra med indstillingen »Autoplay« i Page Builder. En slider, som temaets egne scripts starter med automatisk afspilning, for eksempel en Slick- eller Swiper-slider, har brug for en pauseknap, der er koblet ind i det script, og det overlades til et menneske.
- Regler, den dækker
-
-
vs-carouselAUTO
-
- Filtyper, den ændrer
-
.css.html.less
turns off the Page Builder autoplay and the track animation, and validates Eksempeldata app/design/frontend/Validiscan/fixture/Magento_Cms/content/home.html Ændringer i app/design/frontend/Validiscan/fixture/Magento_Cms/content/home.html: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Cms/content/home.html: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 3 3 class="pagebuilder-slider slick-slider" 4 4 data-content-type="slider" 5 5 data-appearance="default" 6 Fjernet data-autoplay="true" 6 Tilføjet data-autoplay="false" 7 7 data-autoplay-speed="3000" 8 8 data-fade="false" 9 9 data-infinite-loop="true" app/design/frontend/Validiscan/fixture/web/css/source/_theme.less Ændringer i app/design/frontend/Validiscan/fixture/web/css/source/_theme.less: 0 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/web/css/source/_theme.less: 0 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 1176 1176 .slick-track { 1177 1177 display: flex; 1178 1178 width: 300%; 1179 Fjernet animation: nw-slider-autoplay 9s ease-in-out infinite; 1180 1179 } 1181 1180 .slick-slide { 1182 1181 flex: 0 0 33.3333%; app/design/frontend/Validiscan/fixture/web/css/styles-m.css Ændringer i app/design/frontend/Validiscan/fixture/web/css/styles-m.css: 0 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/web/css/styles-m.css: 0 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 1147 1147 .slick-track { 1148 1148 display: flex; 1149 1149 width: 300%; 1150 Fjernet animation: nw-slider-autoplay 9s ease-in-out infinite; 1151 1150 } 1152 1151 .slick-slide { 1153 1152 flex: 0 0 33.3333%; -
Ingen blinkende eller rullende tekst remove-blink-marquee
<blink>- og<marquee>-elementer i temaets skabeloner bliver til statiske elementer, ogtext-decoration: blinkfjernes fra temaets stilark, så ingen tekst bevæger sig eller blinker af sig selv.<blink>- og<marquee>-elementer i temaets skabeloner bliver til statiske elementer med samme indhold, klasser og id’er: en<span>for blink og en<div>for marquee. Marqueens egne attributter, for eksempel rullehastighed og -retning, fjernes, og det samme gælder stilentext-decoration: blinki temaets stilark, så ingen tekst bevæger sig eller blinker af sig selv.- Regler, den dækker
-
-
blinkAUTO -
marqueeAUTO
-
- Filtyper, den ændrer
-
.html.phtml
makes an added ticker static and validates Eksempeldata app/design/frontend/Validiscan/fixture/Magento_Cms/content/home.html Ændringer i app/design/frontend/Validiscan/fixture/Magento_Cms/content/home.html: 2 tilføjet, 2 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Cms/content/home.html: 2 tilføjet, 2 fjernet Linje før Linje efter Ændring Kode 1 Fjernet <marquee class="news-ticker" behavior="scroll" direction="left" scrollamount="4"> 1 Tilføjet <div class="news-ticker"> 2 2 <p>Autumn sale: 20% off all jackets</p> 3 Fjernet </marquee> 3 Tilføjet </div> 4 4 <!-- VALIDISCAN-SEEDED vs-carousel + vs-motion + aria-hidden-focus: Page Builder slider autoplays (data-autoplay and a CSS animation) with no pause control; hidden slides keep focusable links; dots have no names --> 5 5 <div 6 6 class="pagebuilder-slider slick-slider" app/design/frontend/Validiscan/fixture/Magento_Theme/templates/html/top-promo.phtml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Theme/templates/html/top-promo.phtml: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Theme/templates/html/top-promo.phtml: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 5 5 // Fixed variant: moved into the header (header.container) and styled with line-height 1.5, no fixed height. 6 6 ?> 7 7 <!-- VALIDISCAN-SEEDED region + vs-text-spacing: the promo text sits outside every landmark in a fixed 26px-high box --> 8 Fjernet <div class="top-promo"><p class="top-promo-text"><blink><?= $block->escapeHtml(__('Free shipping on orders over €75')) ?></blink><br><?= $block->escapeHtml(__('Free 30-day returns on every jacket')) ?></p></div> 8 Tilføjet <div class="top-promo"><p class="top-promo-text"><span><?= $block->escapeHtml(__('Free shipping on orders over €75')) ?></span><br><?= $block->escapeHtml(__('Free 30-day returns on every jacket')) ?></p></div> -
Ingen lyd, der starter af sig selv mute-autoplay En video i temaets skabeloner, der afspilles af sig selv, gøres lydløs, og lyd starter ikke længere af sig selv, medmindre PHP-kode slår den automatiske afspilning til; på Magento bruges opskriften ikke til fund fra
vs-media.En video i temaets skabeloner, der afspilles af sig selv, får
mutedogplaysinline, så den fortsætter med at spille lydløst og inde på siden på mobilen. Lyd starter ikke længere af sig selv. Indlejrede YouTube- og Vimeo-afspillere, der starter af sig selv, indstilles til at starte uden lyd. Automatisk afspilning, som PHP-kode slår til, overlades til et menneske. I en Validiscan-scanning rapporteres lyd, der starter af sig selv, af Validiscans mediekontrolvs-media, som erstatter den axe-core-regel, denne opskrift dækker.vs-media, som også dækker undertekster og transskriptioner, har niveau MANUAL, så et sådant fund på Magento kommer med vejledning i stedet for denne ændring.- Regler, den dækker
-
-
no-autoplay-audioAUTO kontrolleres via vs-media
-
- Filtyper, den ændrer
-
.phtml
mutes the autoplaying product video and validates Eksempeldata app/design/frontend/Validiscan/fixture/Magento_Catalog/templates/product/view/details.phtml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Catalog/templates/product/view/details.phtml: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Catalog/templates/product/view/details.phtml: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 44 44 <h3 class="data item title"><?= $escaper->escapeHtml(__('Product video')) ?></h3> 45 45 <!-- VALIDISCAN-SEEDED vs-media: product video without a captions track --> 46 46 <?php /* Fixed variant: <track kind="captions" src="...juno-jacket-care.en.vtt" srclang="en" label="English" default>. */ ?> 47 Fjernet <video class="product-video-player" autoplay loop controls preload="none" width="560" height="315" poster="<?= $escaper->escapeUrl($product->getData('care_video_poster')) ?>"> 47 Tilføjet <video class="product-video-player" autoplay loop controls preload="none" width="560" height="315" poster="<?= $escaper->escapeUrl($product->getData('care_video_poster')) ?>" muted playsinline> 48 48 <source src="<?= $escaper->escapeUrl($videoUrl) ?>" type="video/mp4"> 49 49 </video> 50 50 <p><?= $escaper->escapeHtml($product->getData('care_video_caption')) ?></p>
Formularer, kurven og indlejret indhold
-
Etiketter knyttet til deres felter label-association Etikettekst, der allerede står på siden før et felt, bliver knyttet til det som et
<label>eller viaaria-labelledby.Et formularfelt, hvis etikettekst allerede står på siden før feltet, bliver knyttet til den tekst. Et
<label>udenforfår enfor-attribut, der peger på feltet. En etikettekst i en<span>eller<strong>, for eksempel en »Sort By«-tekst med Lumas klassesorter-labelved siden af sorteringsmenuen på en kategoriside, bliver til et<label>med de samme klasser. En etikettekst i et blokelement, for eksempel<div class="label">, beholder sit tag og knyttes viaaria-labelledby. Teksten skal stå i en container uden andre felter, så den ikke kan høre til et andet felt. Skærmlæsere læser så etiketten op, når feltet får fokus. Et felt, der kun har en pladsholdertekst, overlades til et menneske, fordi det er en beslutning om indhold at skrive en etiket.- Regler, den dækker
-
-
labelAUTO kontrolleres via vs-forms-ecommerce -
select-nameASSISTED -
vs-forms-ecommerceAUTO
-
- Filtyper, den ændrer
-
.phtml
turns the "Sort By" text into the sorter label and validates Eksempeldata app/design/frontend/Validiscan/fixture/Magento_Catalog/templates/product/list/toolbar.phtml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Catalog/templates/product/list/toolbar.phtml: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Catalog/templates/product/list/toolbar.phtml: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 12 12 <div class="toolbar-sorter sorter"> 13 13 <!-- VALIDISCAN-SEEDED select-name + vs-forms-ecommerce: the "Sort By" text is a span, not a label for the select --> 14 14 <?php /* Fixed variant: <label class="sorter-label" for="sorter">Sort By</label>. */ ?> 15 Fjernet <span class="sorter-label"><?= $escaper->escapeHtml(__('Sort By')) ?></span> 15 Tilføjet <label class="sorter-label" for="sorter"><?= $escaper->escapeHtml(__('Sort By')) ?></label> 16 16 <select id="sorter" data-role="sorter" class="sorter-options"> 17 17 <?php foreach ($block->getAvailableOrders() as $key => $order): ?> 18 18 <option value="<?= $escaper->escapeHtmlAttr($key) ?>"<?= $block->isOrderCurrent($key) ? ' selected' : '' ?>><?= $escaper->escapeHtml(__($order)) ?></option> -
Konto-, adresse- og kontaktfelter, som browsere kan udfylde autocomplete-tokens Felter i temaets skabeloner, der spørger efter kundens egne oplysninger, i formularer til adresse, konto, login, kontakt og nyhedsbrev, får den
autocomplete-værdi, der svarer til det, de spørger efter, medmindre skabelonkode skriver den.Felter i temaets skabeloner, der spørger efter kundens egne oplysninger, i formularer til adresse, konto, login, kontakt og nyhedsbrev, får den
autocomplete-værdi, der svarer til det, de spørger efter, for eksempel e-mail, navn, telefonnummer, vejadresse, postnummer eller adgangskode. Værdien udledes af feltets type, navn, id, etiket, pladsholdertekst og titel efter de samme regler som Validiscans formularkontrol, og felter til fakturering og levering får deres sektion, som ishipping given-name. Når ét felt i en formular er rapporteret, behandles hvert felt i den formular. Adgangskoder fårnew-passwordi registrerings- og nulstillingsformularer og i formularer med mere end ét adgangskodefelt, ogcurrent-passwordellers. Felter til rabatkode, søgning, gavemodtager, kommentar, antal og CAPTCHA får aldrig en værdi. En værdi, som skabelonkode skriver, eller en gyldig værdi, der ser forkert ud for feltet, overlades til et menneske.- Regler, den dækker
-
-
autocomplete-validAUTO kontrolleres via vs-forms-ecommerce -
vs-forms-ecommerceAUTO
-
- Filtyper, den ændrer
-
.phtml
adds tokens to the newsletter, login and contact forms and validates Eksempeldata app/design/frontend/Validiscan/fixture/Magento_Contact/templates/form.phtml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Contact/templates/form.phtml: 3 tilføjet, 3 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Contact/templates/form.phtml: 3 tilføjet, 3 fjernet Linje før Linje efter Ændring Kode 21 21 <!-- VALIDISCAN-SEEDED vs-forms-ecommerce: name, email and phone lack autocomplete; required only via the CSS asterisk --> 22 22 <div class="field name required"> 23 23 <label class="label" for="name"><span><?= $escaper->escapeHtml(__('Name')) ?></span></label> 24 Fjernet <div class="control"><input name="name" id="name" title="<?= $escaper->escapeHtmlAttr(__('Name')) ?>" value="<?= $escaper->escapeHtmlAttr($viewModel->getUserName()) ?>" class="input-text" type="text"></div> 24 Tilføjet <div class="control"><input name="name" id="name" title="<?= $escaper->escapeHtmlAttr(__('Name')) ?>" value="<?= $escaper->escapeHtmlAttr($viewModel->getUserName()) ?>" class="input-text" type="text" autocomplete="name"></div> 25 25 </div> 26 26 <div class="field email required"> 27 27 <label class="label" for="email"><span><?= $escaper->escapeHtml(__('Email')) ?></span></label> 28 Fjernet <div class="control"><input name="email" id="email" title="<?= $escaper->escapeHtmlAttr(__('Email')) ?>" value="<?= $escaper->escapeHtmlAttr($viewModel->getUserEmail()) ?>" class="input-text" type="email"></div> 28 Tilføjet <div class="control"><input name="email" id="email" title="<?= $escaper->escapeHtmlAttr(__('Email')) ?>" value="<?= $escaper->escapeHtmlAttr($viewModel->getUserEmail()) ?>" class="input-text" type="email" autocomplete="email"></div> 29 29 </div> 30 30 <div class="field telephone"> 31 31 <label class="label" for="telephone"><span><?= $escaper->escapeHtml(__('Phone Number')) ?></span></label> 32 Fjernet <div class="control"><input name="telephone" id="telephone" title="<?= $escaper->escapeHtmlAttr(__('Phone Number')) ?>" value="<?= $escaper->escapeHtmlAttr($viewModel->getUserTelephone()) ?>" class="input-text" type="tel"></div> 32 Tilføjet <div class="control"><input name="telephone" id="telephone" title="<?= $escaper->escapeHtmlAttr(__('Phone Number')) ?>" value="<?= $escaper->escapeHtmlAttr($viewModel->getUserTelephone()) ?>" class="input-text" type="tel" autocomplete="tel"></div> 33 33 </div> 34 34 <div class="field comment required"> 35 35 <label class="label" for="comment"><span><?= $escaper->escapeHtml(__('What’s on your mind?')) ?></span></label> app/design/frontend/Validiscan/fixture/Magento_Customer/templates/form/login.phtml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Customer/templates/form/login.phtml: 2 tilføjet, 2 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Customer/templates/form/login.phtml: 2 tilføjet, 2 fjernet Linje før Linje efter Ændring Kode 27 27 <div class="field email required"> 28 28 <label class="label" for="email"><span><?= $escaper->escapeHtml(__('Email')) ?></span></label> 29 29 <div class="control"> 30 Fjernet <input name="login[username]" value="<?= $escaper->escapeHtmlAttr($username) ?>" autocomplete="off" id="email" type="email" class="input-text mage-error" title="<?= $escaper->escapeHtmlAttr(__('Email')) ?>" aria-invalid="true" tabindex="1" onpaste="return false;" data-mage-init='{"mage/trim-input":{}}'> 30 Tilføjet <input name="login[username]" value="<?= $escaper->escapeHtmlAttr($username) ?>" autocomplete="email" id="email" type="email" class="input-text mage-error" title="<?= $escaper->escapeHtmlAttr(__('Email')) ?>" aria-invalid="true" tabindex="1" onpaste="return false;" data-mage-init='{"mage/trim-input":{}}'> 31 31 <div for="email" generated="true" class="mage-error" id="email-error"><?= $escaper->escapeHtml(__('Please enter a valid email address (Ex: johndoe@domain.com).')) ?></div> 32 32 </div> 33 33 </div> 35 35 <div class="field password required"> 36 36 <label for="pass" class="label"><span><?= $escaper->escapeHtml(__('Password')) ?></span></label> 37 37 <div class="control"> 38 Fjernet <input name="login[password]" type="password" autocomplete="off" class="input-text" id="pass" title="<?= $escaper->escapeHtmlAttr(__('Password')) ?>" tabindex="2" onpaste="return false;" oncopy="return false;"> 38 Tilføjet <input name="login[password]" type="password" autocomplete="current-password" class="input-text" id="pass" title="<?= $escaper->escapeHtmlAttr(__('Password')) ?>" tabindex="2" onpaste="return false;" oncopy="return false;"> 39 39 </div> 40 40 </div> 41 41 <!-- VALIDISCAN-SEEDED vs-accessible-auth: arithmetic CAPTCHA with no alternative --> app/design/frontend/Validiscan/fixture/Magento_Newsletter/templates/subscribe.phtml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Newsletter/templates/subscribe.phtml: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Newsletter/templates/subscribe.phtml: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 18 18 <!-- VALIDISCAN-SEEDED vs-forms-ecommerce (label): newsletter email only has a placeholder, no label and no autocomplete --> 19 19 <div class="field newsletter"> 20 20 <div class="control"> 21 Fjernet <input name="email" type="email" id="newsletter" placeholder="<?= $escaper->escapeHtmlAttr(__('Enter your email address')) ?>" data-mage-init='{"mage/trim-input":{}}' data-validate="{required:true, 'validate-email':true}"> 21 Tilføjet <input name="email" type="email" id="newsletter" placeholder="<?= $escaper->escapeHtmlAttr(__('Enter your email address')) ?>" data-mage-init='{"mage/trim-input":{}}' data-validate="{required:true, 'validate-email':true}" autocomplete="email"> 22 22 </div> 23 23 </div> 24 24 <div class="actions"> -
Ændringer i pris, lagerstatus og kurv bliver oplæst live-region-cart-variant De containere i temaets skabeloner, som Magentos scripts omskriver, for eksempel prisboksen og minikurvens tæller, bliver live-områder; selve scriptene ændres ikke.
Magentos egne scripts omskriver teksten i faste containere, når en kunde vælger en størrelse eller farve eller lægger et produkt i kurven. Opskriften gør de containere i temaets skabeloner til live-områder, så skærmlæsere læser den nye værdi op, uden at kunden behøver at gå derhen. Prisboksen og minikurvens tæller læses op i deres helhed, når de ændres; lagerbeskeden og sidebeskederne, for eksempel meddelelsen om, at et produkt er lagt i kurven, får
role="status". Selve scriptene ændres ikke. Hvor temaet markerer hele siden som et live-område, hvilket får skærmlæsere til at læse hver ændring op, fjernes den markering. Hvor en extensions script tilføjer markeringen, mens siden kører, overlades den til et menneske.- Regler, den dækker
-
-
vs-live-updatesAUTO
-
- Filtyper, den ændrer
-
.phtml
makes the price box and the stock message live regions and validates Eksempeldata app/design/frontend/Validiscan/fixture/Magento_Catalog/templates/product/price/final_price.phtml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Catalog/templates/product/price/final_price.phtml: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Catalog/templates/product/price/final_price.phtml: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 13 13 // Fixed variant: the product-page box carries aria-live="polite" aria-atomic="true" and the stock 14 14 // message (product/view/type/default.phtml) is role="status". 15 15 ?> 16 Fjernet <div class="price-box price-final_price" data-role="priceBox" data-product-id="<?= (int) $product->getId() ?>" data-price-box="product-id-<?= (int) $product->getId() ?>"<?php if ($isProductPage): ?> data-base-price="<?= (float) $amount ?>"<?php endif; ?>> 16 Tilføjet <div class="price-box price-final_price" data-role="priceBox" data-product-id="<?= (int) $product->getId() ?>" data-price-box="product-id-<?= (int) $product->getId() ?>"<?php if ($isProductPage): ?> data-base-price="<?= (float) $amount ?>"<?php endif; ?> aria-live="polite" aria-atomic="true"> 17 17 <span class="normal-price"><span class="price-container price-final_price tax weee"><span id="product-price-<?= (int) $product->getId() ?>" data-price-amount="<?= (float) $amount ?>" data-price-type="finalPrice" class="price-wrapper"><span class="price"><?= $escaper->escapeHtml($block->renderAmount($block->getPriceType('final_price')->getAmount(), ['display_label' => false])) ?></span></span></span></span> 18 18 </div> app/design/frontend/Validiscan/fixture/Magento_Catalog/templates/product/view/type/default.phtml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Catalog/templates/product/view/type/default.phtml: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Catalog/templates/product/view/type/default.phtml: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 11 11 ?> 12 12 <div class="product-info-stock-sku"> 13 13 <?php if ($block->displayProductStockStatus()): ?> 14 Fjernet <div class="stock available" title="<?= $escaper->escapeHtmlAttr(__('Availability')) ?>"><span><?= $escaper->escapeHtml(__('In stock')) ?></span></div> 14 Tilføjet <div class="stock available" title="<?= $escaper->escapeHtmlAttr(__('Availability')) ?>" role="status"><span><?= $escaper->escapeHtml(__('In stock')) ?></span></div> 15 15 <?php endif; ?> 16 16 <div class="product attribute sku"><strong class="type"><?= $escaper->escapeHtml(__('SKU')) ?></strong> <div class="value" itemprop="sku"><?= $escaper->escapeHtml($product->getSku()) ?></div></div> 17 17 </div> -
Titler til indlejrede kort og videoer iframe-title En indlejret ramme uden titel får en oversættelig titel, der siger, hvad den viser, hvor koden afslører det.
En indlejret ramme uden titel, for eksempel et kort, en YouTube- eller Vimeo-video, en kalender, en formular eller en widget med anmeldelser, får en oversættelig titel, der siger, hvad den viser. Opskriften læser, hvad rammen viser, ud fra dens adresse, herunder de faste dele af en adresse, som PHP-kode bygger, og ud fra dens klasser, id og navn. En ramme, hvis indhold koden ikke afslører, får ingen titel af opskriften og overlades til et menneske.
- Regler, den dækker
-
-
frame-titleAUTO
-
- Filtyper, den ændrer
-
.phtml
titles the store map on the contact page and validates Eksempeldata app/design/frontend/Validiscan/fixture/Magento_Contact/templates/form.phtml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Contact/templates/form.phtml: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Contact/templates/form.phtml: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 48 48 <p>Nordwind Outfitters (fixture)<br>Musterstraße 12<br>10115 Berlin, Germany</p> 49 49 <p><?= $escaper->escapeHtml(__('Monday to Saturday, 10:00 to 19:00')) ?></p> 50 50 <!-- VALIDISCAN-SEEDED frame-title: the store map iframe has no title --> 51 Fjernet <iframe src="<?= $escaper->escapeUrl($block->getBaseUrl() . 'media/wysiwyg/store-map.html') ?>" width="480" height="260" loading="lazy"></iframe> 51 Tilføjet <iframe src="<?= $escaper->escapeUrl($block->getBaseUrl() . 'media/wysiwyg/store-map.html') ?>" width="480" height="260" loading="lazy" title="<?= $escaper->escapeHtmlAttr(__('Store location map')) ?>"></iframe> 52 52 </div> 53 53 </div>
Kontrast, billeder og betjeningselementer, der kræver en vurdering
Tekstkontrast, tekstalternativer til billeder og navne til betjeningselementer uden navn kræver som regel en vurdering: hvilken farve der passer til dit brand, hvilke ord der beskriver et billede. De regler, der rapporterer dem, har niveau ASSISTED, som listerne herunder viser. For et fund på en ASSISTED-regel udarbejder AI kun et udkast til en ændring, hvis du har sagt ja til AI-udkast, og Validiscan gennemgår hver ændring, før den leveres.
De fire opskrifter herunder er ikke standardrettelsen for nogen regel. Hver af dem dækker kun de snævre tilfælde, hvor temaets kode alene beviser, hvad ændringen skal være. I et projekt anvendes button-semantics på fund fra slideshow-kontrollen vs-carousel, som har niveau AUTO: Rettelsesmotoren prøver den, når slider-opskriften ovenfor ikke retter et sådant fund. På Magento dækker de tre andre kun ASSISTED-regler: Et fund på disse regler følger ASSISTED-forløbet, og disse tre opskrifter anvendes ikke på det.
-
Tekstfarver med tilstrækkelig kontrast contrast-tokens En tekstfarve, der ikke består kontrastkontrollen og er defineret ét sted, ændres til den nærmeste farve i samme farvetone, der består mod hver målt baggrund; anvendes ikke i et projekt.
Når en tekst ikke består kontrastkontrollen, og dens farve er defineret ét sted i temaet, ændres det sted til den nærmeste farve i samme farvetone, som opnår den krævede kontrast mod hver baggrund, scanningen målte for den. Ét sted kan være en LESS-variabel eller en CSS-variabel, der kun bruges til tekstfarve, eller en enkelt
color-regel. Hvor temaet leveres med en kompileretstyles-m.css, får den den samme ændring. En farve, der bruges flere steder, også som baggrund eller kant, eller i regler, hvis baggrund scanningen ikke målte, overlades til et menneske.- Regler, den dækker
-
-
color-contrastASSISTED
-
- Filtyper, den ændrer
-
.css.less
darkens the single #929292 token and validates Eksempeldata app/design/frontend/Validiscan/fixture/web/css/source/_theme.less Ændringer i app/design/frontend/Validiscan/fixture/web/css/source/_theme.less: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/web/css/source/_theme.less: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 1099 1099 // VALIDISCAN-SEEDED color-contrast: #929292 on white is 3.1:1. 1100 1100 .block-promo .info, 1101 1101 .toolbar-amount { 1102 Fjernet color: #929292; 1102 Tilføjet color: #767676; 1103 1103 } 1104 1104 1105 1105 // VALIDISCAN-SEEDED vs-reflow: the promo row keeps a 1100px minimum width at every breakpoint. app/design/frontend/Validiscan/fixture/web/css/styles-m.css Ændringer i app/design/frontend/Validiscan/fixture/web/css/styles-m.css: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/web/css/styles-m.css: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 1075 1075 1076 1076 .block-promo .info, 1077 1077 .toolbar-amount { 1078 Fjernet color: #929292; 1078 Tilføjet color: #767676; 1079 1079 } 1080 1080 1081 1081 .block-promo-wrapper { -
Dekorative billeder skjult for skærmlæsere decorative-image-alt Kun billeder, som skabelonen beviser er dekorative, får et tomt
altelleraria-hidden; anvendes ikke i et projekt.Et billede markeres kun som dekorativt, når skabelonen beviser, at det ikke tilføjer noget: Det sidder i et link eller en knap, der allerede har tekst eller et navn, for eksempel et kampagnefelt med sin egen overskrift; det er et ikon på højst 48 pixels eller med en ikonklasse eller et ikonfilnavn ved siden af sin egen tekstetiket; eller det er en afstandsholder eller en skillelinje. Et
<img>får så et tomtalt, og et SVG-ikon fåraria-hidden="true", så skærmlæsere springer det over i stedet for at læse et filnavn op. Ethvert andet billede behandles som indhold, og dets tekstalternativ kræver ord, som et menneske vælger.- Regler, den dækker
-
-
image-altASSISTED -
role-img-altASSISTED -
svg-img-altASSISTED
-
- Filtyper, den ændrer
-
.html
marks the promo tile image decorative and validates Eksempeldata app/design/frontend/Validiscan/fixture/Magento_Cms/content/home.html Ændringer i app/design/frontend/Validiscan/fixture/Magento_Cms/content/home.html: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Cms/content/home.html: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 111 111 <div class="block-promo-wrapper block-promo-hp"> 112 112 <!-- VALIDISCAN-SEEDED image-alt: promo image without an alt attribute --> 113 113 <a class="block-promo home-main" href="/magento/women/tops-women/jackets-women.html"> 114 Fjernet <img src="/magento/media/wysiwyg/home/home-main.svg" width="400" height="240" /> 114 Tilføjet <img src="/magento/media/wysiwyg/home/home-main.svg" width="400" height="240" alt="" /> 115 115 <span class="content" 116 116 ><!-- VALIDISCAN-SEEDED color-contrast: .info text is #929292 on white (3.1:1) --><span 117 117 class="info" -
Navne til knapper og links, der kun består af et ikon icon-accessible-name Knapper og links, der kun viser et ikon, og hvis formål koden afslører, får en
aria-labelmed ordlyden fra Magentos Luma-tema, hvor Luma har en; anvendes ikke i et projekt.Knapper og links, der kun viser et ikon, for eksempel søgning, minikurv, konto, ønskeliste, sammenligning, menu, luk, forrige og næste samt valgene i et cookiebanner, får en
aria-label, der siger, hvad de gør, med ordlyden fra Magentos Luma-tema, hvor Luma har en, for eksempel »Search«, »My Cart« eller »Allow Cookies«. Formålet udledes af betjeningselementets klasser, id, data-attributter og linkmål, af dets ikon og af den formular eller det cookiebanner, der omgiver det. Et betjeningselement, hvis formål koden ikke afslører, for eksempel et link til et socialt medie, der bygges i en løkke ud fra en adresse gemt som data, eller et link, hvis eneste indhold er et produktfoto, overlades til et menneske, fordi dets navn afhænger af dit indhold.- Regler, den dækker
-
-
button-nameASSISTED -
link-nameASSISTED -
vs-cookie-bannerASSISTED
-
- Filtyper, den ændrer
-
.phtml
names the icon-only search button and validates Eksempeldata app/design/frontend/Validiscan/fixture/Magento_Search/templates/form.mini.phtml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Search/templates/form.mini.phtml: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Search/templates/form.mini.phtml: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 20 20 <div class="actions"> 21 21 <!-- VALIDISCAN-SEEDED button-name: icon-only search button without text, title or aria-label --> 22 22 <?php /* Fixed variant: <button type="submit" title="Search" class="action search"><span class="sr-only">Search</span>(icon, aria-hidden)</button>; the form gets role="search" aria-label="Site search". */ ?> 23 Fjernet <button type="submit" class="action search"><svg class="icon" viewBox="0 0 24 24"><circle cx="11" cy="11" r="7"/><path d="M20 20l-4-4"/></svg></button> 23 Tilføjet <button type="submit" class="action search" aria-label="<?= $escaper->escapeHtmlAttr(__('Search')) ?>"><svg class="icon" viewBox="0 0 24 24"><circle cx="11" cy="11" r="7"/><path d="M20 20l-4-4"/></svg></button> 24 24 </div> 25 25 </form> 26 26 </div> names the minicart link and leaves the product photo link for review Eksempeldata app/design/frontend/Validiscan/fixture/Magento_Checkout/templates/cart/minicart.phtml Ændringer i app/design/frontend/Validiscan/fixture/Magento_Checkout/templates/cart/minicart.phtml: 1 tilføjet, 1 fjernet
Ændringer i app/design/frontend/Validiscan/fixture/Magento_Checkout/templates/cart/minicart.phtml: 1 tilføjet, 1 fjernet Linje før Linje efter Ændring Kode 13 13 ?> 14 14 <!-- VALIDISCAN-SEEDED link-name + aria-valid-attr-value: the "My Cart" text was removed from the minicart link (only an icon and an empty counter remain) and aria-expanded carries the invalid value "closed" --> 15 15 <div data-block="minicart" class="minicart-wrapper"> 16 Fjernet <a class="action showcart" href="<?= $escaper->escapeUrl($block->getShoppingCartUrl()) ?>" data-bind="scope: 'minicart_content'" aria-haspopup="true" aria-expanded="closed"> 16 Tilføjet <a class="action showcart" href="<?= $escaper->escapeUrl($block->getShoppingCartUrl()) ?>" data-bind="scope: 'minicart_content'" aria-haspopup="true" aria-expanded="closed" aria-label="<?= $escaper->escapeHtmlAttr(__('My Cart')) ?>"> 17 17 <svg class="icon" viewBox="0 0 24 24"><path d="M3 4h2l2.4 11.2a2 2 0 0 0 2 1.6h7.7a2 2 0 0 0 2-1.5L21 8H6"/><circle cx="10" cy="20" r="1.5"/><circle cx="17" cy="20" r="1.5"/></svg> 18 18 <span class="counter qty empty"><span class="counter-number"></span></span> 19 19 </a>
Detaljer: niveauerne, testtemaet, kontrollen af hver ændring og tekst på din webshops sprog
En opskrift er en deterministisk ændring for én slags fejl: Den samme kode får altid den samme ændring. Validiscan har 20 opskrifter til Magento-temaer. Hver af dem foretager kun en ændring, hvor temaets kode viser, hvad den rigtige ændring er. Hvor den ikke gør det, ændrer opskriften intet. Den gætter ikke.
Under hver opskrift finder du de regler, den dækker, med hver regels niveau i Validiscans regelkatalog for Magento. AUTO betyder, at en opskrift er reglens standardrettelse. ASSISTED betyder, at reglens fund som regel kræver en vurdering. MANUAL betyder, at reglen kræver en persons beslutning og kommer med vejledning. I et projekt anvendes opskrifter på fund af regler på niveau AUTO. Hvor en opskrift også angiver en regel på niveau ASSISTED eller MANUAL, følger et fund af den regel i stedet ASSISTED- eller MANUAL-forløbet. En regel, der kontrolleres via en anden kontrol, køres ikke selvstændigt i en scanning; den anden kontrol rapporterer den samme fejl.
Filtyperne og før-og-efter-visningen for hver opskrift stammer fra Validiscans egne tests. De kører på Validiscans Magento-testtema, et child-tema af Magentos Luma-tema, hvor der med vilje er lagt tilgængelighedsfejl ind. Magento kan ikke gengives i testmiljøet, så ingen test gengiver en side: Hver test sammenligner ændringen med en gemt diff og kontrollerer den ændrede kildekode, for eksempel at den svarer til testtemaets rettede version. Dit temas filer ser anderledes ud.
Før Validiscan gennemgår en ændring, kontrolleres de ændrede filer. Hver sti skal ligge inde i temaet, som beskrevet ovenfor. .phtml-skabeloner får PHP’s egen syntakskontrol, som læser filen uden at køre den. Layout-XML kontrolleres som XML, stilark får en strukturkontrol, og HTML-skabeloner og JavaScript læses af en parser.
Når en opskrift tilføjer ord, for eksempel teksten i et spring over-link eller navnet på et navigationsområde, skriver den dem på engelsk, med ordlyden fra Magentos Luma-tema, hvor Luma har en, for eksempel »Skip to Content«. Hvor dit tema har en tysk oversættelsesfil i sin mappe i18n, tilføjer opskriften den tyske tekst dér, medmindre strengen allerede er oversat. Tekst på webshoppens andre sprog tilføjes ikke.
Hvad forbliver på niveau MANUAL på Magento?
Fejl, der kræver en beslutning om dit indhold eller om, hvordan en del af siden opfører sig, som en opskrift ikke træffer, for eksempel undertekster og transskriptioner til dine videoer og din lyd, forbliver på niveau MANUAL på Magento. For et fund på en MANUAL-regel giver Validiscan vejledning, ikke en kodeændring.
Reglerne herunder køres i scanninger og har niveau MANUAL på Magento; regler for god praksis er ikke med på listen.
-
meta-refreshForsinket genindlæsning under 20 timer må ikke bruges -
nested-interactiveInteraktive betjeningselementer må ikke være indlejret i hinanden -
scrollable-region-focusableScrollbare områder skal kunne nås med tastaturet -
server-side-image-mapServerside-billedkort må ikke bruges -
vs-keyboard-trapTastaturfokus må aldrig sidde fast -
vs-focus-orderFokusrækkefølgen skal følge den visuelle rækkefølge -
vs-draggingElementer, der kun kan betjenes ved at trække, skal have et alternativ med et enkelt klik eller tryk -
vs-mediaVideo skal have undertekster, lyd skal have en transskription, og intet må afspille lyd automatisk -
vs-documentsLinkede dokumenter skal gennemgås manuelt for tilgængelighed
Detaljer: hvad et fund på niveau MANUAL får, reglen om tab-rækkefølgen, og hvad et projekt ikke omfatter
For et fund på en MANUAL-regel giver Validiscan vejledning i, hvordan det rettes, ikke en ændring af din kode. Disse fejl kræver en beslutning om dit indhold eller om, hvordan en del af siden opfører sig, som en opskrift ikke træffer: undertekster og transskriptioner til dine videoer og din lyd, en vej ud af en widget, hvor tastaturfokus sidder fast, en anden måde at bruge et betjeningselement på, som kun virker ved at trække, en fokusrækkefølge, der svarer til layoutet, en side, der genindlæser sig selv efter en forsinkelse, eller tilgængeligheden af linkede PDF-filer og andre dokumenter. En tvunget tab-rækkefølge via et tabindex over 0 rapporteres også af axe-core-reglen tabindex, som opskriften om tab-rækkefølgen ovenfor retter.
Arbejdet med fund på niveau MANUAL, der kræver dine egne beslutninger om indhold, er ikke en del af et projekt, og det samme gælder PDF-filer. Hvad automatiseret test af webtilgængelighed kan og ikke kan bevise
Hvad stiller du til rådighed?
Du sørger for skriftlig tilladelse til en fuld scanning, én vej ind i dit tema, dit svar om AI-udkast til ASSISTED-rettelser, en udvikler, der gennemgår ændringerne, kompilerer stilarkene og ruller temaet ud, ændringer i Magento Admin, oversættelser af tilføjet tekst til webshoppens andre sprog og dine beslutninger om det, der forbliver MANUAL.
- Skriftlig tilladelse til en fuld scanning af din webshop. En fuld scanning lægger et produkt i kurven og åbner det første trin i kassen uden at gennemføre et køb eller indtaste betalingsoplysninger.
- Én vej ind i dit tema: adgang til det GitHub-repository, der rummer det, eller en ZIP-fil med temamappen under
app/design/frontend, uploadet i kundeportalen. - Dit svar på, om AI må udarbejde rettelser på niveau ASSISTED. AI-udkast er slået fra, indtil du siger ja.
- En udvikler, der gennemgår ændringerne, merger pull requesten eller anvender patchpakken, kompilerer stilarkene og ruller temaet ud.
- De ændringer i Magento Admin, som rettelserne ikke foretager: store view eller sprogmarkering for indhold, der er skrevet på et andet sprog end webshoppens, sidetitler og indstillinger for HTML Head samt automatisk afspilning slået fra på Page Builder-slidere, der er gemt i databasen.
- Oversættelser af den tekst, som rettelserne tilføjer, til webshoppens andre sprog. Opskrifterne skriver engelsk og tilføjer kun tysk, hvor dit tema allerede har en tysk oversættelsesfil.
- Dine beslutninger om det, der forbliver MANUAL, for eksempel undertekster til dine videoer.
Detaljer: når ændringerne er live, og hvad et projekt dækker
Når ændringerne er live, kontrollerer en verifikationsscanning de berørte sider igen, og Remediation Evidence Package registrerer resultatet. Sådan forløber et projekt, trin for trin
Et projekt dækker én webshop: ét domæne og ét tema. En headless storefront, hvor siderne bygges af en separat frontend-applikation i stedet for et tema, fås på forespørgsel.
Kilder
Én kilde, kontrolleret til denne side den 6. oktober 2026.
Adobe Commerces udviklerdokumentation 1
- CSS and LESS preprocessing · Adobe · kontrolleret
Begynd med et gratis tjek af din webshop.
Send din webshops adresse. Validiscan scanner den og svarer med hver fejl, scanningen kan påvise, med siden og koden.
Bestil et gratis tjekEller skriv til info@validiscan.com.
Hvad det gratis tjek omfatter, og hvad det udelader- Du sender
- din webshops adresse
- Sider, der scannes
- op til 15
- Du får
- hver fejl, scanningen kan påvise, med siden og koden
- På din webshop
- kun offentlige sider; intet login, intet købt, ingen formularer sendt
- Hvad det ikke er
- et fuldt audit