POST TIME:2020-03-31 15:24
織夢搜索功能的處理
搜索的模板默認(rèn)是search.htm位于templet -》default目錄下。
我試著在模板下,寫入arclist標(biāo)簽,從而在得到的搜索頁面能夠載入更多的信息。但是,結(jié)果卻不是這樣的,沒有返回任何的搜索結(jié)果,相反像其它的global list pagelist等標(biāo)簽就有返回相應(yīng)的數(shù)據(jù)。我猜想能不能夠使用include標(biāo)簽的。看可不可以返回結(jié)果。因此,我就寫一個頁面。在templets的default目錄下。當(dāng)然也用到arclist標(biāo)簽
{dede:arclist typeid='1'}
[field:title/]
{/dede:arclist}
得到欄目為1的內(nèi)容標(biāo)題。
刷新搜索頁面后,成功返回結(jié)果。因此,我決定看看dedecms的搜索底層處理過程。
/plus/search.php是處理搜索的。
并在頁面中載入require_once(DEDEINC."/arc.searchview.class.php");
順藤摸瓜發(fā)現(xiàn),在searchview類中,
第一 $tempfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']."/".$GLOBALS['cfg_df_style']."/search.htm"; 搜索模板
第二 在display方法中有對list pagelist等的處理,因此,直接在搜索模板的頁面中寫入的list標(biāo)簽處理的有返回結(jié)果。
第三 在DedeTagParse類的display中打印getresult返回的值,而在getresult中發(fā)現(xiàn) $this->AssignSysTag(); 進一步發(fā)現(xiàn)但載入include時,就調(diào)用DedeTagParse類的includefile方法,很好,快有結(jié)果了。最后,在includefile方法中看到
//編譯
if($ismake!="no")
{
require_once(DEDEINC."/channelunit.func.php");
$dtp = new DedeTagParse();
$dtp->LoadTemplet($okfile);
MakeOneTag($dtp,$this->refObj);
$restr = $dtp->GetResult();
}
此刻,通過makeonetag函數(shù),就可以看到通過include標(biāo)簽載入的文件,并對文件的dedecms標(biāo)簽的處理過程了。
通過,這一次,才知道dedecms的標(biāo)簽處理放在include的taglib目錄下。
每日貼出一點知識,就可以多學(xué)會一項技巧!