国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > 織夢DEDE > 正文

dedecms源代碼深入研究(3)partview的迷惑

2024-07-12 08:43:55
字體:
供稿:網(wǎng)友

之前,我們像掉進(jìn)沼澤一樣,看到無盡的變量,數(shù)組元素,莫名其面的東西擺在我們面前。今天,我們繼續(xù)艱難前行,想辦法走出partview類的泥潭。

上一篇,我們胡亂分析了partview類,完全搞不懂干什么的,里面弄了一堆變量,最清晰的我們只是知道幾個生成首頁的關(guān)鍵地方調(diào)用了 DedeTagParse類的LoadTemplet方法和SaveTo方法。而在partview類定義的文件頭部,包含了幾個文件,我們就避開 partview,先來看看這幾個包含的文件吧。

1 require_once(DEDEINC.'/channelunit.class.php');

2 require_once(DEDEINC.'/typelink.class.php');

3 require_once(DEDEINC.'/ftp.class.php');

ftp.class.php,不用說,就是ftp相關(guān)操作類吧,我們之前看partview代碼的時候,了解到,在生成靜態(tài)文件的時候,使用了 ftp相關(guān)方法,貌似就是可以遠(yuǎn)程寫文件滴。至于怎么操作FTP的,其實就是封裝了php函數(shù)庫中ftp開頭的相關(guān)函數(shù)而已,代碼很簡單,不說了。

typelink.class.php,我們也在partview代碼里面見過的,打開看看吧。大概看了一下代碼,里面是type的鏈接相關(guān)的東西,每個方法都聲稱一個指定type的鏈接html字符串。

其實,我有點隱約感覺到在dedecms中,type就是指欄目,不知道是不是這樣。

再來看看channelunit.class.php吧。

里面是ChannelUnit類的定義,而且我們發(fā)現(xiàn),這個ChannelUnit類沒有被使用過。所以先不去看他。我們注意到,這里面還加載了兩個文件:

1 require_once(DEDEINC."/dedetag.class.php");

2 require_once(DEDEINC."/channelunit.func.php");

dedetag.class.php,打開看看,嗯,很復(fù)雜,但我們發(fā)現(xiàn)用于解析模板和生成文件的DedeTagParse類在里面,呵呵,先記住,以后慢慢研究。

channelunit.func.php里面都什么函數(shù)呢?打開一看,嗯,一堆變量,幾個獲取這種信息的函數(shù),在我們?yōu)g覽過程中,發(fā)現(xiàn)了兩個函數(shù):MfTemplet和MakeOneTag

注意:

新版本的dedecms這兩個函數(shù)已經(jīng)換到channelunit.helper.php里面了!

我們知道,在index.php中就用了MfTemplet函數(shù),回頭打開index.php看看怎么調(diào)用的:

$row['templet'] = MfTemplet($row['templet']);

我們之前了解過,$row['templet']保存的是default/index.htm這個值,就是模板文件路徑。接下來我們看看MfTemplet函數(shù)都做了什么吧。

//模板目錄規(guī)則

  1.  function MfTemplet($tmpdir
  2.  { 
  3.   $tmpdir = str_replace("{style}",$GLOBALS['cfg_df_style'],$tmpdir); 
  4.   $tmpdir = ereg_replace("/{1,}","/",$tmpdir); 
  5.   return $tmpdir
  6.  } 

注釋里面寫的是“模板目錄規(guī)則”,再看看代碼,哦,仿佛明白了一點兒了,就是替換模板路徑里面的{style}為全局變量$GLOBALS['cfg_df_style']中的值。應(yīng)該跟使用不同模板套系有關(guān)吧。意義不是很大就不再繼續(xù)研究了。

我們看另一個函數(shù)MakeOneTag,這個在partview類的ParseTemplet方法中,此方法看名字就是解析模板,而方法的大部分代 碼都是在處理變量,看不大懂干什么的,最后一句調(diào)用了MakeOneTag函數(shù)。貌似主要解析模板就是靠這個函數(shù)了。使用如下:

MakeOneTag($this->dtp,$this);

第一個參數(shù)是DedeTagParse類的實例,第二個參數(shù)就是partview類實例的句柄啦。

我們看看channelunit.func.php中這個函數(shù)是干什么的吧。

嗯,只能大概看,因為好多東西,我們都不清楚啊,郁悶了。

這里面遍歷了/include/taglib/下所有有l(wèi)ib后綴的文件,并把文件路徑加入數(shù)組,然后對DedeTagParse類的CTag進(jìn)行了遍歷

  1. if(in_array($tagname,$alltags)) 
  2.         $filename = DEDEINC.'/taglib/'.$tagname.'.lib.php'
  3.         include_once($filename); 
  4.        $funcname = 'lib_'.$tagname
  5.        $dtp->Assign($tagid,$funcname($ctag,$refObj)); 

由于我們沒有研究DedeTagParse類,所以這塊暫時不懂呢,不過也算小有進(jìn)展了。看來還得回到partview里面去重新看看了。

構(gòu)造函數(shù)沒什么特別的,就是創(chuàng)建了DedeTagParse類實例,進(jìn)行了一些設(shè)置而已。我們知道index.php創(chuàng)建partview實例后執(zhí)行了SetTemplet方法,我們再看看SetTemplet方法吧。

這里面調(diào)用了DedeTagParse類實例的LoadTemplet方法,看來我們就得從這里入手,去抽絲剝繭啦。

分析不下去了~

留幾個疑問下次再說。

1)DedeTagParse類LoadTemplet方法說開去。

2)MakeOneTag到底在搞什么。

看來只有徹底先把DedeTagParse類LoadTemplet方法搞懂才能進(jìn)一步啊,目前還是一頭霧水。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 北安市| 冷水江市| 泊头市| 江陵县| 佛山市| 湘潭市| 洛扎县| 镇雄县| 宁国市| 望都县| 萨迦县| 闽清县| 长武县| 清流县| 册亨县| 双江| 万载县| 开远市| 泰安市| 荃湾区| 蓬莱市| 田阳县| 林口县| 镶黄旗| 海阳市| 娄烦县| 汉阴县| 安西县| 永修县| 武安市| 额敏县| 平果县| 青岛市| 镇坪县| 青龙| 名山县| 九龙城区| 利川市| 桂东县| 十堰市| 会泽县|