Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

能否支持SocialProfile的头像 #58

Open
Aira-Sakuranomiya opened this issue Oct 14, 2020 · 9 comments
Open

能否支持SocialProfile的头像 #58

Aira-Sakuranomiya opened this issue Oct 14, 2020 · 9 comments

Comments

@Aira-Sakuranomiya
Copy link
Contributor

如题

@nbdd0121
Copy link
Owner

SocialProfile 的 Avatar URL 格式是什么?

@Aira-Sakuranomiya
Copy link
Contributor Author

@Aira-Sakuranomiya
Copy link
Contributor Author

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

@EROMANGAG
Copy link

EROMANGAG commented Nov 21, 2021

自己改一下代码就行了,
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';

@BlackWhite2000
Copy link

自己改一下代码就行了, 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

@RTR-RDD
Copy link

RTR-RDD commented Dec 26, 2021 via email

@EROMANGAG
Copy link

自己改一下代码就行了, 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

@nbdd0121
Copy link
Owner

本插件的头像获取函数在./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 应该也能做到类似效果

@BlackWhite2000
Copy link

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

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;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants