チャット¶
参加者が互いに交流できるように、ページにチャットルームを追加できます。
基本的な使い方¶
テンプレートのHTMLに、次のように入力します。
{{ chat }}
これにより、同じグループ内のプレイヤー間でチャットルームが作成されます。各プレイヤーのニックネームは "プレイヤー1" 、 "プレイヤー2" など id_in_group
に基づいて表示されます。
ニックネームとチャットルームのメンバーをカスタマイズする¶
あなたは channel
および/または nickname
をこのように指定できます:
{{ chat nickname="abc" channel="123" }}
ニックネーム¶
nickname
はチャットでそのユーザーに表示されるニックネームです。 {{ chat nickname=player.role }}
の形で指定されることが多いです。
チャンネル¶
channel
は、チャットルームの名前です。2人のプレイヤーが同じ channel
にいる場合に、お互いにチャットできます。また、 channel
はユーザーインターフェイスには表示されず、内部で使用されるだけです。デフォルト値は group.id
となっています。この場合、グループ内のすべてのプレイヤーが一緒にチャットすることができます。チャットを現在のページまたはグループのサブディビジョンなどにスコープする代わりに、 channel
を使用できます(以下の例を参照)。 channel
の値に関係なく、チャットは少なくとも同じセッションと同じアプリのプレイヤーにスコープされます。
例: 役割ごとのチャット¶
これは、グループ内のコミュニケーションの代わりに、役割に基づいてグループ間でコミュニケーションをとる例です。たとえば、すべての買い手が互いに話し、すべての売り手が互いに話すことができます。
def chat_nickname(player):
group = player.group
return 'Group {} player {}'.format(group.id_in_subsession, player.id_in_group)
ページ内:
class MyPage(Page):
@staticmethod
def vars_for_template(player):
return dict(
nickname=chat_nickname(player)
)
テンプレート内:
{{ chat nickname=nickname channel=player.id_in_group }}
例: ラウンドの違いに関係なくチャットする¶
現在別のラウンドにいるプレイヤーとチャットする必要がある場合は、次のことができます。
{{ chat channel=group.id_in_subsession }}
例: すべてのラウンドのすべてのグループ間でチャット¶
セッションの全員がお互いに自由にチャットできるようにしたい場合は、次のようにします。
{{ chat channel=1 }}
(番号1は重要ではありません。重要なのは、それがすべての人にとって同じ値であるということです。)
高度なカスタマイズ¶
ブラウザのインスペクタでページのソースコードを見ると、 otree-chat__
で始まるクラスがたくさんあります。
CSSまたはJSを使用して、これらの要素の外観や動作を変更できます(または完全に非表示にできます)。
<div>
の中にコードを挿入し、その親 の``<div>`` をスタイリングすることで、外観をカスタマイズすることもできます。たとえば、幅を設定するには:
<div style="width: 400px">
{{ chat }}
</div>
1ページに複数のチャット¶
各ページに複数の {{ chat }}
を配置することで、プレイヤーは複数のチャネルに同時に参加することができます。