|
织梦模板include插入非模板目录文件出现“无法在这个位置找到”错误的解决办法
以下是dede V55_UTF8
查dede include标签手册
(3) include 引入一个文件,形式为:
- {dede:include file='文件名称' ismake='是否为dede板块模板(yes/no)'/}
复制代码
对文件的搜索路径为顺序为:绝对路径、include文件夹,CMS安装目录,CMS主模板目录
其实根本不是这个样子的,如果你要引用一个其它目录的东西如:
- {dede:include filename="/haixiait/template/default/inc_head.htm"/}
复制代码
那么就会返回为空字符串,很显然,并没有对文件进行引用.下面经过改造就可以引用各个目录的文件了.(很简单,下面加粗蓝色字体为修改部分)
文件目录为:dede安装根目录/include/dedetag.class.php 查找
- //引入文件
- function IncludeFile($filename,$ismake='no')
- {
- global $cfg_df_style;
- $restr = '';
- if($filename=='')
- {
- return '';
- }
- if( file_exists(DEDEROOT."/templets/".$filename) )
- {
- $okfile = DEDEROOT."/templets/".$filename;
- }
- else if(file_exists(DEDEROOT.'/templets/'.$cfg_df_style.'/'.$filename) )
- {
- $okfile = DEDEROOT.'/templets/'.$cfg_df_style.'/'.$filename;
- }
- else
- {
- return "无法在这个位置找到: $filename";
- }
- //编译
- if($ismake!="no")
- {
- require_once(DEDEINC."/channelunit.func.php");
- $dtp = new DedeTagParse();
- $dtp->LoadTemplet($okfile);
- MakeOneTag($dtp,$this->refObj);
- $restr = $dtp->GetResult();
- }
- else
- {
- $fp = @fopen($okfile,"r");
- while($line=fgets($fp,1024)) $restr.=$line;
- fclose($fp);
- }
- return $restr;
- }
复制代码
在:
- else
- {
- return "无法在这个位置找到: $filename";
- }
复制代码
之前加上:
- else if(file_exists(DEDEROOT.$filename) )
- {
- $okfile = DEDEROOT.$filename;
- }
复制代码
最后结果为:
- //引入文件
- function IncludeFile($filename,$ismake='no')
- {
- global $cfg_df_style;
- $restr = '';
- if($filename=='')
- {
- return '';
- }
- if( file_exists(DEDEROOT."/templets/".$filename) )
- {
- $okfile = DEDEROOT."/templets/".$filename;
- }
- else if(file_exists(DEDEROOT.'/templets/'.$cfg_df_style.'/'.$filename) )
- {
- $okfile = DEDEROOT.'/templets/'.$cfg_df_style.'/'.$filename;
- }
- else if(file_exists(DEDEROOT.$filename) )
- {
- $okfile = DEDEROOT.$filename;
- }
- else
- {
- return "无法在这个位置找到: $filename";
- }
- //编译
- if($ismake!="no")
- {
- require_once(DEDEINC."/channelunit.func.php");
- $dtp = new DedeTagParse();
- $dtp->LoadTemplet($okfile);
- MakeOneTag($dtp,$this->refObj);
- $restr = $dtp->GetResult();
- }
- else
- {
- $fp = @fopen($okfile,"r");
- while($line=fgets($fp,1024)) $restr.=$line;
- fclose($fp);
- }
- return $restr;
- }
复制代码
|
|