AMP

amp-auto-ads

Динамически размещает объявления на AMP-странице с помощью файла конфигурации со стороннего сервера.

Где можно пользоваться функцией Экспериментальная функция
Скрипт <script async custom-element="amp-auto-ads" src="https://cdn.ampproject.org/v0/amp-auto-ads-0.1.js"></script>
Поддерживаемые макеты

Принципы работы

При достаточном количестве действительных мест размещения, заданных в конфигурации, компонент amp-auto-ads стремится добавить дополнительные объявления, соблюдая ограничения в рекламной сети. Ограничения касаются:

  • общего числа объявления, которые можно разместить;
  • минимально допустимое расстояние между находящимися рядом объявлениями.

Кроме того, объявления добавляются только в области на странице, которые не приводят с недопустимым исправлениям, определенным в attemptChangeSize.

Тег <amp-auto-ads> необходимо разместить в качестве первого дочернего элемента тега <body>.

Тип рекламной сети и дополнительные сведения, необходимые для этой сети, указываются в теге.

<amp-auto-ads
    type="adsense"
    data-ad-client="ca-pub-5439573510495356">
  </amp-auto-ads>

Поддерживаемые рекламные сети

Атрибуты

type (обязательно) Идентификатор рекламной сети.
data-foo-bar Для большинства рекламных сетей требуются дополнительные параметры конфигурации, которые можно передать в сеть с помощью HTML-атрибутов data-. При этом дефисы из имен параметров удаляются и используется "верблюжья" нотация. Например, параметр data-foo-bar передается как fooBar. Подробнее…
common attributes Этот элемент содержит распространенные атрибуты, которые поддерживаются компонентами AMP.

Сведения о конфигурации

В конфигурации определено, в каких областях страницы при помощи компонента <amp-auto-ads> можно размещать рекламу. Конфигурация извлекается из сторонней рекламной сети по адресу, заданному в элементе ad-network-config.js, и представляет собой сериализованный объект JSON, который соответствует описанному ниже определению ConfigObj.

Пример конфигурации

В приведенном ниже примере объявление должно быть размещено сразу после всех элементов <P class='paragraph'>, находящихся в третьем элементе <DIV id='domId'> на странице. В этих областях можно размещать только объявления типа "баннер" верхнее и нижнее поля которого составляют 4 и 10 пикселей соответственно.

{
  "placements": [
    {
      "anchor": {
        "selector": "DIV#domId",
        "index": 2,
        "sub": {
          "selector": "P.paragraph",
          "all": true,
        },
      },
      "pos": 4,
      "type": 1,
      "style": {
        "top_m": 5,
        "bot_m": 10,
      },
    },
  ]
}

Определение объектов

ConfigObj

Ниже перечислены поля, которые следует заполнить в объекте конфигурации.

Название поля Тип Описание
placements Массив <!PlacementObj> Обязательное поле, показывающее, в каких местах на странице можно размещать рекламу.
attributes Объект <string, string> Необязательное поле для сопоставления названия и значений атрибута, которые будут применяться ко всем элементам <amp-ad>, добавленным с помощью этой конфигурации. Допускаются только следующие названия атрибутов:
  • type
  • layout
  • data-* (т. е. любой атрибут данных)
adConstraints AdConstraintsObj Необязательное поле, в котором приведены ограничения, действующие при размещении рекламы на странице. Если поле не заполнено, компонент amp-auto-ads попробует использовать ограничения по умолчанию, заданные в элементе ad-network-config.js.

PlacementObj

Ниже перечислены поля, которые следует заполнить в объекте конфигурации placements.

Название поля Тип Описание
anchor AnchorObj Обязательное поле that provides information used to look up the element(s) on the page that the placement position is anchored to.
pos RelativePositionEnum Обязательное поле, в котором указана позиция места размещения по отношению к его элементу привязки.
type PlacementTypeEnum Обязательное поле, в котором указан тип места размещения.
style PlacementStyleObj Необязательное поле со стилями, которые следует применить к объявлению, размещенному в этой области места размещения.
attributes Объект <string, string> Необязательное поле для сопоставления названия и значения атрибутов, которые будут применяться ко всем элементам <amp-ad>, добавленным с помощью этого места размещения. Указанный здесь атрибут переопределяет любые другие варианты, которые имеют такое же название и также указаны в родительском элементе ConfigObj. Допускаются только следующие названия атрибутов:
  • type
  • layout
  • data-* (т. е. любой атрибут данных)

AnchorObj

Ниже перечислены поля, которые следует заполнить в объекте конфигурации anchor.

Название поля Тип Описание
selector строка Обязательное поле, в котором определен селектор CSS для выбора элементов на этом уровне определения привязки.
index число Необязательное поле для указания индекса элементов, выбранных в селекторе, которым должен быть ограничен этот уровень определения привязки. По умолчанию здесь задается значение 0 (если в поле all установлено значение false).
all логическое значение Игнорируется, если заполнено поле index. Если включить нужно все элементы, выбранные в селекторе, здесь задается значение true, в противном случае указывается значение false.
min_c число Необязательное поле, где указывается минимальная длина ресурса элемента textContent, при котором этот ресурс будет включен. Значение по умолчанию – 0.
sub AnchorObj Необязательное поле, где указывается повторяющийся объект AnchorObj, которые выбирает элементы в рамках любых элементов, заданных на этом уровне определения привязки.

PlacementStyleObj

Ниже перечислены поля, которые следует заполнить в объекте конфигурации style.

Название поля Тип Описание
top_m число Необязательное поле, где указывается верхнее поле (в пикселях), которое необходимо для объявления, размещенного в этой позиции. Значение по умолчанию – 0.
bot_m число Необязательное поле, где указывается нижнее поле (в пикселях), которое необходимо для объявления, размещенного в этой позиции. Значение по умолчанию – 0.

RelativePositionEnum

Значения ENUM для поля pos в объекте конфигурации placements:

Название Значение Описание
BEFORE 1 Объявление должно быть размещено как элемент того же уровня непосредственно перед привязкой.
FIRST_CHILD 2 Объявление должно быть размещено как первый дочерний элемент привязки.
LAST_CHILD 3 Объявление должно быть размещено как последний дочерний элемент привязки.
AFTER 4 Объявление должно быть размещено как элемент того же уровня сразу после привязки.

PlacementTypeEnum

Значения ENUM для поля type в объекте конфигурации placements:

Название Значение Описание
BANNER 1 Место размещения, характеризующее позицию баннера.

AdConstraintsObj

Ниже перечислены поля, которые следует заполнить в объекте конфигурации adConstraints.

Название поля Тип Описание
initialMinSpacing строка Обязательное поле, где указано минимальное расстояние между объявлением, добавленным вручную или с помощью компонента, и другими рекламными материалами на странице на момент размещения. Значения представляют собой число и префикс, обозначающий единицы измерения, например вариант 10px означает 10 пикселей, а 0.5vp – половину высоты области просмотра. Отрицательные значения не допускаются. Поддерживаются следующие единицы:
  • px – пиксели;
  • vp – доля высоты области просмотра.
Это значение действует, только если количество объявлений на странице меньше количества в инструменте сравнения adCount, заданном в поле subsequentMinSpacing.
subsequentMinSpacing Массив <!SubsequentMinSpacingObj> Необязательное поле, где указаны сведения по интервалам между объявлениями, которые могут применяться в зависимости от количества объявлений на странице не момент размещения новых.
maxAdCount число Обязательное поле, где указано максимальное количество объявлений, которое может быть размещено на странице с помощью компонента amp-auto-ads. Это суммарное значение, в котором учитываются объявления, добавленные как вручную, так и с помощью компонента amp-auto-ads. Например, если в этом поле задано значение 5, а на странице вручную размещены 3 объявления, то с помощью компонента amp-auto-ads можно добавить не больше 2 объявлений.

SubsequentMinSpacingObj

В этих полях указывается объект конфигурации subsequentMinSpacing. Данные в поле subsequentMinSpacing позволяют изменять интервалы между дополнительными объявлениями исходя из того, сколько рекламных материалов уже есть на странице. Приведем пример:

  • 2 объявления на странице;
  • значение в поле subsequentMinSpacing: [ {adCount: 3, spacing: "500px"}, {adCount: 5, spacing: "1000px"}, ]

На странице размещены 2 объявления, поэтому сопоставление не выполняется. Значение интервала по умолчанию соответствует варианту initialMinSpacing из объекта AdConstraints. Компонент amp-auto-ads будет пробовать размещать объявления, пока не будут израсходованы все места размещения, которые можно использовать, не нарушая условия adContraints. После того как с помощью компонента amp-auto-ads размещено первое объявление, количество объявлений на странице достигает трех. Поскольку в поле subsequentMinSpacing задано сопоставление по меньшей мере трех объявлений, в качестве минимального интервала устанавливается значение 500px. Оно применяется, пока на странице не будут размещены 5 объявлений, так как имеется правило для такого числа объявлений. При добавлении дополнительных объявлений для них будет необходимо соблюдать интервал, составляющий по меньшей мере 1000px.

Название поля Тип Описание
adCount число Обязательное поле. Минимальное количество объявления, уже размещенных на странице, при котором может применяться определенное правило (при условии отсутствия более подходящего правила). Дополнительные сведения доступны в описании выше.
spacing строка Обязательное поле, где указывается минимальный интервал между объявлениями, который действует, когда выполняется сопоставление с правилом в инструменте adCount. Значения представляют собой число и префикс, обозначающий единицы измерения, например вариант 10px означает 10 пикселей, а 0.5vp – половину высоты области просмотра. Отрицательные значения не допускаются. Поддерживаются следующие единицы:
  • px – пиксели;
  • vp – доля высоты области просмотра.

Валидация

С правилами для компонента amp-auto-ads можно ознакомиться в спецификации валидатора AMP.

Need more help?

You've read this document a dozen times but it doesn't really cover all of your questions? Maybe other people felt the same: reach out to them on Stack Overflow.

Go to Stack Overflow
Found a bug or missing a feature?

The AMP project strongly encourages your participation and contributions! We hope you'll become an ongoing participant in our open source community but we also welcome one-off contributions for the issues you're particularly passionate about.

Go to GitHub