Переход с связки WordPress + Discourse на отдельный сайт Discourse?

Привет!

Прежде чем читать дальше, вы можете ознакомиться с этим постом: Moved from PluXml and phpBB to Wordpress and Discourse, my all-new experience 🎉, но это не обязательно — я всё равно сделаю краткий обзор.

Что у нас есть сейчас.

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

  • Сайт WordPress в первую очередь ориентирован на новости и статические информационные страницы.

  • Форум Discourse — это… форум. Место, где встречается сообщество, общается и иногда организует различные мероприятия.


Вопрос

Я задался вопросом: «В чём на самом деле цель веб-сайта? Его добавленная ценность невелика, и многие функции сайта можно реализовать в Discourse. Так зачем же возиться с двумя платформами?»

Обратите внимание, что я только в начале размышлений. Но я начинаю думать, что в нашем случае может быть хорошей идеей отказаться от WordPress.

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

Что из этого нельзя сделать в Discourse? Почти ничего.

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

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

Технические детали.

  • Кастомный заголовок Discourse останется как есть.

  • Для новостей можно использовать News Plugin 📰. Но не как главную страницу, потому что содержимое форума станет доступно только после нажатия на кнопку «форум» (как на Elektronauts), а мы хотим также подчеркнуть активность онлайн-сообщества. Я ещё не пробовал плагин новостей.

  • Однако мы хотели бы видеть некоторые новости на главной странице форума. Помню, что видел плагин или компонент темы, который показывал некоторые посты в баннере над темами, но могу ошибаться. Есть ли готовое решение? Лучший вариант для нас, думаю, — отображать три последние новости с миниатюрой и кратким описанием в верхней части главной страницы, под заголовком, с возможностью скрыть этот баннер, если мы уже прочитали эти темы.

  • Статические страницы сайта можно преобразовать либо в темы, либо в опубликованные страницы.

  • Вики можно перенести на встроенную функцию вики в Discourse.

  • Рассылка нам не нужна (её заменит дайджест Discourse), и мой соадмин не видит реального смысла во встроенной ленте постов из Facebook спортивной федерации, а также в некоторых других вещах.

  • У нас есть категория событий (кастомное решение), которая сейчас немного пуста, но полезна, и мы хотели бы сохранить категорию событий с аналогичными специфическими функциями.

Раньше я изучал и пробовал несколько плагинов событий/календарей:

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

Плюсы и минусы отказа от WordPress в пользу только Discourse

Плюсы

  • Больше никаких потенциальных проблем с WordPress, его многочисленными расширениями/темами/неуклюжим кастомным кодом [1] и совместимостью WordPress/Discourse при публикации постов.
  • Только одна платформа, на которой нужно сосредоточиться

  • Все данные будут организованы в одной базе данных, что упростит перенос всего нашего контента в будущем (даже Discourse не вечен… Или всё-таки вечен? :face_savoring_food:)

Минусы

  • Немного работы по «переносу» некоторых элементов с WordPress на Discourse

  • Необходимо найти подходящие решения для нескольких функций

  • Нужно настроить 301-редиректы

Ваше мнение, мысли, советы

Думаю, я хорошо объяснил, к чему стремлюсь. Буду рад услышать любые предложения, советы и т. д. по поводу возможного перехода от связки WordPress+Discourse к только Discourse.


  1. вы не захотите на это смотреть; даже не пытайтесь об этом думать, мне уже стыдно ↩︎

7 лайков

Думаю, это сводится к тому, какой трафик генерирует каждый сайт, и к вашему бюджету.

Discourse, безусловно, способен выполнить всё вышеперечисленное, но если вы обслуживаете огромное количество анонимных пользователей на сайте WordPress, то стоимость за просмотр страницы у вас значительно ниже.

Виртуальный сервер за 5 долларов, правильно настроенный, может без особых усилий обслуживать миллионы просмотров только на чтение. Именно в этом WordPress превосходит всех. Такой же объём трафика потребовал бы значительно больше ресурсов, если бы обслуживался через Discourse. WordPress остаётся невероятно эффективным инструментом, если вам важны такие вещи. При правильной настройке он также отлично подходит для курирования контента, который вы предоставляете поисковым системам.

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

4 лайка

Отличные соображения. Мне следовало упомянуть эту информацию.

Это очень нишевый сайт. Трафик по своей природе низкий. Это не требует затрат на пропускную способность, дисковое пространство или что-либо ещё. Оба сайта работают стабильно на моём VPS вместе с другими веб-проектами, и я делаю всё это как волонтёрская работа. :slight_smile:

Вопрос SEO, однако, был бы интересен для изучения. Я об этом не думал. :thinking:

3 лайка

в настоящее время использует бэкенд headless CMS Strapi + фронтенд на Next.js, размещённый на Vercel.

Также к нему подключён форум Discourse:
https://forum.monerochan.news/
Я также думаю о том, чтобы полностью отказаться от бэкенда Strapi и использовать Discourse в качестве headless CMS.

Таким образом, эту проблему можно решить, размещая «посадочную страницу» и наиболее посещаемые страницы в headless-режиме на чём-то вроде Vercel.
Даже в текущем виде Discourse почти может работать как headless CMS: мы можем просто добавить .json к URL темы и получить данные в формате Markdown или сырые данные постов.

Единственная проблема — постоянные ссылки, курируемые списки тем и система публикации и прав доступа для авторов и редакторов. Часть этого можно реализовать с помощью групп и категорий, но было бы здорово, если бы существовала одна категория для статей или превью-статей.

Возможно, нам стоит создать для этого плагин :thinking:

@Canapin спасибо за тему! Отличное чтение :grinning: :+1:

4 лайка

Это предполагает, что только главная страница предоставляет полустатический контент. В приведённом выше примере на сайте более 10 тысяч постов и страниц.

1 лайк
export const getStaticProps: GetStaticProps = async ({ params }) => {
  // Запуск вызовов API параллельно
  const id = params?.id

  if (!id) {
    return {
      redirect: {
        destination: '/',
        permanent: false,
        // statusCode: 301
      },
    }
  }
  const qs = require('qs');
  const query = qs.stringify({
    populate: '*', 
  }, {
    encodeValuesOnly: true, // сделать URL более читаемым
  });
  const article = await fetchAPI("/api/articles/" + params.id + "?"+ query)
  if (!article.data) {
    return {
      redirect: {
        destination: '/',
        permanent: false,
        // statusCode: 301
      },
    }
  }

  return {
    props: { article },
    revalidate: 1,
  }
}

Я использую этот код во фронтенде на Next.js для получения статей. Таким образом, статья будет кэшироваться на 1 секунду, а затем переиндексироваться. Если использовать этот метод, то инстанс Discourse будет получать только один запрос в секунду.

Возможно реализовать это не только для специальной категории, управляемой особой группой пользователей — авторов и редакторов.
Это можно сделать для всего контента. Бэкенд Strapi для monerochan.news также предоставляет контент в формате Markdown (точно так же, как и Discourse). Поэтому мы могли бы использовать тот же самый код для получения данных о постах (просто добавив .json к обычному URL темы) и отображения их.
Очевидно, что в этом случае будут отсутствовать интерактивные возможности Discourse. Но мы могли бы просто добавить кнопку с надписью вроде «Комментировать!», которая будет перенаправлять на страницу в Discourse. Страницы Next.js загружаются очень быстро и дружелюбны к SEO.

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

В обоих случаях создание headless-фронтенда может принести множество преимуществ.

1 лайк

Если у вас возникнут трудности с выполнением любого из вышеперечисленного с помощью плагина Новости, плагина Посадочные страницы или плагина События, вы всегда можете просто сообщить мне. Я с радостью помогу вам.

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

3 лайка

Это интересная идея, если я правильно понял. По сути, вы оставляете свой форум как есть, а дополнительно создаёте собственный сайт, контент для которого будет поступать из данных форума через API Discourse. Так?

@Stephen, у WordPress действительно есть свои преимущества.

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

Мой сайт https://monocycle.info загружается быстро, а переход между страницами происходит почти мгновенно.

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

Я мог бы оставить WP только для главной страницы (или почти не использовать его дальше), а основной контент перенести в темы/опубликованные страницы Discourse.

Отлично! Мне нужно ещё раз изучить ваш плагин перед заполнением мастера, чтобы точно понимать, какие функции он предоставляет и как он работает в целом. :+1:

1 лайк

А как насчет размещения большего количества материалов сообщества на сайте WordPress? Это повысит их видимость.

1 лайк

Есть ли какие-то более конкретные идеи? Когда мы переходим на главную страницу, у нас есть ссылка «Обсуждения» и список недавно созданных тем.

1 лайк

Да! Именно это я и имею в виду! Со стороны Discourse тоже нужно сделать не так много! Если вы добавите .json к любой ссылке на тему, у вас уже будет доступ к API!
Посмотрите, например, на эту тему, которую мы сейчас обсуждаем:
https://meta.discourse.org/t/go-from-a-wordpress-discourse-structure-to-a-discourse-site-only/247273/8.json?include_raw=true

Обратите внимание на .json и include_raw=true в конце. Именно так можно получить не только HTML-версию поста, но и его исходный markdown.

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

2 лайка

Это буквально заставило меня подпрыгнуть на стуле. Насколько я понял, используя .json и include_raw=true с помощью некоторой автоматизации (n8n), технически можно перенаправить весь Discourse в Hugo, просто отправив мета-тег и Markdown напрямую в Git-репозиторий??

1 лайк