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.

https://github.com/procourse/procourse-static-pages

46개의 좋아요

멋진 플러그인 감사합니다!

SEO 관련 작은 요청이 있습니다. 페이지 제목과 설명을 채울 수 있도록 제목 및 메타 설명을 위한 추가 필드가 있으면 좋겠습니다.

3개의 좋아요

동의합니다. 또한 사진 업로드 기능도 있으면 좋겠습니다.

1개의 좋아요

사설 포럼에서 어떻게 설정해 두셨는지 이해가 잘 안 되네요.
제가 필요한 것이 정확히 이거예요.

저도 같은 문제를 겪고 있는 것 같습니다. 이 기능이 있다면 좋겠지만, 제 사이트는 비공개 사이트이므로 일부 정적 페이지는 비로그인 상태에서도 공개되어야 합니다.

@joebuhlig - 이 스레드에서 몇 번이나 질문이 올라온 내용입니다. 이에 대해 어떤 의견이 있으신가요?

3개의 좋아요

설치 후에 이 화면이 나타납니다.

게다가 /admin/plugins 목록이 비어 있었는데, 이 플러그인을 삭제한 후에야 정상으로 돌아왔습니다. 그러니까… 도와주세요! :content:

2개의 좋아요

+·1
내가 말하고 싶었던 걸 말해줘서 고마워 :joy:

Discourse.Model을 사용하는 코드에서 오류가 발생한다는 것을 확인했습니다. 해당 모델은 비추천(deprecated) 상태이며, 현재 Discourse 버전에서는 완전히 제거된 것으로 보입니다. 이로 인해 새로운 오류가 발생한 것입니다.

오류를 수정하고 Pull Request를 제출했습니다:

이미 병합(merge)된 것 같습니다… 축하합니다! 이제 플러그인을 다시 설치할 수 있어야 합니다.

3개의 좋아요

조(Joe)가 요즘 플러그인을 유지 관리하고 있지 않은 것 같습니다. 다른 누군가가 PR을 생성해야 할 것 같습니다.

그럼에도 불구하고, 현재 코어에서 정적 페이지 기능을 개발 중입니다. 아직 초기 단계이지만, 사이트 설정에서 enable page publishing(페이지 게시 활성화) 설정을 활성화하여 사용해 볼 수 있습니다. 주제(topic)의 게시글 작업 메뉴를 열어 게시된 페이지를 만들 수 있습니다(… 버튼을 선택한 후 렌치 버튼을 누르세요).

13개의 좋아요

실제로 작동하네요! 감사합니다 :smiley:

2개의 좋아요

:heart:

오! 드디어! 정말 멋진 기능이에요. 덕분에 많은 사람들이 워드프레스 사용을 중단할 수 있을 것 같아요. 와, 정말 최고네요.

:heart:

10개의 좋아요

정말 좋습니다 - 스타일링을 위해 어떻게 접근하면 되는지 팁이 있을까요?

포럼이 아직 개발 중이니까 디자인에 너무 많은 공을 들이는 건 이르다고 생각하지만, 현재 모든 것이 여기 있습니다.

4개의 좋아요

스티븐, 감사합니다. 플레이를 조금 해보니, 로그인 필수 게시판에서 익명 사용자에게 이를 표시하는 것은 불가능한 것 같습니다. 아쉽네요 — 제가 정말로 원하는 용도였거든요. 그래도 꽤 멋진 기능입니다.

로그인하지 않은 사용자에게 더 많은 정적 콘텐츠를 표시할 수 있는 유일한 방법은 다음 두 가지 중 하나인 것 같습니다.

  1. 로그인 필수로 유지하고 기존 도구를 사용하는 것:
    • /admin/customize/site_texts/login_required.welcome_message
    • /tos
    • /privacy
      또는
  2. 게시판이 로그인 필수가 아니도록 (즉, 공개로) 설정하는 것
    • 각 카테고리 및 그룹의 표시 범위를 엄격하게 제어
    • /tos, /privacy, /about, /faq 전체 수트를 사용
    • enable page publishing을 통해 원하는 만큼의 정적 페이지 생성

다른 방법(다른 도메인/서브도메인에 호스팅된 페이지 제외)으로 이 목표를 달성할 수 있는 방법이 있는지 아는 분이 있을까요?

4개의 좋아요

전체 설명은 https://meta.discourse.org/t/page-publishing/151971에서 확인하실 수 있습니다.

1개의 좋아요

전적으로 공감합니다. 이 플러그인이 주로 정적 페이지를 만드는 데 사용된다는 것을 알고 있습니다. 하지만 예를 들어, 페이지에 넣을 계산기 애플리케이션을 만들었다고 가정해 보겠습니다. 이 계산기는 사용자 입력이 필요합니다. 페이지는 여전히 정적 코드를 포함하지만, 사용자 입력에 따라 결과가 업데이트됩니다. 이 플러그인으로 이것이 가능한가요, 아니면 js를 포함한 외부 html/css 페이지를 만드는 것이 더 나은가요?

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: The page’s settings blocked the loading of a resource at inline (“script-src”). Source: (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개의 좋아요

이 요청을 다시 논의하고 싶습니다. 플러그인은 훌륭하지만, 해당 페이지를 공유할 때마다 기본 메타데이터만 표시됩니다. 제목, 설명, 그리고 사용자 지정 이미지를 지정할 수 있으면 좋겠습니다. 플러그인이 아직 활발하게 개발되고 있나요, 아니면 이 주제는 마켓플레이스 카테고리로 가져가는 것이 더 나은가요? 감사합니다!