dedecms调用discuz论坛信息按照ID分类调用附详细说明
作者:
dedecms调用discuz论坛帖子、图片数据的方法很多人都有需要,大家一起整理了,我这里只有新帖、版块帖子调用方法。精华、回复、图片的调用还没有,请高手补充。
这里说的不是dizcuz后台的js调用方法,那个一是不能很好的按照自己需求排版,二是对搜索引擎不友好。这里要得是loop标签模式。
//获得任意表的内容
function GetTable($tablename="",$row=6,$sort="",$ifcase="",$InnerText=""){
$InnerText = trim($InnerText);
if($tablename==""||$InnerText=="") return "";
$row = AttDef($row,6);
if($sort!="") $sort = " order by $sort desc ";
if($ifcase!="") $ifcase=" where $ifcase ";
$revalue="";
$this->dsql->SetQuery("Select * From $tablename $ifcase $sort limit 0,$row");
$this->dsql->Execute();
$ctp = new DedeTagParse();
$ctp->SetNameSpace("field","[","]");
$ctp->LoadSource($InnerText);
while($row = $this->dsql->GetArray())
{
foreach($ctp->CTags as $tagid=>$ctag){
if(!empty($row[$ctag->GetName()]))
{ $ctp->Assign($tagid,$row[$ctag->GetName()]); }
}
$revalue .= $ctp->GetResult();
}
return $revalue;
}
从上面的代码看出来if里的参数实际就是判断语句,大家可以参考表进行任意输出了
1 论坛最新主题调用方法:
代码
{ dede:loop table="cdb_threads" sort="tid" row="10" }
<a href="/dz/viewthread.php?tid=[field:tid /]">
·[field:subject function="cn_substr(' at me',30)" /]([field:lastpost function="date('m-d H:M','@me')" /])
</a>
<br/>
{ /dede:loop }
2 论坛指定版块调用方法:
{ dede:loop table="cdb_threads" if="fid=1 or fid=2 and displayorder!=-1" sort="tid" row="6" }
<a href="/bbs/viewthread dot php?tid=[field:tid /]" target="_blank">
·[field:subject function="cn_substr(' at me',50)" /]
</a>
<br/>
{ /dede:loop }
3 论坛置顶版块调用方法2:
{ dede:loop table="cdb_threads" sort="dateline" if="fid='3' and typeid='51'" row="10" }
<a href="/a/bbs/viewthread dot php?tid=[field:tid /]" target="_blank">
·[field:subject function="cn_substr(' at me',30)" /]</a> <br>
{ /dede:loop }
4 论坛版块名称调用方法:
{ dede:loop table="cdb_forums" sort="displayorder" row="16" col="4" }
<a href="/bbs/viewthread dot php?fid=[field:fid /]">·[field:name function="cn_substr(' at me',30)" /]
</a>
{ /dede:loop }
注:这个还有点问题,它会将论坛分区、版块都调出来。
附:dedecms的LOOP 标记规则
功能说明:用于调用任意表的数据,一般用于调用论坛贴子之类的操作
适用范围:所有模板
(1) 基本语法
{ dede:loop table=' sort='' row='' if='' }
底层模板
{ dede:loop }
(2) 属性
[1] table 表示查询的数据表
[2] sort 用于排序的字段
[3] row 返回结果的条数
[4] if 查询条件
(3)底层模板变量
这个标记的底层模板变量即是被查询表的所有字段
===========================================
论坛最新主题:<br/>
{dede:loop table="cdb_threads" if="fid=9 and displayorder!=-1" sort="tid" row="10"}
<a href="/dz/viewthread.php?tid=[field:tid /]">
·[field:subject function="cn_substr('@me',30)" /]([field:lastpost function="date('m-d H:M','@me')" /])
</a>
<br/>
{/dede:loop}
复制代码 代码如下:
//获得任意表的内容
function GetTable($tablename="",$row=6,$sort="",$ifcase="",$InnerText=""){
$InnerText = trim($InnerText);
if($tablename==""||$InnerText=="") return "";
$row = AttDef($row,6);
if($sort!="") $sort = " order by $sort desc ";
if($ifcase!="") $ifcase=" where $ifcase ";
$revalue="";
$this->dsql->SetQuery("Select * From $tablename $ifcase $sort limit 0,$row");
$this->dsql->Execute();
$ctp = new DedeTagParse();
$ctp->SetNameSpace("field","[","]");
$ctp->LoadSource($InnerText);
while($row = $this->dsql->GetArray())
{
foreach($ctp->CTags as $tagid=>$ctag){
if(!empty($row[$ctag->GetName()]))
{ $ctp->Assign($tagid,$row[$ctag->GetName()]); }
}
$revalue .= $ctp->GetResult();
}
return $revalue;
}
从上面的代码看出来if里的参数实际就是判断语句,大家可以参考表进行任意输出了
1 论坛最新主题调用方法:
代码
{ dede:loop table="cdb_threads" sort="tid" row="10" }
<a href="/dz/viewthread.php?tid=[field:tid /]">
·[field:subject function="cn_substr(' at me',30)" /]([field:lastpost function="date('m-d H:M','@me')" /])
</a>
<br/>
{ /dede:loop }
2 论坛指定版块调用方法:
{ dede:loop table="cdb_threads" if="fid=1 or fid=2 and displayorder!=-1" sort="tid" row="6" }
<a href="/bbs/viewthread dot php?tid=[field:tid /]" target="_blank">
·[field:subject function="cn_substr(' at me',50)" /]
</a>
<br/>
{ /dede:loop }
3 论坛置顶版块调用方法2:
{ dede:loop table="cdb_threads" sort="dateline" if="fid='3' and typeid='51'" row="10" }
<a href="/a/bbs/viewthread dot php?tid=[field:tid /]" target="_blank">
·[field:subject function="cn_substr(' at me',30)" /]</a> <br>
{ /dede:loop }
4 论坛版块名称调用方法:
{ dede:loop table="cdb_forums" sort="displayorder" row="16" col="4" }
<a href="/bbs/viewthread dot php?fid=[field:fid /]">·[field:name function="cn_substr(' at me',30)" /]
</a>
{ /dede:loop }
注:这个还有点问题,它会将论坛分区、版块都调出来。
附:dedecms的LOOP 标记规则
功能说明:用于调用任意表的数据,一般用于调用论坛贴子之类的操作
适用范围:所有模板
(1) 基本语法
{ dede:loop table=' sort='' row='' if='' }
底层模板
{ dede:loop }
(2) 属性
[1] table 表示查询的数据表
[2] sort 用于排序的字段
[3] row 返回结果的条数
[4] if 查询条件
(3)底层模板变量
这个标记的底层模板变量即是被查询表的所有字段
===========================================
论坛最新主题:<br/>
{dede:loop table="cdb_threads" if="fid=9 and displayorder!=-1" sort="tid" row="10"}
<a href="/dz/viewthread.php?tid=[field:tid /]">
·[field:subject function="cn_substr('@me',30)" /]([field:lastpost function="date('m-d H:M','@me')" /])
</a>
<br/>
{/dede:loop}