升级wellcms2.2之后attach_on开启后的头像,缩略图链接处理
2.1的代码就不贴了 有兴趣的自己对比下
// 后台处理头像或主题缩略图、自定义图标
function admin_access_file($icon = 0, $icon_fmt = '')
{
global $conf;
if (empty($icon_fmt)) return $icon_fmt;
$local = FALSE;
// 本地未分离
if ($icon) {
// 上传文件
if (0 == $conf['attach_on']) $local = TRUE;
} else {
// icon 默认图片,view 目录
if ('view/' == $conf['view_url']) $local = TRUE;
}
if ($local) {
// 伪静态 1 追加 ../ 伪静态 2 追加 ..
$icon_fmt = $conf['url_rewrite_on'] < 2 ? '../' . $icon_fmt : '..' . $icon_fmt;
}
return $icon_fmt;
}
先看这一段.
可以理解为只处理0 == $conf['attach_on']的部分
所以头像 缩略图,图标会失效
// 后台访问view目录下文件路径/支持分离
function admin_view_path()
{
static $path = array();
if (isset($path['admin_view_path'])) return $path['admin_view_path'];
$conf = _SERVER('conf');
$path['admin_view_path'] = 'view/' == $conf['view_url'] ? '../' . $conf['view_url'] : $conf['view_url'];
return $path['admin_view_path'];
}
再看这一段
// 附件路径/支持分离 $attach_on 为传入标识,默认不传入读取$conf['attach_on']
function file_path($attach_on = NULL)
{
$conf = include APP_PATH . 'conf/conf.php';
if ($attach_on && $conf['attach_on']) {
if ($attach_on == $conf['attach_on']) {
// 云储存
$path = $conf['cloud_url'] . $conf['upload_url'];
} else {
// 本地
$path = $conf['url_rewrite_on'] > 1 ? $conf['path'] . $conf['upload_url'] : $conf['upload_url'];
}
} else {
// 本地
$path = $conf['url_rewrite_on'] > 1 ? $conf['path'] . $conf['upload_url'] : $conf['upload_url'];
}
return $path;
}
这一段.
// 前台访问view目录下文件路径/支持分离
function view_path()
{
static $path = array();
if (isset($path['view_path'])) return $path['view_path'];
$conf = _SERVER('conf');
$conf_path = $conf['url_rewrite_on'] > 1 ? $conf['path'] : '';
$path['view_path'] = $conf_path . $conf['view_url'];
return $path['view_path'];
}
有没有发现什么?
是不是总感觉哪里怪怪的?
再开看调用
$user['avatar_url'] = $user['avatar'] ? file_path() . "avatar/$dir/$user[uid].png?" . $user['avatar'] : view_path() . 'img/avatar.png';
怎么样
是不是更怪了
到这里大概也都弄清楚了.
就不过多剖析作者的心理历程了.
说下解决方案
修改配置文件
当伪静态模式为1的时候(我想大部分用户都是1)
attach_on为0则不需要更改
attach_on=1或attach_on=2的时候则需要用完整路径(相对完整或绝对路径)
'view_url' => '/view/',
'upload_url' => '/upload/',
改成这样既可兼容前后台或者加上域名使用完整绝对路径
这样既可跳过检测达到修复的目的
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片??
- 钛宇宙
0条评论