FastComments.com

Добавление комментариев на ваш сайт Jekyll


Это официальная библиотека Jekyll для FastComments.

Встраивайте виджеты живых комментариев, чата и отзывов на ваш сайт Jekyll.

Репозиторий

Просмотреть на GitHub


Демонстрационный показ 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Лента активности пользователя

Examples

{% 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 %}

{# Лента активности пользователя. Требуется user id #}
{% 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_idtenantId, url_idurlId, page_titlepageTitle, has_dark_backgroundhasDarkBackground, и т.д.). Любая другая опция из настроек виджета передаётся напрямую таким же образом.

Значения, получаемые со страницы

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

  • url_idpage.url (стабильный идентификатор, независимый от домена посетителя)
  • urlsite.url + page.url (только когда url установлен в _config.yml)
  • page_titlepage.title

Виджеты уровня сайта (recent comments/discussions, top pages, reviews summary, user activity feed, bulk count) не привязаны к странице и не получают эти значения.

Локация хранения данных в ЕС

Клиенты из ЕС добавляют region: eu, либо глобально:

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

или для каждого тега: {% raw %}{% fastcomments region="eu" %}{% endraw %}. Виджеты тогда загружаются с CDN ЕС.

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

Эти компоненты — обёртки вокруг наших базовых компонентов VanillaJS. Мы можем автоматически обновлять эти компоненты (исправлять ошибки, добавлять возможности) без публикации этой библиотеки, поэтому то, что она какое‑то время может не выходить в релиз, не означает, что над FastComments не ведётся активная разработка! За обновлениями заглядывайте в наш блог. Изменения API, нарушающие обратную совместимость, или новые функции никогда не будут добавлены в основную (core) библиотеку без повышения версии этой библиотеки.


Нужна помощь?

Если у вас возникнут какие-либо проблемы или вопросы по библиотеке Jekyll, пожалуйста:

Участие

Вклады приветствуются! Пожалуйста, посетите репозиторий на GitHub для получения руководства по внесению вклада.