首页 > CMS教程 > DedeCMS > 正文

解决无法在这个位置找到 {dede:include filename=''/}如何引入其他目录文件

2018-04-01 DEDE教程 佚名 点击: 评论
织梦模板include插入非模板目录文件,也就是你要使用这个标签来调用插入非templets目录的文件的时候,刷新前台页面会出现“无法在这个位置找到”错误。

天晟网络小编整理CMS教程 > DedeCMS > 时看到解决无法在这个位置找到 {dede:include filename=''/}如何引入其他目录文件,下面有小编17为你找到的38885相关内容希望对你17有所帮助。

目前最好用的一款PHPCMS《dedecms》,相信很多同学都在学习使用。期间也遇到了很多问题,比如我们今天要解决的是:一个标签{dede:include filename=''/}。

{dede:include filename=''/}如何引入非模板目录的文件

织梦模板include插入非模板目录文件,也就是你要使用这个标签来调用插入非templets目录的文件的时候,刷新前台页面会出现“无法在这个位置找到”错误。要解决这个问题,我们首先要找到关键所在。

我们以dede V55_UTF8为例:我们找到,这个标签的函数在:dede安装根目录/include/dedetag.class.PHP。接下来阅读代码:

  1. /** 
  2.  *  引入文件 
  3.  * 
  4.  * @access    public 
  5.  * @param     string  $filename  文件名 
  6.  * @param     string  $ismake  是否需要编译 
  7.  * @return    string 
  8.  */  
  9. function IncludeFile($filename, $ismake='no')  
  10. {  
  11.     global $cfg_df_style;  
  12.     $restr = '';  
  13.     if($filename=='')  
  14.     {  
  15.         return '';  
  16.     }  
  17.     if( file_exists(DEDEROOT."/templets/".$filename) )<span style="white-space:pre">    </span>//默认的根目录为DEDEROOT."/templets/"  
  18.     {  
  19.         $okfile = DEDEROOT."/templets/".$filename;  
  20.     }  
  21.     else if(file_exists(DEDEROOT.'/templets/'.$cfg_df_style.'/'.$filename) )<span style="white-space:pre">  </span>//默认根目录为default下的路径即:DEDEROOT."/templets/default/"  
  22.     {  
  23.         $okfile = DEDEROOT.'/templets/'.$cfg_df_style.'/'.$filename;  
  24.     }  
  25.     else  
  26.     {  
  27.         return "无法在这个位置找到: $filename";  
  28.     }  
  29.   
  30.     //编译  
  31.     if($ismake!="no")  
  32.     {  
  33.         require_once(DEDEINC."/channelunit.func.php");  
  34.         $dtp = new DedeTagParse();  
  35.         $dtp->LoadTemplet($okfile);  
  36.         MakeOneTag($dtp,$this->refObj);  
  37.         $restr = $dtp->GetResult();  
  38.     }  
  39.     else  
  40.     {  
  41.         $fp = @fopen($okfile,"r");  
  42.         while($line=fgets($fp,1024)) $restr.=$line;  
  43.         fclose($fp);  
  44.     }  
  45.     return $restr;  
  46. }  

好了,我们发现ede:include 判断两种路径:一种是以templets/下的路径;一种是系统默认模板的路径default。因此,你要调用插入非templets目录文件是不行哒。

好,接下来是重点,我们怎么去改:

查dede include标签手册 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 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;
 }
       ​然后在,其中复制粘贴红色加粗部分就可以实现全站调用了喔。怎么样,你实现了吗?

文章转载请注明来自天晟网络 > CMS教程 > DedeCMS >
原文标题:解决无法在这个位置找到 {dede:include filename=''/}如何引入其他目录文件
原文网址:http://www.timsion.com/dedecms/38885.html

关键词:include 引入文件 dedetag

上一篇:织梦dedecms发布文章提示标题不能为空的解决办法
下一篇:最后一页

免责声明:以上内容来自互联网和用户投稿,不代表本站的观点和立场,版权归原作者所有,如有侵权,请与我们联系。