그룹용 커스텀 홈페이지

아! 죄송합니다. 그 부분을 놓치고 있었네요.

음. 네. 왜 그 지원 기능을 제거했는지 궁금하네요. 아마 이제 코어(core)에서 해당 설정을 변경할 수 있는 것 아닌가요?

코어에 해당 기능이 있는지 확인해 보고, 있다면 그 설정들을 제거하겠습니다.

아니면 코어에서 어떤 일이 일어나서 해당 변경 사항이 깨진 것일 수도 있겠네요. 알아볼 수 있는 것이 있는지 확인해 보겠습니다. . . .

3개의 좋아요

이전에는 왜 기본 및 익명 홈페이지 지원을 삭제했는지 여전히 확신이 서지 않습니다. 해당 부분을 복원했습니다.

이제 custom_default_homepage가 있으면 그룹 매칭이 없는 한 이를 사용합니다. anon_page가 있고 사용자가 익명인 경우 이를 사용합니다.

모바일 페이지를 언제, 어떻게 설정해야 하는지(익명 사용자에게만? 모든 사용자에게? 기본 페이지를 덮어쓰는가? 그룹 맵을 덮어쓰는가?)를 파악할 수 없었기 때문에 이를 삭제했습니다. 해당 모바일 페이지를 사용하고 있다면, 무엇을 덮어써야 하는지 의견을 알려주세요. (모바일 환경에서 기본 페이지로 설정하되, 그룹 페이지가 있으면 그걸 사용해야 하는 것 같습니다. 여전히 익명 사용자와 로그인 사용자에 대해 어떻게 해야 할지 명확하지 않네요. 아마 모든 페이지에 모바일 버전이 필요할지도 모릅니다.)

다음은 코드입니다:

      let url = null;

      if (settings.custom_default_homepage) {
        url = settings.custom_default_homepage.replace(/^\/+/g, "");
      }

      if (user) {
        if (user.primary_group_name && settings.group_page_map) {
          let groupMap = settings.group_page_map.replace(",", ":").split("|");
          const mapEntry = groupMap.find((value) =>
            RegExp(user.primary_group_name).test(value)
          );
          if (mapEntry) {
            url = mapEntry.split(":")[1].replace(/^\/+/g, "");
          }
        }
      } else if (settings.anon_page) {
        url = settings.anon_page.replace(/^\/+/g, "");
      }

그리고 url에 값이 있을 때만 홈페이지를 변경합니다.

8개의 좋아요

이 테마 컴포넌트는 그룹 내 사용자를 로그인 시 또는 링크를 통해 홈페이지로 리디렉션하려는 목적으로 사용되나요? 컴포넌트를 설치해 두었는데, 로고는 선택한 페이지로 이동하지만 로그인 시에는 여전히 기본 /latest 페이지로 리디렉션됩니다. 이 컴포넌트가 로그인 리디렉션을 처리해 주는 것이라면, 아직 설정이 잘못되어 있는 것이겠죠.

제 목표는 모든 사용자가 기본 그룹에 포함되고, 로그인 시 대체 페이지로 리디렉션되도록 하는 것입니다.

이 TC가 적용되려면 해당 그룹이 사용자의 주(Primary) 그룹이어야 합니다. 이는 사용자가 리디렉트가 설정된 여러 그룹의 멤버인 경우 충돌이 발생하지 않도록 의도적으로 설계된 것입니다.

초기 우리의 로직은 이 설정이 기본 홈페이지만 오버라이드하며, 그 외의 경우(비로그인 사용자 포함)는 우선순위가 더 높다는 것이었습니다.

전형적인 사용 사례는 데스크톱에서 카테고리 + 최신 글 뷰를 사용하는 경우로, 이는 모바일에서 카테고리로 표시되는데(이것은 매우 유용하지 않습니다) 그렇기 때문입니다.

요즘에는 사이드바 덕분에 대부분의 인스턴스에서 이것이 불필요해졌으므로, 이를 제거하는 것이 합리적이라고 생각합니다. 다만 이 TC를 오랫동안 사용해 온 일부 사용자에게는 혼란을 줄 수 있을 것입니다.

2개의 좋아요

신뢰 수준 0은 유효한 그룹으로 간주되나요? 그룹 페이지 맵에 이 설정이 올바른가요? trust_level_0:/discourse-ai/ai-bot/conversations. 현재 이 설정을 적용해 두었습니다.

아니요, 신뢰 수준 그룹은 Primary로 설정할 수 없기 때문에 사용할 수 없습니다.

이것이 필수적이라면, 동적 그룹 플러그인을 사용하여 미러 그룹을 만들어 우회할 수 있습니다.

3개의 좋아요

사용자 정의 기본 홈페이지를 AI 봇 페이지로 설정(모든 사용자에게 기본값으로 적용)한 후, 익명 사용자의 홈페이지를 최신 게시글로 설정하여 해당 사용자에게만 기본값을 덮어쓰는 방법을 시도해 보셨나요?

1개의 좋아요

아, 그렇군요. 제 이메일 알림에는 이 답변의 다른 버전이 전송되었나 봅니다. 이 답변이 더 마음에 듭니다. :slight_smile:

2개의 좋아요

그렇겠지! 아직도 이메일 알림을 쓰고 있어?? 좀 고전적이네, 제이!

@everyone은 진정한 그룹이 아니기 때문에 기본 그룹으로 설정할 수 없으므로 작동하지 않을 가능성이 높습니다

2개의 좋아요

"everyone"이라고 한 것은 가짜 그룹이 아니라 “global”(전체)을 의미했습니다. 오해의 소지가 없도록 제 게시물을 수정하겠습니다.

2개의 좋아요

나는 아주 나이든 사람이야. 게다가 메타에 하루 10시간 정도 접속해 있는데, 놓치는 게 있으면 안 되거든!

5개의 좋아요

먼저, 이 문제에 뛰어와서 도움을 주신 모든 분들께 감사드립니다! 정말 감사드립니다.

저에게는 정말 골치가 아픈 문제입니다.

이 플러그인을 아무 문제 없이 설치하고 설정에서 trust_level_0을 기본 그룹으로 지정했습니다. 사이트의 모든 멤버가 해당 그룹에 추가되었습니다. 이제 모든 사용자에게 이것이 기본 그룹으로 표시됩니다.

그룹용 커스텀 홈페이지 컴포넌트 설정에서 저는 다음과 같이 설정했습니다.

페이지에 액세스할 때 Community-Core 기본 그룹의 사용자는 여전히 /latest 페이지로 이동합니다. 익명 페이지(Anon Page)를 /latest가 아닌 다른 값으로 변경하면 로그인 시 해당 필드에 표시된 페이지가 사용자에게 표시되므로, 이것이 바로 발생하는 리디렉션입니다.

저는 Canvas Screen 테마를 사용 중이며, 동일한 결과를 확인하기 위해 기본 테마로 변경하여 테스트했습니다.

또한 이 문제가 해결되는지 확인하기 위해 모든 테마 컴포넌트와 플러그인을 비활성화해 보았지만 성공하지 못했습니다.

저는 다른 사람들에게는 자명할 수 있는 것을 제가 놓치고 있거나, 컴포넌트에 문제가 있는 것 같다는 생각이 듭니다.

인스펙터에서 body 태그에 기본 그룹이 표시되는지 확인해 보셨나요?

제이, 이걸 위한 인스펙터가 뭔지 정말 모르겠어요?

사용자들은 그룹에 표시되고 있으며, 이 이미지에서 제 프로필에 있는 것과 동일한 표시기가 있습니다.

사이트에서 마우스 오른쪽 버튼을 클릭한 후 검사(Inspect)를 선택하면 pfaffman이 무엇을 요청하는지 확인할 수 있습니다.
예를 들어, 제 사용자 관리 페이지(/admin/users/{user_id}/{username})에서는 다음과 같은 것을 볼 수 있습니다.


그리고 이것이 제 계정이기 때문에 마우스 오른쪽 버튼을 클릭하고 검사를 선택하면 다음과 같은 것을 볼 수 있습니다.

여기서 <body> 태그 안에 "testgroup"이 표시되어 있는 것을 볼 수 있습니다.

제가 말한 바로 그 부분입니다. 하지만 이제야 기억이 나는데, 또는 이제야 알겠는데, 해당 컴포넌트는 CSS가 아니라 사용자 모델에서 기본 그룹을 가져옵니다.

따라서 관리자 사용자 경로에서 사용자를 찾아보고, URL에 .json을 추가해 보세요. 그런 다음 해당 사용자의 기본 그룹이 무엇인지 확인하고, 브라우저에서 primary_group: true를 검색하여 테마 설정에서 사용한 대소문자가 정확히 일치하는지 확인해 주세요.

2개의 좋아요

여러분 안녕하세요,

해설에 감사드립니다. 해당 지침을 따랐고 .json URL을 통해 정확한 그룹 이름을 확인했습니다.

기본 그룹 이름은 대문자와 하이픈을 포함하여 Community-Core인 것으로 확인되었습니다. 이는 테마 컴포넌트 설정에 입력한 내용과 정확히 일치합니다.

불행히도 여전히 작동하지 않습니다. 익명 페이지 리다이렉트가 여전히 활성화되어 있습니다. 따라서 문제는 다른 곳에 있을 것입니다.

다른 분들도 이 기능이 정상적으로 작동하는지 확인해 주실 수 있을까요?

확인해 볼 수 있는 다른 아이디어가 있을까요?

아니요. 만약 익명 페이지로 이동하는 것이고 "커스텀 기본 홈페이지"로 이동하지 않는다면, 해당 시점에 사용자를 찾지 못하고 있다는 뜻입니다.

      const user = api.getCurrentUser();

사용자가 실제로 로그인되어 있다면 어떻게 이런 일이 발생할 수 있는지 모르겠습니다.

아, 사용자가 초기화 프로그램(initializer)에서 설정되네요. 그래서 사이트가 로드된 후에 로그인하면 이 코드가 다시 실행되지 않을 수 있습니다. 페이지를 새로고침해 보셨나요?

1개의 좋아요

제이, 감사합니다. 새로고침을 시도해 보았어요. URL과 유사한 부분들을 여러 가지로 조정해 봤습니다. 분명히 Anon 페이지는 로드됩니다. 이 부분을 변경하면 해당 페이지로 이동하고, 브라우저 URL에도 /latest가 표시됩니다.

검색을 해 봤지만, 단순히 리다이렉트하는 다른 방법이 없는 것 같네요. PHP 사이트에서는 더 쉬웠어요. 저는 아직 Discourse에 익숙하지 않습니다.

이것은 매우 특이한 엣지 케이스 시나리오이며, Discourse가 설계되지 않은 작업을 수행하도록 만드는 영역에 진입하는 것일 수도 있습니다.