Использует ли кто-то здесь свой экземпляр Discourse в качестве всего сайта?

Встраивание действительно возможно как в интерфейсе Discourse (например, над списком тем) с использованием темы, так и с помощью плагина Landing Pages. Для последнего я подготовил пример, используя эту небольшую версию игры Dinosaur. Вы можете сыграть здесь: Pavilion (только для настольных компьютеров).

2021-03-04 18.54.09

Для этого не потребовалось никакого программирования. Всё, что я сделал, — загрузил эти ресурсы на наш CDN (перетащил папку в «пространство» DigitalOcean), создал страницу с путём «dinosaur» и скопировал/вставил этот HTML (оба действия через административный интерфейс).

HTML
<div class="landing page dinosaur">
  <div class="container">
    <h1>Игра с динозавром!</h1>
    <canvas id="game" height="200" width="800"></canvas>
    <p class="controls">нажмите пробел, чтобы начать</p>
    
    <script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/helpers.js"></script>
    <script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/objects/game-object.js"></script>
    <script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/objects/cactus.js"></script>
    <script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/objects/dinosaur.js"></script>
    <script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/objects/background.js"></script>
    <script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/objects/score.js"></script>
    <script src="https://pavilion-assets.nyc3.digitaloceanspaces.com/dinosaur/js/game.js"></script>
    <script>
    	new Game({
    		el: document.getElementById("game")
    	});
    	window.onkeydown = function(e) {
            return e.keyCode !== 32;
        };
    </script>
  </div>
</div>

Плагин Landing Pages реализует настройки CSP и CORS Discourse, которые я уже настроил для обработки скриптов с нашего CDN (через соответствующие настройки сайта).

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

8 лайков