ProCourse Static Pages

I’ve been doing freelance Discourse customization as my primary gig for almost a year at this point. And one of the most common questions I get is about static pages. “Can I just create a static sales page?” “Where’s a good place to put a FAQ without a discussion around it?”

You can likely argue the validity of these questions in most scenarios. The main response being “just close the topic.” But that doesn’t cut it for most. Thus, I decided to create this plugin to make it possible.

It’s pretty simple. You get a backend under Admin > Plugins to create, edit, and delete these pages as you like. It uses the same topic composer we’re used to. Once you have the page built, you can Enable it and share the link to the page wherever you like.

For a demo: LINK IS DEAD.

I should also note that styling is made easier with a class static-page in the wrapping div for the whole page. That way you can do whatever you want to the body of the page from a CSS standpoint in a theme.

46 лайков

Спасибо за крутой плагин!

Небольшая просьба по SEO: было бы здорово добавить дополнительные поля для заголовка страницы и описания, чтобы заполнять title и meta description.

3 лайка

Согласен. Также было бы здорово иметь возможность загружать фотографии.

1 лайк

Извините, я не понял, как вы это разместили на частном форуме.
Это именно то, что мне нужно.

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

@joebuhlig — этот вопрос уже несколько раз поднимался в этой теме. Есть ли у вас какие-то мысли по этому поводу?

3 лайка

Это появляется после установки.

Кроме того, мой список /admin/plugins был пустым, пока я не удалил его. Так что… Пожалуйста, помогите! :content:

2 лайка

+·1
ты сказал то, что я хотел сказать :joy:

Я выяснил, что ошибка возникает из-за использования кода Discourse.Model, который устарел (насколько я знаю, в текущей версии Discourse он полностью удалён, что и вызвало новую ошибку).

Я исправил ошибку и отправил Pull Request:

Похоже, его уже приняли — ура! Теперь вы должны иметь возможность переустановить плагин.

3 лайка

Я не думаю, что Джо сейчас поддерживает свои плагины. Кто-то другой должен будет создать PR.

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

13 лайков

На самом деле это работает! Спасибо :smiley:

2 лайка

:heart:

О! Наконец-то! Это просто отлично. Возможно, это позволит многим людям отказаться от использования WordPress. О, да. Это так здорово.

:heart:

10 лайков

Это отлично — у вас есть какие-либо советы, как мы можем получить к ним доступ для стилизации?

Полагаю, пока рано вкладывать много усилий в дизайн вашего форума, так как он находится в разработке, но на данный момент всё здесь:

4 лайка

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

Кажется, единственный способ сделать больше статического контента видимым для пользователей без входа — это либо:

  1. Оставить требование входа и использовать существующие инструменты:
    • /admin/customize/site_texts/login_required.welcome_message
    • /tos
    • /privacy
      или
  2. Сделать форум открытым (то есть не требующим входа):
    • и тщательно контролировать видимость каждой категории и группы
    • получить полный набор страниц: /tos, /privacy, /about, /faq
    • создавать любое количество статических страниц с помощью функции enable page publishing

Знает ли кто-нибудь другой способ (кроме размещения страниц на другом домене или поддомене) достичь этого?

4 лайка

Полные инструкции по адресу Page Publishing

1 лайк

Да. Я знаю, что этот плагин в первую очередь предназначен для создания статических страниц. Однако, предположим, вы создали приложение-калькулятор, которое хотите разместить на странице. Калькулятор требует ввода данных от пользователя. Код страницы остаётся статическим, но результат обновляется в зависимости от ввода пользователя. Возможно ли это с помощью данного плагина или лучше просто создать отдельную HTML/CSS-страницу с JavaScript?

1 лайк

Я хотел бы использовать виджет стороннего разработчика на статической странице. JavaScript для этого должен быть вставлен перед </body>. Есть ли способ сделать это — только на этой конкретной статической странице? Спасибо за помощь!

Просто делюсь тем, как мне удалось запустить скрипт для статических страниц:

<script type="text/discourse-plugin" version="0.8">
    const { setDefaultHomepage } = require('discourse/lib/utilities');
    const user = api.getCurrentUser();
    if(!user) {
        setDefaultHomepage('/page/welcome/1/'); // <--- установите URL главной страницы
    }
    api.onPageChange((url, title) => {
        if(url.indexOf("/page/welcome") === 0) {
            // выполните действия для этой статической страницы
        }
    });
</script>

Небольшое уточнение: установка страницы в качестве главной полностью необязательна при запуске скрипта. Я просто хотел показать, что это тоже возможно :+1:

4 лайка

Спасибо!
Вы знаете, как использовать внешние скрипты (не с того же домена) для статической страницы?
Всегда появляется ошибка:
Content Security Policy: Настройки страницы заблокировали загрузку ресурса через inline («script-src»). Источник: (function injectedScript() {...

В общем случае — какой лучший способ встроить, например, веб-магазин, не используя iframe?
Пример кода:

<div id="my-store-<id>"></div> <div> <script data-cfasync="false" type="text/javascript" src="https://app.ecwid.com/script.js?<id>&data_platform=code&data_date=2020-12-20" charset="utf-8"></script><script type="text/javascript"> xProductBrowser("categoriesPerRow=3","views=grid(20,3) list(60) table(60)","categoryView=grid","searchView=list","id=my-store-<id>"); </script> </div>

1 лайк

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