源于生活
标题:
无法在这个位置找到: {dede:include filename="(
[打印本页]
作者:
kevin-ying
时间:
2014-3-5 22:40
标题:
无法在这个位置找到: {dede:include filename="(
织梦模板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;
}
复制代码
作者:
kevin-ying
时间:
2014-3-5 22:41
首先看代码:文件目录为:
dede安装根目录/include/dedetag.class.php
/**
* 引入文件
*
* @access public
* @param string $filename 文件名
* @param string $ismake 是否需要编译
* @return string
*/
function IncludeFile($filename, $ismake='no')
{
global $cfg_df_style;
$restr = '';
if($filename=='')
{
return '';
}
if( file_exists(DEDEROOT."/templets/".$filename) )<span style="white-space:pre"> </span>//默认的根目录为DEDEROOT."/templets/"
{
$okfile = DEDEROOT."/templets/".$filename;
}
else if(file_exists(DEDEROOT.'/templets/'.$cfg_df_style.'/'.$filename) )<span style="white-space:pre"> </span>//默认根目录为default下的路径即:DEDEROOT."/templets/default/"
{
$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;
}
}
复制代码
由以上代码可以得知:dede:include 判断两种路径:一种是以templets/下的路径;一种是系统默认模板的路径default。
如果设置路径非这两种路径,就显示无法在这个位置找到这个文件:解决方式有两种:一种是在这里再添加一种判断;另外一种是根据文件的规定,写出符合文件规定的路径方式就可以解决。
欢迎光临 源于生活 (http://bbs.vingoo.info/)
Powered by Discuz! X3.1