weallwegot
(juicecounty.prodigy)
1
一个主题组件,包含可点击的社交媒体图标,适用于用户个人资料和用户卡片(如果您正在使用 用户卡片目录主题组件)。
该组件 99% 的内容复制自 @LeoMcA 在本 Meta 讨论 链接自定义用户字段到外部网站 中提供的讨论和代码示例,以及 Namati 用户卡片个人资料主题。不过,我认为将其从帖子中提取出来并使其更具通用性会更有用。
注意事项
- 任何未为某项条目提供值的用户,其用户卡片/个人资料上将不会显示对应的图标。
- Instagram 和 Twitter 的自定义用户字段仅期望填写用户名(不包含"@"),名称会自动附加到基础 URL 上。
- 我建议将带有图标的自定义用户字段设置为不在用户卡片上显示,因为同时显示文本和可点击的图标会显得有些冗余。这只是个人建议,主题组件不会自动隐藏它们。
站点设置
每个自定义字段名称条目应与您在 Discourse 实例中设置的自定义用户字段名称保持一致。默认情况下,该主题组件期望字段名称如下所示,但您当然可以更改它们。字符串区分大小写。
instagram_custom_field_name: 'Instagram'
twitter_custom_field_name: 'Twitter'
linkedin_custom_field_name: 'LinkedIn Profile'
祝您使用愉快!
39 个赞
干得漂亮!我看到的唯一问题是头像徽章因此下移了。树形图标应该与我的头像重叠。
7 个赞
weallwegot
(juicecounty.prodigy)
3
啊,谢谢你的测试和发现这个问题。
我想我的社区里没有任何徽章,
我看了你的,我觉得是图标的大小让卡片变大了。我不是 CSS 专家,但我想我可能需要为有图标的用户条件性地应用一个头像边距。
5 个赞
请注意,消息按钮和背景也会随之移动。我通过此方法修正了所有问题,但确实需要条件性地应用这些样式。
#user-card.no-bg .card-content {
margin-top: 0px;
}
.user-card-avatar .avatar-flair.rounded, .user-profile-avatar .avatar-flair.rounded {
bottom: 19px;
}
#user-card .usercard-controls {
margin-top: 0px !important;
}
3 个赞
bartv
(Bart )
5
与 Follow 插件 存在不兼容问题:此主题分类(TC)在我登录时工作正常,但当我以匿名用户身份访问网站时,用户卡片和用户个人资料页面出现异常。
更新:这与社交图标链接的主题分类无关。我将在 Follow 插件的话题中报告此问题。
在 /logs 中我看到:
NoMethodError (undefined method id' for nil:NilClass) /var/www/discourse/plugins/discourse-follow/plugin.rb:74:in block (2 levels) in activate!’
cc @angus
我很喜欢这个!我唯一的问题是字段名称和 URL 除了图标外,还会显示在卡片和个人资料中。如何隐藏字段/URL 的文本部分?
谢谢,
Ray
1 个赞
weallwegot
(juicecounty.prodigy)
7
嘿,好的,谢谢你试用
我刚刚在自定义字段下取消勾选了“在用户卡片上显示?”选项
1 个赞
weallwegot
(juicecounty.prodigy)
8
谢谢,是的,我也得出了同样的结论。不过我还没完全搞明白条件样式的应用,抱歉。我会试着找一位在这方面更有经验的人。
1 个赞
weallwegot
(juicecounty.prodigy)
11
是的,现在应该已经更新了。我直接添加了名称。你可以在这里看到:
4 个赞
bartv
(Bart )
12
运行效果非常好,但我注意到您硬编码了 YouTube 频道的使用方式。有些人可能更倾向于输入用户名(因为有些用户并没有频道)。我认为,如果允许用户直接输入 YouTube 链接,而不是频道名或用户名,体验会更好。
关于 Instagram 和 Twitter 字段的另一个想法:尽管已经添加了说明,提示用户只需在这些个人资料字段中输入用户名,但仍有不少人直接输入完整的 URL——我想在很多网站上,这种做法更为常见。这让我想到:您是否可以检测值中是否包含 ‘https://’,如果是,就不再为其添加 URL 基础路径?这样会让处理过程更加宽容和稳健。
2 个赞
weallwegot
(juicecounty.prodigy)
13
太好了,我已经采纳了这个建议,现在应该能同时处理这两种类型的输入了。
不幸的是,我不太清楚 YouTube 上“频道”和“用户资料”之间的区别。你建议 YouTube 的基础 URL 应该是什么?只是 https://youtube.com/ 吗?
2 个赞
bartv
(Bart )
14
我认为有分别指向频道和用户的 /c/ 和 /u/ 链接。老实说,我觉得最好的办法就是让用户直接输入 URL,没必要做得太花哨?
4 个赞
weallwegot
(juicecounty.prodigy)
15
啊,确实,我会移除 YouTube 链接的“基础 URL”功能,这样用户就可以像 LinkedIn 那样输入完整的链接。感谢建议,已更新。
3 个赞
Solari
17
这里是新手 – 我尝试自定义 CSS 来更改图标的字体颜色,因为我使用的是深色主题,但无法生效。
我看到类名是 iconic-user-fields,我猜是这样。我尝试更改该类的颜色,甚至加了 !important,但都没有效果。
有什么建议吗?
谢谢!
Ray
1 个赞
weallwegot
(juicecounty.prodigy)
18
非常抱歉回复得如此迟,希望您在此期间已经找到了解决方法。
我添加了一个新设置,允许您在主题配置面板中选择图标颜色。因此,您现在可以将其更改为白色或其他与深色主题更兼容的颜色。该功能现已可用!
2 个赞
renato
(Renato Atilio)
19
首先,感谢这个主题组件
我已在社区中启用,效果很不错。
不知是否还有其他人遇到这个问题,但在启用该主题组件后,移动端的用户卡片出现了部分重叠:
我使用了以下 CSS 作为移动端的临时解决方案,使卡片在没有提供社交链接时能保持与之前相同的样式:
.iconic-user-fields {
padding-bottom: 0 !important;
}
#user-card {
.usercard-controls {
margin-top: 1em !important;
}
}
这可能不是通用的解决方案,但在我们社区的相关场景下已经生效了。
1 个赞
renato
(Renato Atilio)
21
我不确定这是否与最近的某些核心更改有关:如果登录我的账户,用户卡片上会显示链接;但如果未登录(我正在使用匿名标签页测试),控制台会输出错误,因为在 这一行 userFields 未定义。在这种情况下,用户卡片仅显示头像和用户名,没有其他内容。
如果我在首次使用 userFields 之前检查其是否存在,就像我在 这里 测试的那样,卡片会完整显示,但社交图标链接不会出现。
其他人也遇到这个问题吗?
1 个赞