사용자 포트폴리오의 여러 설치

안녕하세요! 제 Discourse 인스턴스를 RPG 용도로 사용하려고 합니다. 사용자 포트폴리오 테마 컴포넌트는 사용자가 제출한 내용을 표시하는 데 완벽할 것 같습니다. 구체적으로는 프로필에서 사용자의 캐릭터 목록, 세계관(lore) 제출물, RPG 장면을 확인할 수 있기를 원합니다.

문제는 이 테마 컴포넌트가 한 번에 카테고리 하나만 지원한다는 점입니다. 모든 카테고리의 category 값을 0으로 설정하고 여러 태그를 추가해 보았지만, 포트폴리오 페이지가 빈 화면으로 표시되었습니다. 따라서 이 테마 컴포넌트의 여러 인스턴스를 편집하여 설치함으로써, 이러한 개별 항목들을 위한 여러 포트폴리오 페이지를 만들려고 합니다.

테마 컴포넌트를 다운로드하여 파일(예: portfolio의 인스턴스를 portfolio_2로 변경)을 편집한 후, 원래 컴포넌트와 함께 새 복사본을 설치해 보았지만, 둘 다 작동하지 않습니다.

둘 다 활성화된 경우…

  1. 사용자 카드에 포트폴리오 버튼이 하나만 표시됩니다(portfolio_2).
  2. 사용자 프로필에 포트폴리오 버튼이 하나만 표시됩니다(portfolio_2).
  3. 사용자 프로필에서 portfolio_2 페이지가 빈 화면으로 표시됩니다.

이것이 작동하도록 만들 수 있는지, 아니면 포기해야 하는지 알려주시면 감사하겠습니다.

이 기능은 Topic List Previews에서 시작되었습니다. 이 기능도 사용해 볼 수 있습니다.

TLP에서는 태그를 사용하여 포트폴리오 포함 여부도 지정할 수 있습니다.

이를 통해 여러 범주에 걸친 주제를 선택할 수 있습니다.

감사합니다. 여기가 좋은 정보 출처가 될 것 같네요. 포트폴리오 버튼을 프로필의 가로 메뉴(요약, 활동 등 옆)에 배치하는 편이 더 좋다고 생각합니다. 하지만 더 큰 문제는 태그가 여러 개 있을 때 태그별로 필터링할 수 있어야 한다는 점입니다. 즉, 사용자가 버튼을 클릭하면 포트폴리오에서 “캐릭터” 또는 "장면"만 한 번에 볼 수 있어야 합니다.

이 목적을 위해 두 테마 컴포넌트에서 각각 필요한 부분을 가져와서 조합하는 방식을 시도할 수도 있지만, 일단 더 찾아보고 있습니다. 혹시 다른 아이디어가 있으시면 공유해 주세요!

괜찮지만, 일반적인 경우를 고려하면 논리적으로 가장 적절한 위치입니다. 다른 '카테고리’와 마찬가지로 모든 활동에 대한 필터 역할을 하니까요.

그래도 원본 코드를 보고 마음대로 해보세요! :computer: :rocket:

일반적인 사용 사례에 있어 이것이 좋은 장소라는 데 100% 동의합니다. 제 특별한 사용 사례는 역할극에 중점을 둔 커뮤니티를 위한 것으로, 사용자들이 정기적으로 이 정보를 찾을 것이기 때문에, 캐릭터와 장면 추적 버튼이 가능한 한 적은 클릭으로 접근할 수 있고 매우 눈에 띄게 표시되기를 원합니다. 여러분의 솔루션을 깎아내리려는 의도는 전혀 아닙니다!

아, 걱정 마. 그렇게 생각하지 않았어.

네, 너의 경우엔 그 유용성이 보인다고. 맞춤 솔루션을 만들 때로군!

자, 그래서 포트폴리오 플러그인을 사용하는 대신 다른 방향으로 시도해 봤습니다. 이 내용을 여기에 게시하는 것이 맞는지, 아니면 새 스레드를 여는 것이 좋을지 모르겠어요. 새 스레드가 더 좋다면 알려주세요!

누군가 이 코드를 살펴봐서 제가 어디를 잘못하고 있는지(그리고 hopefully 왜 그런지 / 어떻게 고칠 수 있는지) 알려줄 수 있을까요? 몇 시간 동안 튜토리얼을 읽고, 코드를 작성하고 수정해 왔지만, 저는 초보자가 한참이라 다음에 뭘 시도해야 할지 막막한 상태입니다.

목표: 특정 카테고리의 토픽 목록을 사용자의 요약 페이지에 표시하는 것입니다.
이 사용 사례는 RPG 포럼에서 사용자가 캐릭터를 생성하여 스토리를 게시하는 경우를 위한 것입니다. 이 플러그인을 통해 사용자가 어떤 캐릭터를 생성했는지 보여줌으로써, 다른 사람들이 캐릭터를 찾기 위해 너무 깊이 들어가지 않아도 되도록 하려는 것입니다. 모든 캐릭터 시트는 같은 포럼에 저장됩니다. 그래서 저는 단순히 올바른 사용자와 올바른 포럼에서 토픽을 가져오는 토픽 목록을 생성하면 될 것 같다고 생각했습니다.

다음 참고 자료를 사용했습니다:

https://meta.discourse.org/t/add-a-featured-topic-list-to-your-discourse-homepage/132949

제 시도는 다음과 같습니다. 현재까지 토픽 목록 헤더(토픽/답글/활동)는 올바른 위치에 표시되고 있지만, 토픽이 채워지지 않고 있습니다.

<script type="text/discourse-plugin" version="0.8">
  const ajax = require('discourse/lib/ajax').ajax;
  const Topic = require('discourse/models/topic').default;
  const User = require('discourse/models/user').default;
  // ajax, Topic, User 필요

  api.registerConnectorClass('above-user-summary-stats', 'character-list', {
    // above-user-summary-stats는 플러그인 아웃렛, character-list는 커스텀 컴포넌트 이름

    setupComponents(args, component) {

        const store = getOwner(this).lookup("service:store");

        return ajax(userPath(`/topics/created-by/${this.username_lower}.json`)).then(function (result) {
        // user.js 모델의 summary()에서 가져온 줄; 현재 보고 있는 사용자 프로필의 사용자명을 찾아 그들이 생성한 토픽의 json에 접근하려고 함

            let characterList = [];
            // 토픽을 푸시할 빈 배열

            result.topic_list.topics.forEach.category_id(4)(function(topic){
            // 원하는 특정 카테고리에서만 가져온 토픽

            // 여기쯤에서 크리스의 튜토리얼에는 사용자를 토픽과 연결하는 몇 줄이 있었습니다. 토픽과 함께 표시할 사용자가 원포스터 외에 필요하지 않으므로 무시했습니다. 이것이 중요할까요?
            //topic.posters.forEach(function(poster){
                //poster.user = $.grep(featuredUsers, function(e){ return e.id == poster.user_id; })[0];
              //});

                characterList.push(Topic.create(topic));
                // 토픽 목록에 토픽 추가

            });

            component.set('characterList', characterList);
            // 배열의 토픽으로 컴포넌트 설정

        }); // ajax 끝


    } // setupComponents 끝

  });
</script>

<script type="text/x-handlebars" data-template-name="/connectors/above-user-summary-stats/character-list">

      <div class="custom-character-list-wrapper">
        {{topic-list topics=characterList showPosters=false}}
      </div>

</script>