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-* (т. е. любой атрибут данных)
adConstraintsAdConstraintsObjНеобязательное поле, в котором приведены ограничения, действующие при размещении рекламы на странице. Если поле не заполнено, компонент amp-auto-ads попробует использовать ограничения по умолчанию, заданные в элементе [ad-network-config.js](0.1/ad-network-config.js).

PlacementObj

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

Название поляТипОписание
anchorAnchorObjОбязательное поле that provides information used to look up the element(s) on the page that the placement position is anchored to.
posRelativePositionEnumОбязательное поле, в котором указана позиция места размещения по отношению к его элементу привязки.
typePlacementTypeEnumОбязательное поле, в котором указан тип места размещения.
stylePlacementStyleObjНеобязательное поле со стилями, которые следует применить к объявлению, размещенному в этой области места размещения.
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.
subAnchorObjНеобязательное поле, где указывается повторяющийся объект AnchorObj, которые выбирает элементы в рамках любых элементов, заданных на этом уровне определения привязки.

PlacementStyleObj

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

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

RelativePositionEnum

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

НазваниеЗначениеОписание
BEFORE1Объявление должно быть размещено как элемент того же уровня непосредственно перед привязкой.
FIRST_CHILD2Объявление должно быть размещено как первый дочерний элемент привязки.
LAST_CHILD3Объявление должно быть размещено как последний дочерний элемент привязки.
AFTER4Объявление должно быть размещено как элемент того же уровня сразу после привязки.

PlacementTypeEnum

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

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

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