Встраивание целого форума Discourse на другой сайт в iframe

Об этом уже обсуждалось в двух других темах, но они закрыты:

Некоторые считают, что вместо этого следует поработать над ребрендингом Discourse, чтобы он соответствовал дизайну существующего сайта.

По опыту скажу: это очень сложно реализовать. Разметка и CSS для неё крайне сложны в работе и негибки. Например, деревья DOM в заголовке Discourse и в основном контенте сильно различаются. Вставка содержимого заголовка (встроенный редактор Discourse) приводит к тому, что вставленный контент оказывается далеко от реального заголовка Discourse.

Поверьте, просто «заставить ваш Discourse следовать теме вашего основного сайта» — задача не из лёгких.

Что я хотел бы попробовать дальше, так это встроить Discourse в <iframe>. Посмотрим, как это сработает.


Предложение по улучшению! Было бы здорово, если бы Discourse можно было использовать как набор пользовательских элементов. Например:

<!-- ... какая-то пользовательская разметка ... -->

<discourse-actions backend="http://url.to/actual/discourse/instance">

<!-- ... какая-то пользовательская разметка ... -->

<discourse-main backend="http://url.to/actual/discourse/instance">

Это позволило бы встраивать части Discourse в любом месте сайта, а элементы подключались бы к указанному бэкенду.

При прямом переходе по адресу http://url.to/actual/discourse/instance Discourse открывался бы как обычно — в виде отдельного веб-приложения.

По сути, это сделало бы части Discourse используемыми в рамках общих HTML-структур (как частичные шаблоны Handlebars, но с перспективой на будущее и на основе веб-стандартов).

Только представьте, что ещё стало бы возможным с такой функцией (подумайте, например, о том, когда пользовательские элементы имеют разные значения атрибутов backend)…

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

Возможно, будет более целесообразно подробно описать проблемы, с которыми вы сталкиваетесь при создании тем для Discourse, чтобы мы могли помочь и/или улучшить этот процесс. За последние пару лет мы значительно улучшили работу с темами, и это то, что мы определённо хотим поддерживать и совершенствовать по мере возможности.

Существуют элементы, которые определённо сложнее настраивать, чем другие; заголовок — один из них. Это связано с тем, что для повышения производительности была внедрена виртуальная DOM (A tour of how the Widget (Virtual DOM) code in Discourse works).

Поэтому, если вы хотите добавить контент в заголовок, вам необходимо использовать эту систему, а не добавлять контент до/после него через административный интерфейс (некоторая информация об этом представлена в разделе расширенного API плагинов по адресу Developing Discourse Themes & Theme Components). Также есть хорошие примеры манипулирования содержимым заголовка в существующих компонентах тем Customization > Theme component, например, Custom Header Links.

Это было бы здорово иметь, и я вижу, что это всё ещё не работает: когда я пытаюсь, я просто получаю