FastComments.com

Додайте коментарі до вашого сайту Jekyll

Це офіційна бібліотека Jekyll для FastComments.

Вбудуйте віджети живого коментування, чату та оглядів у свій сайт Jekyll.

Репозиторій

Переглянути на GitHub

Агенти кодування ШІ Internal Link

skills.sh

Надайте вашому кодовому агенту контекст FastComments, який йому потрібен — віджети, конфігурація, Secure SSO, REST API та SDK:

npx skills add fastcomments/skills

Працює з Claude Code, Codex, Cursor, Copilot, Gemini та будь‑яким іншим агентом, який підтримує skills CLI.

Онлайн демонстрація Internal Link

Щоб побачити всі теги, що працюють локально проти публічного орендаря demo, клонуйте репозиторій і виконайте:

cd example
bundle install
bundle exec jekyll serve

Кожен віджет має власну сторінку в каталозі example/, яку ви можете безпосередньо скопіювати у свій сайт Jekyll.

Встановити Internal Link

Gem

Додайте gem до групи :jekyll_plugins у файлі Gemfile вашого сайту:

group :jekyll_plugins do
  gem "fastcomments-jekyll"
end

Потім:

bundle install

(Сумісно з Jekyll 3.7+ та 4.x.)

Теги Internal Link

ТегОпис
fastcommentsЖиві коментарі з відповідями, голосуванням, модеруванням та оновленнями в реальному часі
fastcomments_comment_countКількість коментарів для поточної сторінки
fastcomments_comment_count_bulkКількості коментарів для кількох сторінок на одній сторінці списку/індексу
fastcomments_live_chatПотоковий чат у реальному часі
fastcomments_collab_chatСпільне вбудоване коментування (текстові анотації)
fastcomments_image_chatКоментарі-анотації до зображень
fastcomments_recent_commentsОстанні коментарі по всьому сайту
fastcomments_recent_discussionsНещодавно активні теми обговорень
fastcomments_reviews_summaryПідсумок оглядів із зірковими рейтингами
fastcomments_top_pagesНайбільш обговорювані сторінки
fastcomments_user_activity_feedСтрічка активності користувача

Приклади

{% raw %}{# Кількість коментарів. Віджет відображає власну мітку, наприклад "0 коментарів" #}
{% fastcomments_comment_count %}

{# Чат у реальному часі #}
{% 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 user_id="demo:demo-user" %}

{# Масові підрахунки коментарів для індексу блогу #}
{% for post in site.posts %}
  <a href="\{{ post.url }}">\{{ post.title }}</a>
  <span class="fast-comments-count" data-fast-comments-url-id="\{{ post.url }}"></span>
{% endfor %}
{% fastcomments_comment_count_bulk %}{% endraw %}

Конфігурація Internal Link

Конфігурація надходить з трьох джерел. Пізніші джерела мають пріоритет:

  1. Глобальні значення за замовчуванням у _config.yml під ключем fastcomments:.
  2. Контекст сторінки, який автоматично визначається для віджетів, прив'язаних до сторінки (див. нижче).
  3. Атрибути тегу, вказані безпосередньо на тегу.

Тобто url_id на тегу перевизначає значення, отримане зі сторінки, яке, у свою чергу, перевизначає будь-яке глобальне значення за замовчуванням.

Синтаксис атрибутів

Атрибути — це пари key=value у форматі snake_case:

{% raw %}{% fastcomments url_id="my-stable-id" readonly=true count=20 %}{% endraw %}
  • Значення в лапках ("..." або '...') є буквальними рядками.
  • Без лапок true/false перетворюються на булеві значення, а числа — на числа.
  • Без лапок будь-що інше розглядається як змінна Liquid з контексту сторінки, наприклад url_id=page.slug. (Liquid не розгортає {% raw %}\{{ ... }}{% endraw %} всередині атрибутів тегу, тому використовуйте форму без лапок page.slug, а не "{% raw %}\{{ page.slug }}{% endraw %}".)

Ключі атрибутів і конфігурації у форматі snake_case автоматично перетворюються на ключі camelCase, які очікує FastComments (tenant_id → tenantId, url_id → urlId, page_title → pageTitle, has_dark_background → hasDarkBackground тощо). Будь-яка інша опція з конфігурації віджета передається напряму таким самим чином.

Значення, отримані зі сторінки

Для віджетів, прив'язаних до сторінки (fastcomments, fastcomments_comment_count, fastcomments_live_chat, fastcomments_collab_chat, fastcomments_image_chat) ці значення заповнюються автоматично з поточної сторінки, якщо ви не задали їх самостійно:

  • url_id ← page.url (стабільний ідентифікатор, незалежний від домену відвідувача)
  • url ← site.url + page.url (лише коли url задано у _config.yml)
  • page_title ← page.title

Віджети для всього сайту (нещодавні коментарі/обговорення, топ сторінок, огляд відгуків, стрічка активності користувачів, масовий підрахунок) не прив'язані до сторінки і не отримують ці значення автоматично.

Розміщення даних у ЄС

Клієнти з ЄС додають region: eu, або глобально:

fastcomments:
  tenant_id: your-tenant-id
  region: eu

або на рівні тегу: {% raw %}{% fastcomments region="eu" %}{% endraw %}. Тоді віджети завантажуються з ЄС CDN.

Статус обслуговування Internal Link

Ці компоненти є обгортками навколо наших основних компонентів VanillaJS. Ми можемо автоматично оновлювати ці компоненти (виправляти помилки, додавати функції) без публікації цієї бібліотеки, тож хоча вона може деякий час не бути опублікованою, це не означає, що FastComments не перебуває в активній розробці! Слідкуйте за оновленнями в нашому блозі. Несумісні зміни API або нові функції ніколи не будуть додані до базової core-бібліотеки без підвищення версії в цій бібліотеці.

Потрібна допомога?

Якщо ви зіткнулися з будь-якими проблемами або маєте питання щодо Jekyll Library, будь ласка:

Співпраця

Внески вітаються! Будь ласка, відвідайте репозиторій на GitHub для отримання інструкцій щодо внеску.