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

Чтобы упростить наш технологический стек, я задумался: не стоит ли нам размещать веб-сайт и форум отдельно, а вместо этого перенастроить Discourse так, чтобы он служил одновременно и нашим сайтом, и форумом.

Я видел, что Pavilion от @angus использует Discourse именно таким образом.

Однако потребности нашего сайта более сложные! Вот наш текущий сайт.

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

5 лайков

Ну, для вашего контента, не связанного с публикациями, можно использовать публикацию страниц.

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

Всё зависит от ваших требований.

4 лайка

Да! Я считаю, что это отличное начало.

Одно из наших требований — возможность встраивания таких элементов, как форма подписки на нашу рассылку и наша форма для пожертвований.

4 лайка

Я тоже не до конца понимаю, насколько мощными могут быть пользовательские стили при публикации страниц. Интересно, есть ли где-то примеры страниц с более выразительным оформлением, например, с блоками контента на разных фонах.

2 лайка

Вопрос сводится к трём вещам:

  • объём «опубликованного контента» (а) против контента сообщества (b)
  • доля посещений (а) против (b)
  • ваш бюджет

Миллионы просмотров страниц можно обеспечить на VPS за 5 долларов с WordPress при правильной настройке кэширования и CDN. Аналогичный экземпляр Discourse будет значительно, значительно дороже.

Если основной трафик и активность сосредоточены в Discourse и нет риска резких скачков трафика на статических страницах, то размещение всего внутри Discourse может иметь смысл. В остальных случаях полноценная CMS всё ещё остаётся королём.

11 лайков

Хм, вам, возможно, стоит разобраться с вашим https и сертификатом.

4 лайка

15 сообщений были перенесены в новую тему: Сертификат SSL не работает на основном сайте Discourse

Discourse — это бэкенд на Rails и он расширяем, так что, как я полагаю, вы можете делать всё, что умеет приложение на Rails. Но не ищете ли вы серебряную пулю?

1 лайк

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

Наш основной сайт — это статический HTML, сгенерированный с помощью https://jekyllrb.com/, а наш блог — это простой экземпляр WordPress.

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

7 лайков

Спасибо, Рафаэль.

Я очень хочу избавиться от WordPress. Сначала я думал, что остановлюсь на решении только на базе Discourse, но теперь склоняюсь к использованию Jekyll для статического контента и информации, которые сейчас находятся на www.literatecomputing.com, а все коммерческие части перенесу на Discourse вместе с новым плагином discourse-subscriptions. Я сейчас активно работаю над плагином для Discourse, который станет фронтендом для моих инструментов установки, обновления и другого обслуживания.

7 лайков

В качестве примера для размышления, вот два веб-сайта, полностью созданные на платформе Discourse (первый использует плагин Docuss, который сейчас устарел, а второй — плагин DiscPage):

http://www.docuss.org/
https://en.castafiore.org/

7 лайков

Спасибо за эту схему для принятия решения!

Честно говоря, я не совсем понимаю, что это значит, поэтому передаю слово нашим техническим специалистам. :smile:

@pfaffman, не могли бы вы рассказать об этом подробнее? Какие у вас есть проблемы? Я всё ещё рассматриваю CMS, и WordPress входит в число кандидатов.

Мне было бы очень интересно оставаться на связи по этому вопросу!

3 лайка

Да, это именно то, что мне было нужно. Спасибо!

5 лайков

Честно говоря, я изучал php ещё до того, как он получил такое название, и не следил за тем, каким современным языком он стал сегодня. К тому же мои потребности очень специфичны: мне нужно принимать платежи и автоматизировать создание droplet на Digital Ocean с последующей установкой Discourse.

Однако в последний раз, когда я брал $500–1000 за какую-то правку для Discourse или WordPress, будучи уверенным, что это будет быстрая и лёгкая работа, я пожалел. В самом последнем случае я потратил много времени и даже вернул клиенту деньги. Конечно, если бы они занимались простыми задачами, они бы, скорее всего, не нанимали меня. У меня также есть другой клиент с сайтом на WordPress, на котором тысячи устаревших и не подлежащих обновлению плагинов. Это полный хаос; в какой-то момент сайт был взломан, и теперь в нём полно ссылок на порнографию. Легко избежать такой ситуации.

С другой стороны, я уже год или около того использую Gravity Forms вместо WooCommerce и очень доволен тем, что с его помощью принимаю платежи как за разовые, так и за подписочные услуги (хотя интеграция с Discourse отсутствует). (Но мне так и не удалось заставить его запускать установку Discourse именно в тот момент, когда мне нужно!)

Если вы занимаетесь «стандартными» задачами и используете хорошо поддерживаемые плагины, вы, скорее всего, не пожалеете (но для обработки подписок на Discourse я бы рекомендовал использовать плагин discourse-subscriptions). Четверть всех сайтов в интернете работает на WordPress, и для этого есть веская причина.

7 лайков

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

Теперь, когда мы решили использовать два разных сайта, нам нужно найти способ сделать их согласованными. Хочу выразить особую благодарность @angus — его компания поддерживает сообщество PianoGroove, и у них самое красивое интеграционное решение, которое я когда-либо видел (а я видел их немало!)

Веб-сайт PianoGroove

Скриншот сайта сообщества PianoGroove

@angus, я искренне благодарен вам за потрясающую работу, которую вы выполняете для своих клиентов, и за вашу щедрость в том, что делаете созданные вами плагины и темы открытым исходным кодом. Нам ещё предстоит пройти долгий путь, чтобы наш веб-сайт и Discourse работали на нас, но снова и снова я убеждаюсь, что работа, которую выполняет Pavilion, — это именно то, что нужно нашей организации на основе открытого исходного кода, созданной снизу вверх и объединяющей сообщество.

16 лайков

Спасибо @debryc :slight_smile:

Хочу добавить, что нашу работу поддерживают не только я, а все члены Pavilion. Наш кооператив — это командная работа.

Также хочу отметить, что мы только что сделали открытым исходный код нашего плагина Landing Pages, который позволяет создавать полностью независимые страницы, работающие на основе экземпляра Discourse. Это ещё один способ решить задачу, обсуждаемую в этой теме. Этот плагин отделяет фронтенд страниц от клиента Discourse (то есть не загружает приложение Discourse), но при этом обеспечивает лёгкую интеграцию через общий бэкенд (то есть сервер Discourse).

Мы уже начали использовать этот плагин с некоторыми нашими клиентами для решения задач, аналогичных обсуждаемым здесь. Также мы рассматриваем возможность разработки простых в использовании обобщённых открытых пакетов страниц на основе типовых сценариев использования для CMS, связанной с сообществом, которые можно будет применять вместе с этим плагином.

Вот текущий список сценариев использования, которые мы планируем реализовать:

  • Блог (сейчас я работаю именно над этим). Создание контента в Discourse и его отображение на полностью независимой странице блога, которую можно стилизовать как настоящий блог (например, как в WordPress или Ghost).

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

  • Страницы «Команда» (как наши). Страница для вашей команды, использующая данные о членстве (и данные пользователей) из группы пользователей Discourse.

  • Страницы мероприятий для списка и отображения данных о мероприятиях из вашего экземпляра Discourse на стилизованной посадочной странице мероприятия. Под «данными о мероприятиях» здесь понимается комбинация данных из плагина Discourse Calendar, категорий, тем, пользователей (например, RSVP) и локаций (с использованием нашего плагина Locations).

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

  • Магазин. Хотя могут существовать страницы, интегрирующие элементы магазина, полноценные онлайн-магазины требуют широкого набора функций, которые всегда потребуют специализированного решения, такого как WooCommerce или Shopify.

  • База знаний. Эта потребность уже хорошо удовлетворяется такими решениями, как плагин Knowledge Explorer. Посадочная страница может отображать подмножество базы знаний, но полное воспроизведение функциональности плагина Knowledge Explorer (или просто списков тем Discourse) было бы контрпродуктивным.

Мы также заинтересованы в сотрудничестве с кем угодно, кто хочет разрабатывать такие страницы: будь то в рамках собственного проекта разработки (например, для улучшения своих навыков), для своего сообщества или даже для продажи. В среднесрочной перспективе (4–6 месяцев) мы планируем выпустить собственные бесплатные открытые пакеты для каждого сценария использования.

Плагин Landing Pages и собственные страницы Pavilion всегда будут на 100% открытыми и бесплатными. Однако это обобщаемая структура, которую любой, кто владеет HTML и CSS, может использовать для разработки «пакета страниц», если захочет. В ближайшее время я добавлю «руководство для разработчиков» в документацию по знаниям для этого плагина.

Плагин Landing Pages уже поддерживает размещение страниц в приватных репозиториях так же, как это делает система тем Discourse (на самом деле, он основан на системе тем Discourse и расширяет её). Это означает, что уже сейчас можно продавать доступ к пакету посадочных страниц, если захотите. Это может сделать разработку таких пакетов привлекательной для других разработчиков.

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

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

19 лайков

Да! И спасибо!

Страницы, допускающие выполнение скриптов

Я работаю с сообществом на базе Discourse уже 2,5 месяца. Столкнулся с необходимостью использования некоторых инструментов, требующих подключения скриптов.

Пример с календарём: существуют инструменты для календарей или событий, которые можно встроить на страницу. Однако необходим скрипт в теге , и он должен быть активирован для этой страницы.

Более общий случай SaaS: часто iframe — не идеальный вариант. Я не хочу, чтобы мои участники переходили на другой сайт, например, для подписки, но мой сервис ConvertBox требует скрипт в и тег

.

Планируя расширить возможности для моего сообщества, я вижу одну очевидную вещь: пока я не «решу» проблему более простого добавления встраиваемых элементов на основе скриптов, я буду ограничен тем, что поддерживает OneBox, или вынужден использовать iframe. Я даже мог бы мечтать отказаться от своего сайта на WordPress, если бы функция «Страницы» получила расширенные возможности, позволяющие контролировать подключение и активацию скриптов.

Я не могу написать код сам, но готов финансово поддержать разработку такого функционала, чтобы сообщество могло извлечь из этого пользу. Спасибо!

3 лайка

Встраивание действительно возможно как в интерфейсе 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 лайков

Спасибо, это полезно как отправная точка.

Я не смог найти, как это сделать в теме, например, вставив тег , который загружался бы с каждой изменяемой темой или над списком тем. Нужно ли мне кастомизировать тему и разместить его после заголовка?

2 лайка