dede:include filename=""パスの問題:この場所でパスを見つけることができません

1848 ワード

ドリームテンプレートDEDECMS
まずコードを見てください.ファイルディレクトリは次のとおりです.
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) )	//       DEDEROOT."/templets/"
        {
            $okfile = DEDEROOT."/templets/".$filename;
        }
        else if(file_exists(DEDEROOT.'/templets/'.$cfg_df_style.'/'.$filename) )	//      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は2つの経路を判断する:1つはtemplets/の下の経路である;1つは、システムのデフォルトテンプレートのパスdefaultです.
パスがこの2つのパスでない場合、この場所でこのファイルを見つけることができません.解決方法は2つあります.1つは、ここに判断を追加することです.もう1つは、文書の規定に従って、文書の規定に合致する経路を書くことで解決できる.
参考ページ:http://blog.sina.com.cn/s/blog_66a0738b0100l7lu.html