能否支持SocialProfile的头像
如题
SocialProfile 的 Avatar URL 格式是什么?
不是很懂... 但是这里有文档 https://www.mediawiki.org/wiki/Extension:SocialProfile/Technical_documentation https://www.mediawiki.org/wiki/Extension:SocialProfile/Developer_information
我看到了别的插件如果调用SocialProfile头像的话是这么写的
自己改一下代码就行了,
SocialProfile的头像命名规律在官方文档里有提到:维基前缀_用户ID_[l或m或s](如testwiki_1_l)如下图:。

本插件的头像获取函数在./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';
自己改一下代码就行了, SocialProfile的头像命名规律在官方文档里有提到:维基前缀_用户ID_[l或m或s](如testwiki_1_l)如下图:。
本插件的头像获取函数在./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
这是来自QQ邮箱的假期自动回复邮件。
你好,我最近正在休假中,无法亲自回复你的邮件。我将在假期结束后,尽快给你回复。
自己改一下代码就行了, SocialProfile的头像命名规律在官方文档里有提到:维基前缀_用户ID_[l或m或s](如testwiki_1_l)如下图:。
本插件的头像获取函数在./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
本插件的头像获取函数在./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 应该也能做到类似效果
我在解决文件格式和默认头像时候遇到了头像不重定向问题,最后终于解决了。 在这里备注下以方便后面跟我遇到一样问题的人。 因为我使用的伪静态
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;