0103 — Yandex.Metrika и Antora
Рассмотрим, как настроить интеграцию Antora и Yandex.Metrika. Чтобы было интереснее, добавим дополнительное условие: код метрики должен быть добавлен на страницу только при сборке публичной документации. Собирать метрики с тестовых стендов не имеет смысла.
-
Перейдите в корневой каталог проекта, содержащего плейбуки.
Будем считать, что у вас есть как минимум 2 плейбука:
-
antora-playbook-public.yaml— публичная документация; -
antora-playbook-private.yaml— внутренняя документация.
-
-
В плейбуке
antora-playbook-public.yamlв блокеsiteсоздайте блокkeys, а в нём создайте ключyandex-metrikaсо значением ID вашего счётчика:site: title: Публичная документация url: / start_page: docs:ROOT:index.adoc keys: yandex-metrika: 000000000 -
Создайте каталог
supplemental-ui/, а внутри него подкаталогpartials/:mkdir -p supplemental-ui/partials/ -
В каталоге
supplemental-ui/partials/создайте файлfooter-scripts.hbsс таким содержимым:<script id="site-script" src="{{{uiRootPath}}}/js/site.js" data-ui-root-path="{{{uiRootPath}}}"></script> <script async src="{{{uiRootPath}}}/js/vendor/highlight.js"></script> {{#if env.SITE_SEARCH_PROVIDER}} {{> search-scripts}} {{/if}} {{#if site.keys.yandexMetrika}} <!-- Yandex.Metrika counter --> <script type="text/javascript"> (function(m,e,t,r,i,k,a){ m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a) })(window, document,'script','https://mc.yandex.ru/metrika/tag.js', 'ym'); ym({{{site.keys.yandexMetrika}}}, 'init', {webvisor:true, clickmap:true, referrer: document.referrer, url: location.href, accurateTrackBounce:true, trackLinks:true}); </script> <noscript><div><img src="https://mc.yandex.ru/watch/100874372" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> {{/if}}Первая часть этого шаблона взята из дефолтного UI Antora. Вторая часть — интереснее. Это код, который генерирует Yandex.Metrika, обёрнутый в проверку существования ключа
yandexMetrika:{{#if site.keys.yandexMetrika}} ... {{/if}}Обратите внимание на то, что Antora приводит названия ключей из плейбука к camelCase. Это значит, что она будет искать не
site.keys.yandex-metrika, аsite.keys.yandexMetrika. В плейбуке вы можете использовать в качестве разделителя дефис и подчёркивание. -
Добавьте в плейбуки блок настроек, заставляющий Antora использовать содержимое из созданного каталога:
ui: bundle: url: /antora/ui-bundle.zip snapshot: true supplemental_files: /antora/supplemental-uiЯ собираю документацию внутри контейнера, поэтому путь к
supplemental-uiабсолютный. -
Соберите документацию и убедитесь, что при сборке с плейбуком
antora-playbook-public.yamlна сайт добавляется счётчик, а при сборке с плейбукомantora-playbook-private.yamlэтого не происходит.