Të dhëna të strukturuara
JSON-LD i pavlefshëm
Blloqe JSON-LD me sintaksë të prishur; motori i shpërfill të tërë, pa asnjë njoftim.
Çfarë është
Një bllok JSON-LD duhet të jetë JSON i vlefshëm. Nëse sintaksa është e prishur, i gjithë blloku hidhet — jo pjesa e gabuar, por gjithçka brenda tij.
Gabimet më të shpeshta janë tri: presja e tepërt para kllapës mbyllëse, çelësat pa thonjëza, dhe thonjëzat tipografike të futura nga një redaktor teksti në vend të thonjëzave të drejta.
Një i katërt, më i fshehtë, prek faqet e gjeneruara: një vlerë teksti që përmban vetë një thonjëz të pashmangur e prish JSON-in sapo të dhënat e vërteta zëvendësojnë shembullin.
Pse ka rëndësi
Dështimi është i heshtur. Faqja duket njësoj, shfletuesi nuk ankohet, konsola nuk shfaq asgjë. Motori thjesht i shpërfill shënimet, dhe rezultatet e pasuruara që prisje nuk shfaqen kurrë.
Pra ke bërë punën, ke shtuar kodin, dhe nuk merr asnjë nga përfitimet — pa asnjë shenjë që diçka nuk shkon. Zbulimi ndodh zakonisht muaj më vonë, kur dikush pyet pse konkurrenti ka yje te rezultatet.
Situata bëhet më e keqe në sajte të gjeneruara, ku i njëjti shabllon i prishur prek mijëra faqe njëherësh.
Dhe ka një kurth te ky mjet vetë: sepse pikësimi i numëron blloqet e prishura si njësi të gjetura, një faqe krejt e prishur merr notën maksimale.
Si rregullohet
// e gabuar — presje e tepërt dhe çelës pa thonjëza
{ "@type": "Article", headline: "Titulli", }
// e saktë
{ "@type": "Article", "headline": "Titulli" }Hapat:
- Gjeneroje JSON-in me një funksion serializimi, kurrë me bashkim vargjesh. Kjo e zhduk gjithë klasën e gabimeve.
- Shmang thonjëzat e zgjuara. Kopjimi nga një dokument teksti është shkaku më i shpeshtë.
- Validoje në ndërtim, jo në prodhim. Një test që parson çdo bllok JSON-LD të faqeve të gjeneruara e kap gabimin para publikimit.
- Kontrollo me të dhëna reale, jo me shembullin. Emrat me apostrof e prishin shabllonin.
- Kujdes me karakteret e kontrollit dhe rreshtat e rinj brenda vlerave teksti.
Si e mat ky mjet
Te SchemaAnalyzer::detectJsonLd() (services/SchemaAnalyzer.php:39), përmbajtja e çdo <script type="application/ld+json"> dekodohet. Kur dekodimi dështon, shtohet një njësi me llojin Invalid JSON-LD dhe is_valid = false (:49), dhe jepet një paralajmërim (:56).
Pastaj kodi kalon te blloku tjetër — një bllok i prishur nuk e ndal analizën e të tjerëve.
Çfarë NUK e mat
Kontrolli e kap gabimin, por pikësimi e mohon atë. Njësia e pavlefshme shtohet në listën e njësive të gjetura, dhe pikësimi te services/SchemaAnalyzer.php:30 jep 100 sapo lista nuk është bosh.
Rezultati i matur mbi një faqe me tri blloqe të prishura: score: 100 · items: 3 · issues: 2× "Invalid JSON-LD". Pra raporti thotë njëkohësisht "të dhënat e strukturuara janë të përsosura" dhe "të dhënat e strukturuara janë të prishura". Nota duhet shpërfillur; konstatimet duhen lexuar.
Mesazhi i gabimit nuk thotë ku është problemi: nuk jep numër rreshti, nuk jep pozicion, nuk thotë cili nga blloqet. Në një faqe me disa blloqe duhet t'i kontrollosh të gjitha me dorë.
Mospërputhje midis tekstit të analizuesit dhe matjes
| Teksti i analizuesit | Çfarë ndodh | Si u mat | Burimi |
|---|---|---|---|
| Structured data detected — 3 schema item(s) found | Pikësimi është binar mbi numrin e njësive, dhe blloqet e pavlefshme shtohen si njësi me llojin 'Invalid JSON-LD'. | Mbi 09-jsonld-i-prishur.html: score 100, items 3 (2 me is_valid=false), 2 paralajmërime 'Invalid JSON-LD'. — MASTER_PLAN/audits/61-ANALIZUESIT-INVENTAR.md §4.4 | services/SchemaAnalyzer.php:30 |
Kodi që e kryen matjen
services/SchemaAnalyzer.php:49— Invalid JSON-LDservices/SchemaAnalyzer.php:30— score