當前位置:首頁 > 技術支持

技術支持

dedecms標簽高級應用(二)
發布時間:2012-6-28  作者:芒果旅行社網站管理系統 MangoCMS   打印  關閉

dede在模板中調用定義好的變量非常簡單,比如調用在文章頁調用文章信息:
<strong>來源:</strong>{dede:field name='source'/}
<strong>作者:</strong>{dede:field name='writer' /}{dede:field name='Ariuid' /}
<strong>時間:</strong>{dede:field name='pubdate' function='GetDateMk(@me)'/}
strong>Tag:</strong>{dede:tag type='current'/}
這樣即可實現,但是這些都是系統定義好的,自然很易調用,但是自己在php中自定義的變量就不好插入模板了。

比如在view.php中插入個變量

$aaa="1111";

怎樣將$aaa的插入模板?這就不好解決了,用{dede:field name='aaa'/} 是不能解決的。

在二次開發中,總有些變量和數組需要插入到模板中,下面給一中解決的方案。

以view.php和inc_archievs_view.php為例子

我想在view.php中調用文章作者個人空間的信息,并在文章頁面的右邊顯示這些信息。

第一步:在view.php中插入以下代碼:

$Ariuid=$arc->Artwriter;
//ADD BY SUNJUN
//用戶信息
$dsql = new DedeSql(false);
$spaceInfos = $dsql->GetOne("Select ID,userid,uname,spacename,spaceimage,mybb,news,sex,c1,c2,spaceshow,logintime,scores From #@__member where id='$Ariuid'; ");
if(!is_array($spaceInfos)){
    ShowMsg("參數錯誤或者用戶已經被刪除!","-1");
    exit();
}

這樣就獲取了作者個人信息的數組$spaceInfos;

第二步:將數組中的變量插入到模板中

這時就不好解決了,因為$spaceInfos不是系統定義好的變量,不能用{dede:field name='***'/}
方式調用數組里面的值,這時需要更改inc_archievs_view.php才能實現用{dede:field name='***'/}方式調用$spaceInfos['mybb']、$spaceInfos['news']等值。

打開inc_archievs_view.php,加入函數
function assign($tpl_var, $value = '')
    {
        if (is_array($tpl_var))
        {
            foreach ($tpl_var AS $key => $val)
            {
                if ($key != '')
                {
                    $this->Fields[$key] = $val;
                }
            }
        }
        else
        {
            if ($tpl_var != '')
            {
                $this->Fields[$tpl_var] = $value;
            }
        }
    }

好了,下面我我們就可以用{dede:field name='***'/}方式調用$spaceInfos['mybb']、$spaceInfos['news']等值了。

實現方法:
步驟一:在在view.php中插入以下代碼:

$Ariuid=$arc->Artwriter;
//ADD BY SUNJUN
//用戶信息
$dsql = new DedeSql(false);
$spaceInfos = $dsql->GetOne("Select ID,userid,uname,spacename,spaceimage,mybb,news,sex,c1,c2,spaceshow,logintime,scores From #@__member where id='$Ariuid'; ");
if(!is_array($spaceInfos)){
    ShowMsg("參數錯誤或者用戶已經被刪除!","-1");
    exit();
}

$arc->assign($spaceInfos);
(注意紅色字)

步驟二:在模板article_article.htm中這樣調用:

作者名:{dede:field name='uname'/} <br/>
作者空間的頭像:<img src={dede:field name='spaceimage'/}></img><br/>
作者空間的鏈接<a href='{dede:field name='memberurl'/}/member_archives.php?uid={dede:field name='userid'/}'>個人原創空間</a

等等,其他字段都可這樣調用。

函數固然簡單,但是這個功能對二次開發來說是非常有用的

亮瞎你先生试玩