聊天¶
你可以在页面上添加一个聊天室,使得参与者之间可以互相交流。
定制昵称与聊天室成员¶
你可以像下面这样指定 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 }}
高级自定义¶
如果你在浏览器中查看了页面的源码,你会发现一系列以 otree-chat__
开头的类。
你可以使用CSS或JS改变这些元素的外观或者行为(或者将它们完全隐藏起来)。
你也可以通过将其放入一个 <div>
并调整这个父 <div>
的样式来定制外观。例如像下面这样设置宽度:
<div style="width: 400px">
{{ chat }}
</div>
同一页面上多个聊天¶
你可以在同一页面上放置多个 {{ chat }}
,这样一名玩家就可以同时处于多个频道中。