金沙ag真人网站: ag真人视讯借口

當前位置: ag真人视讯借口 > 網絡干貨 > 網站建設經驗 >

解決{dede:include filename=''/}引入其他目錄文件未找

ag真人视讯借口 www.qvjdo.icu 發表日期:2017-08-03 13:16 文章編輯:網瀚科技 瀏覽次數: 標簽: ag真人视讯借口 ? ?

      目前最好用的一款PHPCMS《dedecms》,相信很多同學都在學習使用。期間也遇到了很多問題,比如我們今天要解決的是:一個標簽{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;
 }
       ?然后在,其中復制粘貼紅色加粗部分就可以實現全站調用了喔。怎么樣,你實現了嗎?

如沒特殊注明,轉載請注明來自//www.qvjdo.icu/
相關新聞
时时彩计划软件哪个准 亲朋棋牌二人麻将外挂 捕鱼达人2经典版1.2.5 重庆时时开奖直播app 今晚七星彩开奖号码是 3d技巧规律论坛 11选5前二万能码 阿拉德之怒mg平台下载 北京塞车开奖结果直播 七星彩预测qq群 3d100% 绝杀三码的方法 pt电子游戏会让你赢么 广东时时计划 pk10定码计划软件 通比牛牛出牛牛规律 重庆时时彩五星走势