
Язык 🇺🇦 Русский (Украина)
Документация
Начало работы
Конфигурация
Справочник API
Добавьте комментарии на свой сайт Hugo
Это официальная библиотека Hugo для FastComments.
Встраивайте виджеты живых комментариев, чата и отзывов на ваш сайт Hugo.
Репозиторий
Онлайн-демо 
Попробуйте каждый виджет вживую на https://fastcomments.com/commenting-system-for-hugo.
Онлайн-презентация 
Чтобы просмотреть все шорткоды и частичные шаблоны темы, работающие локально с публичным тенантом demo, клонируйте репозиторий и запустите включённый exampleSite:
git clone https://github.com/FastComments/fastcomments-hugo.git
cd fastcomments-hugo/exampleSite
hugo server
У каждого виджета есть собственная страница в каталоге exampleSite/content/, которую вы можете скопировать прямо в свой сайт.
Установка 
Выберите один из двух стандартных способов добавить компонент темы Hugo.
Вариант A: Модуль Hugo (рекомендуется)
Из корня вашего сайта:
hugo mod init github.com/you/your-site # только если ваш сайт ещё не является модулем
hugo mod get github.com/FastComments/fastcomments-hugo
Затем добавьте импорт в ваш hugo.toml:
[module]
[[module.imports]]
path = "github.com/FastComments/fastcomments-hugo"
Вариант B: Компонент темы (Git-подмодуль)
git submodule add https://github.com/FastComments/fastcomments-hugo.git themes/fastcomments-hugo
Затем укажите его в вашем hugo.toml. Перечислите его вместе с вашей темой; при совпадении побеждает запись, указанная позже, поэтому помещайте вашу тему первой:
theme = ["your-theme", "fastcomments-hugo"]
Быстрый старт 
Установите ваш tenant ID один раз в hugo.toml:
[params.fastcomments]
tenantId = "demo" # замените "demo" на ваш FastComments tenant ID
Затем либо подключите виджет комментариев к вашей теме (см. Интеграция темы), либо вставьте шорткод в Markdown любой страницы:
\{{< fastcomments >}}
Шорткоды 
| Шорткод | Описание |
|---|---|
fastcomments | Дискуссионные комментарии с ответами, голосованием и упоминаниями (@mentions) |
fastcomments-comment-count | Количество комментариев на одной странице |
fastcomments-comment-count-bulk | Количество комментариев для многих страниц в одном запросе (см. Массовые подсчёты комментариев) |
fastcomments-live-chat | Виджет живого чата |
fastcomments-collab-chat | Коллаборативные встроенные комментарии (требует target) |
fastcomments-image-chat | Комментарии с аннотациями изображений (требует target) |
fastcomments-recent-comments | Последние комментарии по всему сайту |
fastcomments-recent-discussions | Недавно активные темы обсуждений |
fastcomments-reviews-summary | Сводка отзывов со звёздными оценками |
fastcomments-top-pages | Наиболее обсуждаемые страницы |
fastcomments-user-activity-feed | Лента активности пользователя (требует userId) |
Примеры
Подсчёт комментариев встроено в текст:
This page has \{{< fastcomments-comment-count >}} comments.
Онлайн-чат:
\{{< fastcomments-live-chat >}}
Коллаборативный чат, нацеливание на элемент контента с помощью CSS-селектора:
<article id="post-body">
<p>Highlight me to leave a comment.</p>
</article>
\{{< fastcomments-collab-chat target="#post-body" >}}
Чат для изображений, нацеливание на элемент изображения с помощью CSS-селектора:
<img id="hero" src="/hero.jpg" alt="Hero image" />
\{{< fastcomments-image-chat target="#hero" >}}
Сводка отзывов:
\{{< fastcomments-reviews-summary >}}
Лента активности пользователя:
\{{< fastcomments-user-activity-feed userId="demo:demo-user" >}}
Интеграция с темой 
Чтобы прикрепить комментарии к каждому посту так же, как это делает встроенная поддержка Disqus в Hugo, добавьте одну строку в single-шаблон вашей темы (layouts/_default/single.html):
\{{ partial "fastcomments/comments.html" . }}
Этот partial отображается только тогда, когда настроен tenantId. Отключите комментарии на отдельной странице с помощью front matter:
+++
title = "A page with no comments"
comments = false
+++
Массовый подсчет комментариев 
Чтобы показать количество комментариев рядом с несколькими страницами одновременно (например, индекс блога или список раздела), используйте виджет массового подсчёта (bulk count). Он получает все значения на странице одним запросом. Состоит из двух частей: маркер рядом с каждым элементом и один вызов инициализации после списка.
В шаблоне списка (layouts/_default/list.html):
<ul>
\{{ range .Pages }}
<li>
<a href="\{{ .RelPermalink }}">\{{ .Title }}</a>
\{{ partial "fastcomments/count-marker.html" . }}
</li>
\{{ end }}
</ul>
\{{ partial "fastcomments/bulk-count.html" (dict "page" .) }}
count-marker.html рендерит <span class="fast-comments-count" data-fast-comments-url-id="..."></span>, используя тот же идентификатор, который виджет комментариев использует для этой страницы (ее urlId, или её permalink, когда urlId не задан), так что счётчики совпадают с реальными тредами. bulk-count.html отправляет единый запрос, который их заполняет.
Если вы создаёте маркеры самостоятельно (например, в Markdown страницы), используйте шорткод, чтобы вместо этого выполнить вызов инициализации:
<span class="fast-comments-count" data-fast-comments-url-id="article-1"></span>
<span class="fast-comments-count" data-fast-comments-url-id="article-2"></span>
\{{< fastcomments-comment-count-bulk >}}
Конфигурация 
Все параметры виджета FastComments задаются в [params.fastcomments] в hugo.toml и могут быть переопределены для каждой страницы во front matter под [fastcomments]. Приоритет, от низшего к высшему: параметры сайта, front matter страницы, параметры шорткода.
# hugo.toml
[params.fastcomments]
tenantId = "your-tenant-id"
hasDarkBackground = true
voteStyle = 1
enableSearch = true# a page's front matter
+++
title = "Article"
[fastcomments]
urlId = "article-42"
collapseReplies = true
+++
Если не указаны ни url, ни urlId, то url по умолчанию принимает значение permalink страницы, чтобы потоки комментариев оставались привязанными к стабильному URL.
Размещение данных в ЕС
Клиенты из ЕС указывают region = "eu", чтобы маршрут виджета вел на cdn-eu.fastcomments.com:
[params.fastcomments]
tenantId = "your-tenant-id"
region = "eu"
Примечание о регистре ключей
Hugo приводит к нижнему регистру каждый ключ в hugo.toml и front matter, но виджеты FastComments требуют ключей в camelCase (tenantId, hasDarkBackground). Этот компонент автоматически восстанавливает правильный регистр для каждой известной опции верхнего уровня, поэтому записывайте опции в их обычной форме camelCase. Ключи, вложенные внутри значения объекта (например, ключи карты translations или поля pageReactConfig), не восстанавливаются. Настраивайте их через UI кастомизации в панели управления FastComments.
Справочник по конфигурации виджета 
Полный список опций виджетов см. в документации по настройке FastComments. Два виджета принимают обязательный параметр, у которого нет значения по умолчанию:
fastcomments-collab-chatиfastcomments-image-chatтребуютtarget, CSS‑селектор элемента, к которому привязываются.fastcomments-user-activity-feedтребуетuserId.
Статус обслуживания 
Эти компоненты — тонкие оболочки вокруг наших основных виджетов VanillaJS. Мы можем обновлять эти виджеты (исправлять ошибки, добавлять функции) без публикации этого репозитория, поэтому спокойная история релизов не означает, что FastComments неактивен. Следите за обновлениями в нашем блоге. Изменения, ломающие совместимость в базовых виджетах, публикуются здесь вместе с повышением версии.
Нужна помощь?
Если у вас возникли проблемы или есть вопросы по Hugo Library, пожалуйста:
Участие
Мы приветствуем вклад! Пожалуйста, посетите репозиторий на GitHub для получения руководства по внесению вклада.