Пользовательская платформа

Привет, сообщество Discourse!

Я планирую создать платформу на основе самостоятельно размещённого экземпляра Discourse, которая будет включать различные пользовательские функции, такие как поисковая система, документальные ресурсы, вики и многое другое. Эти функции разработаны с использованием HTML, CSS и JavaScript, в основном в виде статических страниц.

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

Может ли кто-нибудь подсказать, возможен ли такой подход в Discourse, или есть ли конкретные плагины, лучшие практики или конфигурации, на которые стоит обратить внимание? Любые рекомендации по встраиванию и отображению пользовательских HTML/JS страниц так, чтобы они не выглядели как сообщения, будут очень кстати!

Заранее благодарю за любые советы!

Я не знаю (хотя вы можете встроить), но из кошачьего любопытства: что вы имеете в виду под статической страницей динамического приложения?

Все функции, которые я планирую реализовать, включая упомянутые выше, представляют собой статический код, то есть они создаются с помощью HTML, CSS и чистого JavaScript. Интересно, возможно ли создать статическую страницу и добавить пользовательский код для указанных функций в мой собственный экземпляр Discourse.

Извините, что продолжаю эту тему, но Discourse не статичен. Он динамичен. То же самое относится к большинству решений на JavaScript или PHP.

Таким образом, вопрос теперь в терминологии? Вы просто хотите встроить форум Discourse как таковой на веб-страницу вместе со всем остальным? Вы можете отображать темы, но, насколько я знаю, вы упустите почти все остальные функции Discourse.

@JstTan Возможно, вам стоит посмотреть:

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

Нет, я хочу добавить веб-страницу в свой экземпляр форума Discourse. На самом деле, всё наоборот.

Это довольно круто, но я думаю о другом — например, о добавлении и создании статической страницы внутри Discourse. На такой странице также потребуется возможность добавлять собственный HTML, CSS и JavaScript.

Подобный вопрос недавно задавался.
Вот один из ответов:

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

Привет, сообщество Discourse!

Я планирую создать платформу на основе самостоятельно размещённого экземпляра Discourse, которая будет включать различные пользовательские функции, такие как поисковая система, документационные ресурсы, вики и многое другое. Эти функции разработаны с использованием HTML, CSS и JavaScript, в основном как статические страницы.

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

Может ли кто-то подсказать, возможен ли такой подход в рамках Discourse, или есть ли конкретные плагины, лучшие практики или конфигурации, на которые мне стоит обратить внимание? Любые рекомендации по встраиванию и отображению пользовательских HTML/JS-страниц без того, чтобы они выглядели как посты, будут очень полезны!

Заранее благодарю за любые советы!

Подойдет ли опубликованная страница для достижения моей цели?

Звучит так, будто всё это уже есть в Discourse.

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

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

Не совсем понятно, какая у вас цель.

Откуда JavaScript?

Именно так это и работает, если вы используете расширение «Домашние страницы» плагина «Landing Pages».

Смотрите:

Привет,

Извините за поздний ответ. Перечисленные мной функции — это лишь несколько примеров из примерно 20 функций, которые я хочу реализовать. Все они написаны на чистом JavaScript, HTML и CSS без необходимости использования серверного рендеринга.

Я предпочитаю интегрировать их напрямую в Discourse: создать страницу внутри Discourse, отредактировать её, добавив весь пользовательский код, и развернуть вместе с Discourse. Для меня это будет проще в поддержке, так как всё находится в одном месте, а мои пользователи смогут получать доступ к контенту прямо через форум Discourse, не покидая его. Возможно ли это сделать через Discourse? Если да, то как?

Я хочу добавить пользовательские функции в форум Discourse, который буду хостить. Эти функции созданы непосредственно с помощью HTML, CSS и чистого JavaScript. Меня интересует, можно ли сделать это напрямую, без необходимости создания плагинов.

Я хочу внедрить код функций (JavaScript, HTML, CSS) непосредственно в исходный код одной страницы, при этом у каждой функции будет своя страница.

Я думаю, что плагин Landing Pages, на который есть ссылка выше, — это наиболее близкий к тому, что вы описываете, метод, уже встроенный в Discourse.

Другой подход, который я использую для того, что (как мне кажется), вы описываете здесь, — это использование Ghost Blog/CMS для создания и хостинга отдельных страниц или постов, где я хочу отображать пользовательские страницы. Ghost идеально подходит для этой цели благодаря своей гибкости в отношении включения и вставки всех трёх типов кода (JS, CSS и HTML) на уровне отдельной страницы, а также в зависимости от секции/тега или на уровне всего сайта через «вставки кода в заголовок», «вставки кода в подвал» и встроенные коды/скрипты прямо в редакторе страницы/поста.

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

Я считаю, что такое сочетание/парное использование Discourse и Ghost может предоставить идеальную платформу для данного конкретного случая использования, где требуется гибкость «кодинга на лету» и произвольные инъекции JavaScript.

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

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

Дополнительным преимуществом является то, что обе платформы, будучи с открытым исходным кодом и основанными на GitHub, имеют столь же надёжные, активные, дружелюбные и поддерживающие сообщества, где вы можете участвовать, получать поддержку и быстро и бесконечно учиться.