dedecms模板中的标签开发和拓展

2012-01-02 23:17 来源:www.chinab4c.com 作者:dedecms专家

    在dedecms的模板中。我们常常可以看到dedecms模板中很多时候标签根本是不够用的。为了更加方便的调用dede的数据库,而又不需要对原始的dedecms标签做大的修改和调整。我们可以自己根据自己的需要。来对dedecms的模板标签进行扩展。

    首先dedecms模板的模板标签在include/taglib目录中。文件的名称和dedecms标签的名称相同。为比如标签为mm,那么我们的标签对应的文件名称必须是mm.lib.php。标签的函数名称为function lib_mm(&$ctag , &$refObj)。

   1:首先我们定义数据库操作对象global $dsql;

   2:我们定义标签内置的参数,$l = "limit|2";他是以逗号隔离的,参数名和参数值用"|"隔离。

   3:FillAttsDefault($ctag->CAttribute->Items , $l);将内置的参数传到$ctag对象,进行初始化。extract($ctag->CAttribute->Items),通过这个处理,可以单独调用某个参数。

   4:获取当前调用该标签的参数名称,$innertext = trim($ctag->GetInnerText());

   5:声明模板处理对象,方便对模板进行操作。

    $ctp = new DedeTagParse();
    $ctp->SetNameSpace('field','[',']');
    $ctp->LoadSource($innertext);

    6:检索该标签要对应的数据库表的数据,然后循环显示.

     while($row = $dsql->GetArray())

   7:循环的将数据库中取得的数据进行赋值。

    foreach($ctp->CTags as $tagid=>$ctag){
            @$ctp->Assign($tagid,$row[$ctag->GetName()]);
        }

   8:返回模板处理后的标签以及数据结果。

   $revalue .= $ctp->GetResult();

  最后return $revalue;

   就这样我们完成了dedecms模板中的标签开发和拓展。

   来源:http://www.chinab4c.com