(Retired) Use an ID in a custom user field to link to a user's external profile

Also today I realized that the User Profile page actually displays the custom field as it should, although compared to the user card, now the custom field (Website) is displayed last instead of first..

1개의 좋아요

I feel like I’ve seen a discussion of this, but I can’t find it now.

I’ve got a custom profile field that holds a user’s website implemented using this tutorial, but allowing for any external site to be entered, rather than just linking to Twitter or something. The problem I have is that about 80% of the users don’t bother to put “http(s)://” in front of the URL they enter. They (rightly) expect that “www.example.com” should just work. So how do I make it just work?

Edited to add: Figured it out. Below is the entire if block of javascript I used to determine whether to attempt to show an external link. The inner if is what determines whether the external URL needs to have “http” added to it, and takes care of doing it.

    if (userFields && userFields[churchURLFieldId]) {
      const rawChurchURL = userFields[churchURLFieldId];
      var url = rawChurchURL;
      if (!/^https?:\/\//i.test(rawChurchURL)) {
        url = 'http://' + rawChurchURL;
      }
      const link = "<a href='"+url+"' target='_blank'>"+userFields[churchNameFieldId];+"</a>";
      return Ember.Object.create({ link, name: churchURL.get('name') });
    } else {
      return null;
    }
1개의 좋아요

기존 사용자 프로필 필드를 새 필드를 추가하는 대신 편집할 방법이 있을까요? 기존 트위터 필드 값을 편집하여 앵커 태그를 포함하도록 하려는 목적입니다.

새로운 클릭 가능한 프로필 필드를 커넥터/핸들바 아웃렛 등을 사용하여 추가할 수 있도록 하는 메인 게시글에 따르면, 해당 필드들이 "추가"되므로 기존 프로필 필드를 숨겨야 했습니다.
예를 들어, 클릭 가능한 트위터 필드를 추가할 수 있지만, 그러면 기존 트위터 필드를 숨겨야 합니다.
이렇게 새로 추가된 트위터 필드는 기존에 존재하던 그 에임버(ember) div에 속하는 것이 아니라 별도의 div에 위치하게 되어, 이상한 CSS 문제가 발생합니다.

여기서 /connectors/user-profile-primary/ 대신 /connectors/user-profile-public-fields/Twitter를 사용하는 것이 도움이 될까요?

정말 좋네요. 포크해서 Namati에 특화된 부분을 빼고, 좀 더 범용적인 테마 컴포넌트로 만들려고 시도해 봤습니다. 괜찮으시죠!

다른 분들이 찾기 쉽게 하려고 별도의 포스트도 올렸어요:

2개의 좋아요

안녕하세요, 이 플러그인 버전을 만들었으니 공유하려고 합니다. 아주 기본적인 버전인데, 링크로 만들 사용자 필드를 지정하고, 선택적으로 접두사(예: https://mysite.com/users/)를 추가할 수 있습니다. 코드를 수정하기보다는 테마 컴포넌트를 설치하는 쪽을 선호하시는 분이 계실 수 있어 공유합니다. 이 스레드의 원본 게시글에 있는 코드를 기반으로 만들었습니다.

참고로, 제 특정 사용 사례에서는 사용자가 직접 편집할 수 없게 하려고 합니다. 대신 Discourse API를 통해 업데이트할 계획입니다. 이런 경우 "사용자 필드(user field)"보다 "사용자 정의 필드(custom field)"가 더 적합할까요? API에서 두 가지 모두를 볼 수 있는데, custom_fields는 비어 있습니다.

7개의 좋아요

@wilson29thid 이 컴포넌트에 대해 Customization > Theme 토픽을 설정해 주실 의향이 있으신가요? 매번 코드를 복사/붙여넣기해야 하는 대신 설치 가능한 테마 컴포넌트로 제공되면 좋겠습니다.

5개의 좋아요

네, 여기에 해당 태그를 붙인 주제를 만들면 설치 가능한가요?

1개의 좋아요

이미 git URL을 통해 설치할 수 있습니다. 주제를 만들면 사람들이 더 쉽게 찾을 수 있도록 도와줍니다.

1개의 좋아요

조금 다른 질문입니다. 가입 페이지의 사용자 필드 설명 부분에 새 창에서 열리는 링크를 추가하고 싶은데요. 해당 페이지는 [this](format) 형식으로 감싸진 링크를 인식하지 못합니다.

사용자들이 가입 전에 커뮤니티 가치관을 읽었는지 확인하고 싶은데, 링크가 있으면 놓친 경우에도 도움이 될 것 같습니다. 지금은 브라우저에 전체 링크를 복사/붙여넣으라고 안내하고 있습니다.

Discourse 3.2와 Ember 5에서는 어떻게 작동하나요?

버전을 <script type="text/discourse-plugin" version="1.13.0">으로 업데이트하고, 여기에서 제안된 대로 api.registerConnectorClass를 api.renderInOutlet으로 변경했는데 브라우저 콘솔에서 [THEME 27] Error: klass is not an Ember component 오류가 발생합니다.

여기에서 제안된 대로 property를 computed로 교체했는데 브라우저 콘솔에서 [THEME 27] ReferenceError: computed is not defined 오류가 발생합니다.

import를 깜빡했네요. 그래서 script 태그 시작 부분 뒤에 누락된 import EmberObject, { computed } from '@ember/object';를 추가했는데, 그 결과 SyntaxError: “/discourse/theme-27/discourse/initializers/theme-field-140-common-html-script-3: ‘import’ and ‘export’ may only appear at the top level.” 오류가 발생합니다.

1개의 좋아요

음, 맞아요. 원 게시글에서 제안된 기술들은 꽤 오래되었네요 (2016년에 작성된 글이라 그럴 만도 하죠 :sweat_smile:).

요즘에는 이런 것들은 git 저장소에 패키징해서 #customization:theme-component로 게시하고, 사람들이 설정을 통해 설치하고 구성할 수 있도록 해야 합니다.

2개의 좋아요

결국 @wilson29thid의 TC를 여기에서 다시 작업했지만, 나중에 수정해야 할 비추천(deprecation) 경고가 여전히 남아 있습니다.

1개의 좋아요

OP의 이 기능은 이제 새로운 미니 컴포넌트에서 찾을 수 있습니다: