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..
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;
}
既存のユーザープロフィールフィールドを編集することは可能でしょうか?新しいフィールドを追加するのではなく。 そうすれば、既存の Twitter フィールドの値をアンカータグを含むように編集できます。
新しいクリック可能なプロフィールフィールドをコネクターやハンドルバーのアウトレットなどを使って追加できるメインの投稿では、それらは「追加」されるため、既存のプロフィールフィールドを非表示にする必要がありました。
例えば、クリック可能な Twitter フィールドを追加すると、既存の Twitter フィールドを非表示にしなければなりませんでした。
この結果、新しく追加された Twitter フィールドは、以前から存在していた同じ Ember div に属さず、別の div 内に配置されることになり、奇妙な CSS 表示を引き起こしています。
/connectors/user-profile-primary/ の代わりに /connectors/user-profile-public-fields/Twitter を使用することは、この問題を解決する助けになるでしょうか?
とても素晴らしいですね。Namati 固有の要素を除き、テーマコンポーネントとしてより汎用的になるようフォークして試してみました。ご容赦ください!
また、他の人が見つけやすくするため、別投稿も追加しました:
皆さん、こんにちは。このスレッドのオリジナル投稿のコードをベースに、非常にシンプルなプラグイン版を作成しました。これは、どのユーザーフィールドをリンクにするか、そしてオプションでプレフィックス(例:https://mysite.com/users/)を指定するだけのものです。コードを直接変更する代わりに、テーマコンポーネントをインストールしたいという方のために共有させていただきました。
余談ですが、私の用途では、誰にも編集させたくありません。Discourse API を介して更新する予定です。その場合、「カスタムフィールド」の方が「ユーザーフィールド」よりも適しているでしょうか?API には両方ありますが、custom_fields は空のようです。
@wilson29thid このコンポーネントの#themeトピックを設定していただけませんか?毎回コードをコピー&ペーストする必要があるのではなく、インストール可能なテーマコンポーネントとしてこれがあると素晴らしいでしょう。
はい - ここでそのタグを使用してトピックを作成すると、インストール可能になりますか?
git URLからすでにインストール可能です。トピックを作成すると、人々が見つけやすくなるだけです
質問が少し異なります。サインアップページにあるユーザーフィールドの説明に、別のウィンドウで開くリンクを追加したいと考えています。そのページでは、[このフォーマット](このフォーマット) で囲まれたリンクは認識されません。
参加する前に、ユーザーにコミュニティバリューを読んだことに同意してもらいたいと考えており、そこにリンクがあれば、見逃した場合に役立ちます。現在、ブラウザにフルリンクをコピー/ペーストするように指示しています。
Discourse 3.2 および Ember 5 ではどのように機能しますか?
バージョンを \u003cscript type=\"text/discourse-plugin\" version=\"1.13.0\"\u003e に更新し、こちら で提案されているように api.registerConnectorClass を api.renderInOutlet に変更しましたが、ブラウザのコンソールに次のように表示されます: [THEME 27] Error: klass is not an Ember component
こちら で提案されているようにプロパティを computed に置き換えましたが、ブラウザのコンソールに次のように表示されます: [THEME 27] ReferenceError: computed is not defined
ああ、インポートを忘れていました。そのため、スクリプトタグの後に欠落している 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." が発生しました。
うーん、そうですね。OPで提案されているテクニックはかなり時代遅れです(2016年に書かれたものなので、もっともですが:sweat_smile:)。
最近では、このようなものはgitリポジトリにパッケージ化され、#theme-componentとして公開され、設定を通じてインストールおよび構成できるようになっています。
しかし、@wilson29thid の TC をこちらで再作成しました。ただし、まだ修正する必要のある非推奨の警告が残っています。
このOPの機能は、新しいミニコンポーネントで見つけることができます。