MW-FlowThread icon indicating copy to clipboard operation
MW-FlowThread copied to clipboard

能否支持SocialProfile的头像

Open Aira-Sakuranomiya opened this issue 5 years ago • 9 comments

如题

Aira-Sakuranomiya avatar Oct 14 '20 14:10 Aira-Sakuranomiya

SocialProfile 的 Avatar URL 格式是什么?

nbdd0121 avatar Oct 14 '20 23:10 nbdd0121

不是很懂... 但是这里有文档 https://www.mediawiki.org/wiki/Extension:SocialProfile/Technical_documentation https://www.mediawiki.org/wiki/Extension:SocialProfile/Developer_information

Aira-Sakuranomiya avatar Oct 15 '20 05:10 Aira-Sakuranomiya

QQ截图20210418153132 我看到了别的插件如果调用SocialProfile头像的话是这么写的

Aira-Sakuranomiya avatar Apr 18 '21 07:04 Aira-Sakuranomiya

自己改一下代码就行了, SocialProfile的头像命名规律在官方文档里有提到:维基前缀_用户ID_[l或m或s](如testwiki_1_l)如下图:。 image

本插件的头像获取函数在./assets/common.js中,如下: function getAvatar(id, username) { if (id === 0) { return config.AnonymousAvatar; } else { return config.Avatar.replace(/\$\{username\}/g, username); } } id就是获取的用户id,config.AnonymousAvatar就是从你Localsettings里设置的头像url。 因此,只需要将else后的return值改一下就行,改成: return config.Avatar+"你的维基前缀,可以去SocialProfile头像保存目录查看_"+id+"_l.png"

同时将你的LocalSettings里的设置进行更改即可 $wgFlowThreadConfig['Avatar']='https://你的网站网址/你的SocialProfile头像保存目录'; 比如我的avatar保存在“/images/avatars”,那就改为 $wgFlowThreadConfig['Avatar']='https://网站网址/images/avatars'; 即可

以上是我的解决方案,已经测试可用,但是还有个问题:如果是注册用户,但是没有上传头像,那么就无法读取他的头像而无法显示。 附我自己更改后的代码和settings: function getAvatar(id, username) { if (id === 0) { return config.AnonymousAvatar; } else { // return config.Avatar.replace(/\$\{username\}/g, username); return config.Avatar+"my_wiki_"+id+"_l.png" } }

#评论 wfLoadExtension('FlowThread'); $wgFlowThreadConfig['Avatar']='http://www.wmuwiki.com/medf/images/avatars/'; $wgFlowThreadConfig['AnonymousAvatar']='http://www.wmuwiki.com/medf/images/avatars/my_wiki_1_l.png?r=1636377670';

EROMANGAG avatar Nov 21 '21 10:11 EROMANGAG

自己改一下代码就行了, SocialProfile的头像命名规律在官方文档里有提到:维基前缀_用户ID_[l或m或s](如testwiki_1_l)如下图:。 image

本插件的头像获取函数在./assets/common.js中,如下: function getAvatar(id, username) { if (id === 0) { return config.AnonymousAvatar; } else { return config.Avatar.replace(/\$\{username\}/g, username); } } id就是获取的用户id,config.AnonymousAvatar就是从你Localsettings里设置的头像url。 因此,只需要将else后的return值改一下就行,改成: return config.Avatar+"你的维基前缀,可以去SocialProfile头像保存目录查看_"+id+"_l.png"

同时将你的LocalSettings里的设置进行更改即可 $wgFlowThreadConfig['Avatar']='https://你的网站网址/你的SocialProfile头像保存目录'; 比如我的avatar保存在“/images/avatars”,那就改为 $wgFlowThreadConfig['Avatar']='https://网站网址/images/avatars'; 即可

以上是我的解决方案,已经测试可用,但是还有个问题:如果是注册用户,但是没有上传头像,那么就无法读取他的头像而无法显示。 附我自己更改后的代码和settings: function getAvatar(id, username) { if (id === 0) { return config.AnonymousAvatar; } else { // return config.Avatar.replace(/\$\{username\}/g, username); return config.Avatar+"my_wiki_"+id+"_l.png" } }

#评论 wfLoadExtension('FlowThread'); $wgFlowThreadConfig['Avatar']='http://www.wmuwiki.com/medf/images/avatars/'; $wgFlowThreadConfig['AnonymousAvatar']='http://www.wmuwiki.com/medf/images/avatars/my_wiki_1_l.png?r=1636377670';

你好,我试了后发现有个问题,就是只能使用一个格式。 写jpg只能引用jpg,png的头像就404

BlackWhite2000 avatar Dec 26 '21 09:12 BlackWhite2000

这是来自QQ邮箱的假期自动回复邮件。

    你好,我最近正在休假中,无法亲自回复你的邮件。我将在假期结束后,尽快给你回复。

RTR-RDD avatar Dec 26 '21 09:12 RTR-RDD

自己改一下代码就行了, SocialProfile的头像命名规律在官方文档里有提到:维基前缀_用户ID_[l或m或s](如testwiki_1_l)如下图:。 image 本插件的头像获取函数在./assets/common.js中,如下: function getAvatar(id, username) { if (id === 0) { return config.AnonymousAvatar; } else { return config.Avatar.replace(/\$\{username\}/g, username); } } id就是获取的用户id,config.AnonymousAvatar就是从你Localsettings里设置的头像url。 因此,只需要将else后的return值改一下就行,改成: return config.Avatar+"你的维基前缀,可以去SocialProfile头像保存目录查看_"+id+"_l.png" 同时将你的LocalSettings里的设置进行更改即可 $wgFlowThreadConfig['Avatar']='https://你的网站网址/你的SocialProfile头像保存目录'; 比如我的avatar保存在“/images/avatars”,那就改为 $wgFlowThreadConfig['Avatar']='https://网站网址/images/avatars'; 即可 以上是我的解决方案,已经测试可用,但是还有个问题:如果是注册用户,但是没有上传头像,那么就无法读取他的头像而无法显示。 附我自己更改后的代码和settings: function getAvatar(id, username) { if (id === 0) { return config.AnonymousAvatar; } else { // return config.Avatar.replace(/\$\{username\}/g, username); return config.Avatar+"my_wiki_"+id+"_l.png" } } #评论 wfLoadExtension('FlowThread'); $wgFlowThreadConfig['Avatar']='http://www.wmuwiki.com/medf/images/avatars/'; $wgFlowThreadConfig['AnonymousAvatar']='http://www.wmuwiki.com/medf/images/avatars/my_wiki_1_l.png?r=1636377670';

你好,我试了后发现有个问题,就是只能使用一个格式。 写jpg只能引用jpg,png的头像就404

确实。。。这个我也不知道咋搞毕竟这个办法也是治标不治本,根本解决办法还是得弄到头像的url,但找了半天都没找到这个api。所以我现在只能把socialprofile 头像上传的文件限制为了png

EROMANGAG avatar Dec 26 '21 10:12 EROMANGAG

本插件的头像获取函数在./assets/common.js中,如下: function getAvatar(id, username) { if (id === 0) { return config.AnonymousAvatar; } else { return config.Avatar.replace(/\$\{username\}/g, username); } } id就是获取的用户id,config.AnonymousAvatar就是从你Localsettings里设置的头像url。 因此,只需要将else后的return值改一下就行,改成: return config.Avatar+"你的维基前缀,可以去SocialProfile头像保存目录查看_"+id+"_l.png"

同时将你的LocalSettings里的设置进行更改即可 $wgFlowThreadConfig['Avatar']='https://你的网站网址/你的SocialProfile头像保存目录'; 比如我的avatar保存在“/images/avatars”,那就改为 $wgFlowThreadConfig['Avatar']='https://网站网址/images/avatars'; 即可

以上是我的解决方案,已经测试可用,但是还有个问题:如果是注册用户,但是没有上传头像,那么就无法读取他的头像而无法显示。 附我自己更改后的代码和settings: function getAvatar(id, username) { if (id === 0) { return config.AnonymousAvatar; } else { // return config.Avatar.replace(/\$\{username\}/g, username); return config.Avatar+"my_wiki_"+id+"_l.png" } }

#评论 wfLoadExtension('FlowThread'); $wgFlowThreadConfig['Avatar']='http://www.wmuwiki.com/medf/images/avatars/'; $wgFlowThreadConfig['AnonymousAvatar']='http://www.wmuwiki.com/medf/images/avatars/my_wiki_1_l.png?r=1636377670';

我加了一个 ${userid} 的替换,现在应该可以直接写

$wgFlowThreadConfig['Avatar']='http://www.wmuwiki.com/medf/images/avatars/my_wiki_${userid}_l.png';

关于文件格式和默认头像的问题,由于 FlowThread 是直接前端合成 URL,这个比较麻烦,可以考虑给服务器用的 http server 加几条 rule。比如如果 nginx 的话可以:

location /images/avatars {
	try_files $uri.png $uri.jpg default.png;
}

Apache 的话用 RewriteRule 应该也能做到类似效果

nbdd0121 avatar Dec 26 '21 20:12 nbdd0121

我在解决文件格式和默认头像时候遇到了头像不重定向问题,最后终于解决了。 在这里备注下以方便后面跟我遇到一样问题的人。 因为我使用的伪静态

location ~ ^\/.+$ {
if ($request_uri ~ ^/images) { break; }
if ($request_uri ~ ^/resources) { break; }
if ($request_uri ~ ^/index\.php) { break; }
rewrite ^/(.+)$ /index.php?title=$1 last;
}

使用后,mediawiki会将静态资源的调用路径都当成创建页面的名称。 即使使用了 access_log off; try_files也无法重定向

最后我将伪静态代码改为

location / {  
try_files $uri $uri/ /index.php$is_args$query_string;  
}  

就解决了所有问题,静态资源也不再需要使用access_log off;

BlackWhite2000 avatar Dec 28 '21 11:12 BlackWhite2000