作者:翔英建辉千慧 | 来源:互联网 | 2023-08-16 13:03
有项目中,在测试阶段一般文件都上传目录都在服务器目录下,例如根目录下的uploads文件夹,
一般来说,在模板中引用一般这样写,例如:
![](__ROOT__/uploads/ad/{$item.config.shop_image})
如果以后升级oss的话将会替换大量的src,如果定义一个__UPLOAD__
![](__UPLOAD__/ad/{$item.config.shop_image})
将来升级的时候(例如OSS)替换既可以
单这样做模板不解析,为了解析,我们需要修改文件
ThinkPHP\Library\Behavior\CronRunBehavior.class.php
将数组新增一个
// +----------------------------------------------------------------------
namespace Behavior;
/**
* 系统行为扩展:模板内容输出替换
*/
class ContentReplaceBehavior {
// 行为扩展的执行入口必须是run
public function run(&$content){
$cOntent= $this->templateContentReplace($content);
}
/**
* 模板内容替换
* @access protected
* @param string $content 模板内容
* @return string
*/
protected function templateContentReplace($content) {
// 系统默认的特殊变量替换
$replace = array(
'__ROOT__' => __ROOT__, // 当前网站地址
'__APP__' => __APP__, // 当前应用地址
'__MODULE__' => __MODULE__,
'__ACTION__' => __ACTION__, // 当前操作地址
'__SELF__' => htmlentities(__SELF__), // 当前页面地址
'__CONTROLLER__'=> __CONTROLLER__,
'__URL__' => __CONTROLLER__,
'__PUBLIC__' => __ROOT__.'/Public',// 站点公共目录
'__UPLOAD__' => __ROOT__.'/uploads',// 文件上传目录
);
// 允许用户自定义模板的字符串替换
if(is_array(C('TMPL_PARSE_STRING')) )
$replace = array_merge($replace,C('TMPL_PARSE_STRING'));
$cOntent= str_replace(array_keys($replace),array_values($replace),$content);
return $content;
}
}
即可