こんにちは!RPGのためにDiscourseインスタンスを使用したいと考えています。 ユーザーポートフォリオテーマコンポーネントは、ユーザーが提出したものを見せるのに最適でしょう。具体的には、プロファイルでユーザーのキャラクター、ロアの提出物、RPGシーンのリストを表示できるようにしたいです。
唯一の問題は、このテーマコンポーネントが一度に1つのカテゴリしかサポートしていないことです。すべてのカテゴリでカテゴリを0に設定し、複数のタグを追加しようとしましたが、ポートフォリオページが空白になってしまいました。そのため、これらの個別のアイテムのために複数のポートフォリオページを持つために、このテーマコンポーネントの複数のインスタンスを編集してインストールしたいと思います。
テーマコンポーネントをダウンロードしてファイルを編集し(例:portfolioをportfolio_2に変更)、元のコピーに加えて新しいコピーをインストールしましたが、どちらも機能しませんでした。
両方が有効になっている場合…
- ユーザーカードにはポートフォリオボタンが1つだけ表示されます(portfolio_2)。
- ユーザーのプロファイルにはポートフォリオボタンが1つだけ表示されます(portfolio_2)。
- ユーザーのプロファイルではportfolio_2ページが空白になります。
これは機能する可能性はありますか、それとも諦めるべきでしょうか?
この機能はTopic List Previewsで考案されました。そちらも試すことができます。
TLPでは、タグによってポートフォリオの含めるトピックを指定することもできます。
これにより、複数のカテゴリにまたがるトピックを選択できます。
「いいね!」 1
ありがとうございます。ここは素晴らしい情報源です。ポートフォリオボタンは、プロフィールの横並びメニュー(サマリー、アクティビティなどの隣)にある方が良いと思いますが、より大きな問題は、複数のタグがある場合にタグでフィルタリングできるようにしたいということです。つまり、ユーザーは一度にポートフォリオ内の「キャラクター」または「シーン」のみを表示するためにボタンをクリックできるようにしたいのです。
これらのテーマコンポーネントの両方から何かを「フランケンシュタイン」してこの目的のために試すことになるかもしれませんが、まずはもう少し調べてみます。他にアイデアがある方は、ぜひ共有してください!
「いいね!」 1
それは問題ありませんが、論理的には一般的なケースとして最適な場所にあります。他の「カット」と同様に、これはすべての活動のフィルターです。
でも、ソースを見て、できる限りのことをしてください!

一般的なユースケースとしてはここが最適な場所であることに100%同意します。私の特定のユースケースは、ロールプレイングを中心としたコミュニティであり、ユーザーはこの情報を定期的に探すことになるため、キャラクターとシーンの追跡ボタンをできるだけ少ないクリック数で、かつ目立つようにアクセスできるようにしたいと考えています。あなたのソリューションをけなすつもりは全くありません!
「いいね!」 1
心配しないでください。そのように受け取っていません。
ええ、あなたのケースでの有用性がわかります。オーダーメイドのソリューションの時間です!
「いいね!」 1
ポートフォリオプラグインの使用をやめて、別の方向からアプローチすることにしました。これをここに投稿すべきか、新しいスレッドにすべきか分かりません。もしそうであれば、教えてください!
どなたか、これを見て私が何が間違っているのか(そしてできればなぜ、どうやって修正するのか)教えていただけますか?チュートリアルを読んだり、これを書いたり編集したりするのに何時間も費やしましたが、私は非常に初心者であり、次に何を試すべきか分からない状態になりました。
目標:特定のカテゴリのトピックのリストをユーザーの概要ページに表示すること。
このユースケースでは、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) {
// summary() in user.js modelから取得した行。表示しているユーザープロファイルのユーザー名を見つけて、彼が作成したトピックの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>