Так уж вышло, что веб-страницы просматриваются не только людьми, но и роботами. При всей своей умности, роботы не всегда точно понимают смысл контента. По этому специально для них были придуманы различные форматы мета-данных.
<title> и <meta name="description">
Эти мета-данные были одними из самых первых, которые помогали роботам понять суть страницы.
В теге <title>
размещают заголовок страницы. Для каждой страницы должен быть указан заголовок и лучше всего, если он будет уникальным для всего сайта. На размер строки заголовка нет явных ограничений, но из практических соображений не стоит делать его длиннее 70-80 символов.
В атрибуте content
тега <meta name="description">
размещают кратное описание страницы. Длину стоит ограничить 150-160 символами потому, что оно активно используется для построения сниппета в поисковой выдаче и более длинное описание будет автоматически укорочено. Явного ограничения в спецификациях нет. Содержимое, как и в случае с заголовком страницы, должно быть уникальным для всего сайта.
Ещё одним классическим тегом считается <link rel="canonical">
. Он нужен для того, чтобы сообщить роботам какая из страниц с одинаковым содержимым, если таковые имеются, считается основной. Адрес задаётся в атрибуте href
.
Протокол Open Graph
С появлением социальных сетей и кнопок «Like» простого заголовка и описания стало недостаточно. Социальные сети хотели отображать у себя на страницах картинку, видео или аудио материалы, которые отметили пользователи.
Facebook разработал на основе RDFa упрощенный протокол Open Graph
, который работает в одном пространстве имён og
и имеет ограниченный набор типов данных (музыка, видео, статья, книга, персона и сайт).
<html prefix="og: http://ogp.me/ns# article: http://ogp.me/ns/article#">
<head>
<title>Больше семантики для логотипа :: Хранитель заметок</title>
<meta property="og:title" content="Больше семантики для логотипа">
<meta property="og:type" content="article">
<meta property="og:url" content="http://noteskeeper.ru/945/">
<meta property="og:image" content="http://noteskeeper.ru/assets/img/nk-logo-200.png">
<meta property="og:description" content="Разметке логотипа можно добавить семантики с помощью microdata. Тип Brand позволяет указать логотип для продуктов и людей">
<meta property="og:site_name" content="Хранитель заметок">
<meta property="article:published_time" content="2013-08-26T03:31:18+00:00">
<meta property="article:section" content="Вёрстка">
<meta property="article:tag" content="microdata">
...
Протокол получил поддержку у множества социальных сервисов и поисковых систем. Некоторые из них, например, Twitter и Вконтакте, адаптируют его для своих нужд, используя часть полей Open Graph и дополняя необходимыми данными.
Microdata и RDFa
Почти одновременно в 2009 году появились черновики двух спецификаций, оперирующих со сложными типами объектов и поддерживающие их глубокую вложенность:
- Microdata – HTML Microdata Nightly и HTML Living Standard
- RDFa – RDFa Core и HTML+RDFa
Оба формата используют дополнительные атрибуты HTML-элементов, чтобы указать тип объекта и его свойства. Значения свойств за некоторым исключением берётся из текстового содержимого элемента.
RDFa позволяет указывать значение свойства с помощью атрибута content
у любого элемента:
<span property="dc:modified"
content="2013-09-16T15:00:00+00:00"
datatype="xsd:dateTime">16 сентября 2013 года</span>
В то время как парсерам Microdata требуются дополнительные элементы <meta>
или <link>
:
<span>16 сентября 2013 года</span>
<meta itemprop="dateModified" content="2013-09-16T15:00:00+00:00">
Разметка с помощью Microdata или RDFa позволяют сообщить роботам о семантике контента независимо от того какими тегами он размечен в HTML. Более того, форматы позволяют обозначить данные, невидимые пользователю в силу внешнего дизайна страницы.
“Shaken, not stirred”
При всём разнообразии мета-данных, которые можно впихнуть на страницу, складывается ситуация, когда одни и те же данные будут повторяться в HTML-коде несколько раз.
Например, описание страниц, которое фигурирует во всех форматах, можно передать в одном теге:
<meta content="Разметке логотипа можно добавить семантики с помощью microdata. Тип Brand позволяет указать логотип для продуктов и людей"
name="description"
property="og:description"
itemprop="description"
id="_articleDescription">
В этом примере свойство description
типа http://schema.org/Article
подключается в объект с помощью ссылки по id
в атрибуте itemref
. Если это позволяет разметка, то тип самого важного объекта на странице можно объявить у корневого элемента документа. Тогда все теги meta
естественным образом окажутся в области видимости этого объекта.
<html prefix="og: http://ogp.me/ns# article: http://ogp.me/ns/article#" itemscope itemtype="http://schema.org/Article">
<head>
<title>Больше семантики для логотипа :: Хранитель заметок</title>
<meta property="og:title" content="Больше семантики для логотипа" itemprop="name">
<meta property="og:type" content="article">
<meta property="og:url" content="http://noteskeeper.ru/945/" itemprop="url">
<meta property="og:image" content="http://noteskeeper.ru/assets/img/nk-logo-200.png" itemprop="image">
<meta property="og:description" content="Разметке логотипа можно добавить семантики с помощью microdata. Тип Brand позволяет указать логотип для продуктов и людей" itemprop="description">
<meta property="og:site_name" content="Хранитель заметок">
<meta property="article:published_time" content="2013-08-26T03:31:18+00:00" itemprop="dateCreated">
<meta property="article:section" content="Вёрстка" itemprop="articleSection">
<meta property="article:tag" content="microdata" itemprop="keywords">
...
Так как привязка нового объекта к «родителю» осуществляется только наличием у него атрибута itemprop
, то при его отсутствии новый объект помещается на самый верхний уровень иерархии. Получается, что на странице можно безопасно размещать несколько независимых объектов.
Атрибуты role и aria-*
Особняком стоят атрибуты Web Accessibility Initiative (WAI). Они используются вспомогательными технологиями для обеспечения доступности контента для пользователей с ограниченными возможностями.
Скринридерам часто приходится специально сообщать о назначении элемента (атрибут role
), его названии (атрибуты aria-label, aria-labelledby, aria-describedby
) или состоянии, так как у него нет другого способа передать эту информацию пользователю.
Заключение
- Старайтесь сообщить как можно больше полезной информации о содержимом страницы для роботов даже если она останется невидимой для человека.
- Избегайте повторения одних и тех же мета-данных в разных форматах. Чаще всего их можно объединить, используя разные техники.
- Проверяйте качество разметки с помощью соответствующих парсеров и валидаторов.
Коментарии к заметке
Отличная статья. Добавил в закладки.
спасибо. наконец нормально настроил постинг в соц сети и с правильной картинкой
Здравствуйте! Настроил og:meta разметку на своем сайте но при проверки google показывает тип не указан. Как решит проблему или эта не проблема! Сайт указан на поле коммента
Rustam, не преживайте на этот счёт. Open Graph protocol не используется Гуглом. Инструмент проверки Фейсбука ошибок не находит и корректно отображается превью.
запихнуть все метки в одном теге, это идеальное решение но есть проблема — как быть с w3c валидатором?
Проблема понятна и эта проблема, мне я считаю, конкретного инструмента. Микроформаты нужны для явного обозначения каких-то данных для совершенно конкретных сервисов или инструментов. Если эти сервисы и инструменты правильно воспринимают ваши данные, то проблемы тут нет.
Если 100% валидность в вашем процессе разработки является ключевыми фактором, то нужно добиваться этой валидности дублирую код.
Аналогично я могу сказать и про Google PageSpeed. Это прежде всего инструмент. Но если от вас требуют 100% результата в этом инструменте, то делайте всё, чтобы добиться желаемого результата (хоть это может противоречить здравому смыслу).