Обработка ошибок при загрузке виджета

Чтобы виджет всегда показывался и вы могли получать вознаграждение, рекомендуем использовать обработку ошибок при загрузке виджета. Если исходный виджет не загрузится, обработка позволит показать вместо него другой виджет.

  1. Когда нужна обработка ошибок
  2. Как обработать ошибки при загрузке виджета

Когда нужна обработка ошибок

В случаях, когда на Маркете для виджета не нашлись товары, советуем использовать автозамену виджетов. В других случаях будет полезно обработать ошибки, которые возникают при загрузке виджета. Например:

  • Вы включили в конструкторе опцию Точный поиск или задали в коде виджета параметр searchMatch: "exact", но в результатах поиска Маркета не нашлись нужные товары (в этом случае автозамена не нужна).

  • Для виджета Маркета «Подборка товаров» вы настроили поиск по ID товара на Маркете и выключили автозамену на рекомендательный виджет. При этом указанного товара нет в продаже.

  • Возникли технические проблемы (например, слишком большой поток трафика, который не выдерживают серверы).

При обработке ошибок виджет можно заменить на другой. Вы также можете вставить вместо виджета контент, который не является инструментом монетизации. Это может быть, например, надпись «В вашем регионе нет предложений» или баннер другой рекламной системы. Однако в этом случае вы не сможете получить вознаграждение от партнерской сети.

Как обработать ошибки при загрузке виджета

Чтобы обработать ошибки, используйте метод catch. Он вызывается, если в результате работы метода createWidget возникает ошибка. Тогда функция, заданная в качестве аргумента catch, обрабатывает возникшую ошибку и показывает другое содержимое вместо исходного виджета. Если метод createWidget работает успешно, метод catch не вызывается.

Пример замены одного виджета на другой в случае ошибки:

  1. Вставьте на страницу виджет Маркета «Один товар» в виде витрины.

  2. В поисковом запросе укажите идентификатор электрической варочной панели Hansa BHC64335040 на Маркете.

  3. Включите фильтр по товарам в продаже.

  4. Отключите автозамену на рекомендательный виджет.

  5. Над виджетом разместите заголовок «Предложения магазинов».

  6. Если товара нет в продаже, при загрузке виджета произойдет ошибка. Чтобы ее обработать:

    1. Напишите в заголовке «С этим товаром смотрят».

    2. Виджет замените на одноименный рекомендательный виджет Маркета.

    3. Для рекомендательного виджета укажите идентификатор варочной панели, который задавали ранее.

Скрипт виджета для элемента head:

<script async src="https://aflt.market.yandex.ru/widget/script/api" 
type="text/javascript"></script>
<script type="text/javascript">
  (function (w) {
    function start() {
      w.removeEventListener("YaMarketAffiliateLoad", start);
      w.YaMarketAffiliate.createWidget({
        containerId: "widgetContent",
        type: "offers",
        fallback: false,
        params: {
          clid: 2310490,
          themeId: 5,
          searchModelIds:[993683],
          searchInStock: true
        }
      })
      // Код обработки ошибки при загрузке виджета
      .catch(function(error) {
        document.getElementById("widgetHeader").innerHTML="С этим товаром смотрят";
        w.YaMarketAffiliate.createWidget({
          // Рекомендательный виджет вставляется в тот же контейнер,
          // что и первоначальный виджет «Один товар»
          containerId: "widgetContent",
          type: "models",
          params: {
            clid: 2310490,
            themeId: 1,
            searchType: "also_viewed",
            searchModelIds: [993683]
          }
        })
      });
    }
    w.YaMarketAffiliate
      ? start()
      : w.addEventListener("YaMarketAffiliateLoad", start);
  })(window);
</script>
Скопировано

Код заголовка и контейнера виджета для элемента body:

<h2 id="widgetHeader">Предложения магазинов</h2>
<div id="widgetContent"></div>
Скопировано