Да асноўнага зместу

Патэрн · TypeScript

Пашырэнне JSON-LD Organization і WebSite ў каранёвым layout

Звязаныя `@id` у `@graph`: organization, person, site — база для іншых сутнасцей.

Узровень: сярэдніАцэнка часу: ~45 хв

Каранёвы граф задае стабільныя `@id`; тыпы на ўзроўні старонак спасылаюцца на іх праз author, publisher і provider.

  • Адна Organization на дамен
  • Person і Organization звязаны праз worksFor/founder
  • даччыныя сутнасці выкарыстоўваюць {\"@id\": \"...\"} замест дублявання палёў

Старонкі паслуг, артыкулаў і патэрнаў не павінны зноў апісваць усю арганізацыю. Спасылайцеся на @id з каранёвага layout.

Код

Патэрн: функцыя будуе масіў для <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 },
    },
  ]
}

На даччынай старонцы:

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

Праверка

  • Валідатар не паказвае супярэчлівых дублікатаў Organization з рознымі URL на адным дамене.
  • Кожная спасылка @id развязваецца ў аб'екце ў тым жа або бацькоўскім @graph.

Крыніцы

Трэба ўнясці пад ваш домен і стэк?

Кароткая форма: імя, тэлефон і сайт. Пасля адпраўкі — адказ з парадкам работ і арыенцірам па этапах; дэталі ўдакладняюцца пры кантакце.