dede自定义tag调用外部数据的方法


摸索了2天之后终于测试成功,为免忘记同让更多人分享,发布在我的日志,欢迎转载,请附本文地址,注明:dede自定义tag调用外部数据的方法,来自...谢谢合作
查找相关文章:dede自定义tag

摸索了2天之后终于测试成功,为免忘记同让更多人分享,发布在我的日志,欢迎转载,请附本文地址,注明:dede自定义tag调用外部数据的方法,来自...谢谢合作

使用这个方法更改了dede的系统核心,所以请先备份。

比如我从phpwind中调用带图片的论坛主题帖子,显示在dedecms的模板中,并截取帖子的长度为10个字(UTF-8为30个字节)

1.我在dedecms中定义一个函数在./include/inc_arcpart_view.php中

我的函数是这样的

[php]
//取得论坛带有图片的帖子
    function pwimage($num=1,$innertext = '') {
        if($num + 0 == 0){$num = 1;}
        if($innertext == "") {$innertext = GetSysTemplets("pwimage.htm");}//如果没有填写规则,则调入默认的规则,pwimage.htm见后面
        $result = $this->dsql->SetQuery("SELECT t.`tid`,t.`subject`,a.`attachurl` FROM `pw_threads` t LEFT JOIN `pw_attachs` a on(t.tid=a.tid) WHERE a.`type`='img' AND a.`needrvrc` = 0 AND t.`fid` NOT IN(5,10,20) ORDER BY t.`tid` DESC LIMIT 0,$num");//设置查询
        $this->dsql->Execute();//执行查询

        $ctp = new DedeTagParse();//新建dede模板解析对象
        $ctp->SetNameSpace("field","[","]");//设置命名空间和分割符号
        $ctp->loadSource($innertext);//载入模板规则
        $revalue = '';//初始化返回值
        while($row = $this->dsql->GetArray()){
            $row['subject'] = cn_substr($row['subject'],30);//截取字符长度
            foreach($ctp->CTags as $tagid=>$ctag){
                @$ctp->Assign($tagid,$row[$ctag->GetName()]);//给模板变量赋值
            }
            $revalue .= $ctp->GetResult();
        }
        unset($ctp);
        return $revalue;//返回
    }
[/php]

2.加入dedetag
函数ParseTemplet的foreach循环中加入
[php]
else if($tagname=="pwimage"){
                $this->dtp->Assign($tagid,$this->pwimage(1,$ctag->GetInnerText()));
//$ctag->GetInnerText()是获取标签内的规则,如果不填写则默认使用系统文件pwimage.htm中的规则
}
[/php]

pwimage.htm位于./templets/system/文件夹下,自己想怎么显示就怎么写,我测试是这样的

[php]
<a href="http://bbs.ningyuanren.com/read-htm-tid-[field:tid/].html" target="_blank" title="[field:subject/]"><img src="http://bbs.ningyuanren.com/attachment/[field:attachurl/]" alt="[field:subject/]" width="160" height="120" border="0" /></a>
[/php]

ok,完成,收工,当然你可以加入更多的参数

在模板中这样写
{dede:pwimage num=1}
<a href="http://bbs.ningyuanren.com/read-htm-tid-[field:tid/].html" target="_blank" title="[field:subject/]"><img src="http://bbs.ningyuanren.com/attachment/[field:attachurl/]" alt="[field:subject/]" width="160" height="120" border="0" /></a>

  • 你可能对这些文章感兴趣