Przejdź do treści

Wzorzec · TypeScript

Rozszerzenie JSON-LD Organization i WebSite w layoutcie głównym

Powiązane @id w @graph: organizacja, osoba, witryna — baza pod pozostałe encje.

Poziom: średniSzacunek czasu: ~45 min

Graf w korzeniu ustala stabilne @id; typy stronicowe odwołują się przez author, publisher, provider.

  • Jedna Organization na domenę
  • Person i Organization powiązane worksFor/founder
  • encje potomne używają {\"@id\": \"...\"} zamiast duplikować pola

Strony usług, artykułów i wzorców nie powinny od nowa opisywać całej organizacji. Wystarczy odwołanie do @id z głównego layout.

Kod

Wzorzec: funkcja zbiera tablicę pod <script type="application/ld+json">:

const site = 'https://example.com'
const orgId = `${site}#organization`
const webSiteId = `${site}/#website`

export function buildRootLayoutSchemaGraph() {
  return [
    {
      '@type': 'Organization',
      '@id': orgId,
      name: 'Example Co',
      url: site,
    },
    {
      '@type': 'WebSite',
      '@id': webSiteId,
      url: site,
      name: 'Example',
      publisher: { '@id': orgId },
    },
  ]
}

Na stronie podrzędnej:

const softwareLd = {
  '@type': 'SoftwareSourceCode',
  author: { '@id': `${site}#person` },
  provider: { '@id': orgId },
}

Weryfikacja

  • Walidator nie pokazuje sprzecznych duplikatów Organization z różnymi URL na jednej domenie.
  • Wszystkie odnośniki @id rozwiązują się do obiektów w tym samym lub nadrzędnym @graph.

Źródła

Wdrożyć pod Twoją domenę i stack?

Krótki formularz: imię, telefon, strona. Po wysłaniu — odpowiedź z kolejnością prac i orientacją etapów; szczegóły doprecyzujemy na kontakcie.