Встройте Discourse как полную систему комментариев на вашем сайте

Система встраивания в Discourse позволяет отображать комментарии к темам на внешних сайтах через iframe, но до сих пор этот функционал был доступен только для чтения. Посетителям приходилось переходить на ваш сайт Discourse, чтобы ответить, поставить лайк или взаимодействовать с обсуждением.

Мы добавили полный режим приложения для встраивания, который загружает полное приложение Discourse внутри iframe. Ваши посетители могут отвечать, ставить лайки, цитировать и взаимодействовать с темами, не покидая ваш блог или веб-сайт.

Как включить

Перейдите в раздел Администрирование > Дополнительно > Встраивание, и вы увидите новый переключатель в верхней части страницы для включения полного режима приложения.

При включении:

  • Фрагмент конфигурации встраивания автоматически включает параметры fullApp: true и embedHeight: '800px'
  • Настройка сайта для включения этого режима автоматически активируется

Эта настройка также доступна на вкладке Встраивание > Настройки под именем embed_full_app.

Что изменится для посетителей

При включенном полном режиме приложения встроенный iframe загружает полный интерфейс Discourse вместо статического списка ответов. Посетители на вашем внешнем сайте смогут:

  • Отвечать на тему напрямую
  • Ставить лайки и цитировать сообщения
  • Перемещаться внутри темы так же, как на вашем форуме

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

Демонстрация

Вы можете увидеть это в действии на нашем блоге в таких постах, как Понимание уровней доверия в Discourse, Пришло время поговорить о тегах или Представляем Discourse AI.

40 лайков

Это потрясающе и меняет правила игры. Отличная работа, команда. :discourse: :clap:

3 лайка

вау, это действительно приятная эволюция!! :+1:

2 лайка

Это потрясающе! Хотя возможность редактировать прямо на исходной странице сама по себе приятна, с моей точки зрения, ещё большим улучшением является то, что математика отображается во встроенной версии! С нетерпением жду возможности использовать это на своём сайте.

Чтобы попробовать, я перешёл к одной из демонстрационных тем, на которые вы дали ссылку, и заметил несколько небольших проблем при ответе там:

  1. Переключатель редактора Markdown/Rich не отображался в панели инструментов редактора,
  2. После публикации я попытался отредактировать пост на сайте и получил предупреждение о том, что пост редактируется в другом окне, хотя у меня не было открыто другого окна для редактирования, и
  3. Я не смог удалить свой ответ. Очевидно, его удалило сообщество.

В целом, однако, это огромный шаг — спасибо!

3 лайка

Мы убрали его, а также множество других элементов интерфейса, чтобы упростить работу с встроенным редактором. Если вам это необходимо, вы можете легко вернуть эту функцию на свой сайт с помощью небольшого компонента темы.

Как и в случае с любыми новыми функциями, мы стремились найти оптимальный баланс и создали решение, которое подойдёт большинству блогов. При этом Discourse, как вы и ожидаете, остаётся полностью настраиваемым.

Интересно, будем следить за этой проблемой.

7 лайков

Можно ли использовать это для встраивания в тот же Discourse?

То есть создать тему как блог, а сопутствующие комментарии — как отдельную тему?

Если у посетителя нет аккаунта, будет ли предложено его создать?

В сочетании с новыми ветвящимися ответами это было бы весьма полезно.

Возможно? Это не является нашей текущей задачей, поэтому я не тестировал это.

Это выходит за рамки данной функции.

Да, откроется новая вкладка для входа.

Да! Мы тоже с нетерпением ждем этого!

2 лайка

Вот бы так же можно было и с чатами :smiley:

Это потрясающе, и это появилось именно тогда, когда я собирался снова взглянуть на эту функцию :smiley:

Одна вещь, которую стоит рассмотреть, — это сделать полосу прокрутки более заметной. Например, здесь: Understanding Discourse Trust Levels я вижу:

Кажется, что здесь три комментария. Когда я навожу курсор, я вижу крошечную серебристую полоску полосы прокрутки по умолчанию в правом верхнем углу (Firefox, Linux).

Так что, если я не знаю, что такое Discourse, я предполагаю, что сейчас есть три ответа, и что кнопка ответа рядом с именем Джей — это обычная кнопка ответа на тему. К сожалению, в результате Джей будет получать уведомления о новом ответе каждый раз, когда кто-то совершает эту ошибку.

Интересно, есть ли:
a) способ всегда показывать кнопку «Ответить на тему»?
b) способ сделать прокрутку более заметной, сохраняя при этом элегантность и ненавязчивость

7 лайков

Это отличные предложения. В более общем смысле, возможно, элементы интерфейса стали слишком размытыми? Когда я отвечал на вчерашний пост в блоге об уровнях доверия, мне пришлось долго прокручивать страницу, прежде чем я смог просмотреть свой ответ, так как элемент прокрутки временной шкалы отсутствует.

4 лайка

Как обрабатываются ответы и лайки с точки зрения отчетности? Выделенная категория?

Редакция: А, теперь я думаю, что понимаю: встроенная страница публикуется в категории, как здесь.

2 лайка

Это здорово, большое спасибо.

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

1 лайк

По какой-то причине Super Fight Bot возвращает вызов и ещё кое-что, что касается самых старых ответов:

Но мне очень понравился этот эмбед.

К сожалению, как видно на одном из ваших примеров, это всё ещё требует от пользователя прокрутки потенциально ошеломляющего количества комментариев внутри iframe (что имеет множество недостатков), прежде чем он дойдёт до конца и сможет написать комментарий первого уровня. Есть ли способ добавить комментарий, который не является ответом, прямо сверху?

3 лайка

Это круто!

Несколько вопросов:

  • Можно ли добавить домены в белый список? (Чтобы встраивание было возможно только с наших доменов)
  • Будет ли загружаться полное приложение Discourse на каждой странице, где есть встраивание, или оно останется в памяти после первой загрузки? Например, если у меня есть mydomain.com/page1, /page2, /page3 и т.д., придется ли загружать его заново для всех страниц?